diff --git a/InvenTree/locale/cs/LC_MESSAGES/django.po b/InvenTree/locale/cs/LC_MESSAGES/django.po
index 8d3e247659..240584de6a 100644
--- a/InvenTree/locale/cs/LC_MESSAGES/django.po
+++ b/InvenTree/locale/cs/LC_MESSAGES/django.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-06-05 14:26+0000\n"
-"PO-Revision-Date: 2022-06-05 14:34\n"
+"POT-Creation-Date: 2022-06-06 22:59+0000\n"
+"PO-Revision-Date: 2022-06-07 14:35\n"
"Last-Translator: \n"
"Language-Team: Czech\n"
"Language: cs_CZ\n"
@@ -17,7 +17,7 @@ msgstr ""
"X-Crowdin-File: /[inventree.InvenTree] l10/InvenTree/locale/en/LC_MESSAGES/django.po\n"
"X-Crowdin-File-ID: 154\n"
-#: InvenTree/api.py:46
+#: InvenTree/api.py:49
msgid "API endpoint not found"
msgstr "API endpoint nebyl nalezen"
@@ -29,275 +29,273 @@ msgstr ""
msgid "Enter date"
msgstr "Zadejte datum"
-#: InvenTree/forms.py:117 templates/account/email_confirm.html:20
-#: templates/js/translated/forms.js:630
-msgid "Confirm"
-msgstr "Potvrdit"
-
-#: InvenTree/forms.py:134
+#: InvenTree/forms.py:117
msgid "Confirm delete"
msgstr "Potvrdit odstranění"
-#: InvenTree/forms.py:135
+#: InvenTree/forms.py:118
msgid "Confirm item deletion"
msgstr "Potvrdit odstranění položky"
-#: InvenTree/forms.py:167
+#: InvenTree/forms.py:150
msgid "Enter password"
msgstr "Zadejte heslo"
-#: InvenTree/forms.py:168
+#: InvenTree/forms.py:151
msgid "Enter new password"
msgstr "Zadejte nové heslo"
-#: InvenTree/forms.py:175
+#: InvenTree/forms.py:158
msgid "Confirm password"
msgstr "Potvrďte heslo"
-#: InvenTree/forms.py:176
+#: InvenTree/forms.py:159
msgid "Confirm new password"
msgstr "Potvrďte nové heslo"
-#: InvenTree/forms.py:213
-msgid "Select Category"
-msgstr "Vyberte kategorii"
-
-#: InvenTree/forms.py:234
+#: InvenTree/forms.py:184
msgid "Email (again)"
msgstr "Email (znovu)"
-#: InvenTree/forms.py:238
+#: InvenTree/forms.py:188
msgid "Email address confirmation"
msgstr "Potvrzení emailové adresy"
-#: InvenTree/forms.py:259
+#: InvenTree/forms.py:209
msgid "You must type the same email each time."
msgstr "Pokaždé musíte zadat stejný email."
-#: InvenTree/helpers.py:402
+#: InvenTree/helpers.py:404
#, python-brace-format
msgid "Duplicate serial: {sn}"
msgstr "Duplicitní výrobní číslo: {sn}"
-#: InvenTree/helpers.py:409 order/models.py:365 order/models.py:517
+#: InvenTree/helpers.py:411 order/models.py:370 order/models.py:522
msgid "Invalid quantity provided"
msgstr "Vyplněno neplatné množství"
-#: InvenTree/helpers.py:412
+#: InvenTree/helpers.py:414
msgid "Empty serial number string"
msgstr "Nevyplněné výrobní číslo"
-#: InvenTree/helpers.py:444
+#: InvenTree/helpers.py:446
#, python-brace-format
msgid "Invalid group range: {g}"
msgstr ""
-#: InvenTree/helpers.py:447
+#: InvenTree/helpers.py:449
#, python-brace-format
msgid "Invalid group: {g}"
msgstr "Neplatná skupina: {g}"
-#: InvenTree/helpers.py:475
+#: InvenTree/helpers.py:477
#, python-brace-format
msgid "Invalid group sequence: {g}"
msgstr ""
-#: InvenTree/helpers.py:483
+#: InvenTree/helpers.py:485
#, python-brace-format
msgid "Invalid/no group {group}"
msgstr "Neplatná/nevyplněná skupina {group}"
-#: InvenTree/helpers.py:489
+#: InvenTree/helpers.py:491
msgid "No serial numbers found"
msgstr "Nenalezena žádná výrobní čísla"
-#: InvenTree/helpers.py:493
+#: InvenTree/helpers.py:495
#, python-brace-format
msgid "Number of unique serial numbers ({s}) must match quantity ({q})"
msgstr ""
-#: InvenTree/models.py:174
+#: InvenTree/models.py:178
msgid "Missing file"
msgstr "Chybějící soubor"
-#: InvenTree/models.py:175
+#: InvenTree/models.py:179
msgid "Missing external link"
msgstr "Chybějící externí odkaz"
-#: InvenTree/models.py:187 stock/models.py:2087
-#: templates/js/translated/attachment.js:101
-#: templates/js/translated/attachment.js:198
+#: InvenTree/models.py:191 stock/models.py:2091
+#: templates/js/translated/attachment.js:103
+#: templates/js/translated/attachment.js:194
msgid "Attachment"
msgstr "Příloha"
-#: InvenTree/models.py:188
+#: InvenTree/models.py:192
msgid "Select file to attach"
msgstr "Vyberte soubor k přiložení"
-#: InvenTree/models.py:194 company/models.py:123 company/models.py:272
-#: company/models.py:506 order/models.py:135 order/models.py:1235
+#: InvenTree/models.py:198 company/models.py:123 company/models.py:272
+#: company/models.py:506 order/models.py:136 order/models.py:1251
#: part/models.py:795
#: report/templates/report/inventree_build_order_base.html:165
-#: templates/js/translated/company.js:655
-#: templates/js/translated/company.js:946 templates/js/translated/order.js:2676
-#: templates/js/translated/part.js:1441
+#: templates/js/translated/company.js:640
+#: templates/js/translated/company.js:931 templates/js/translated/order.js:2676
+#: templates/js/translated/part.js:1485
msgid "Link"
msgstr "Odkaz"
-#: InvenTree/models.py:195 build/models.py:320 part/models.py:796
+#: InvenTree/models.py:199 build/models.py:320 part/models.py:796
#: stock/models.py:642
msgid "Link to external URL"
msgstr "Odkaz na externí URL"
-#: InvenTree/models.py:198 templates/js/translated/attachment.js:102
-#: templates/js/translated/attachment.js:242
+#: InvenTree/models.py:202 templates/js/translated/attachment.js:104
+#: templates/js/translated/attachment.js:238
msgid "Comment"
msgstr "Komentář"
-#: InvenTree/models.py:198
+#: InvenTree/models.py:202
msgid "File comment"
msgstr "Komentář k souboru"
-#: InvenTree/models.py:204 InvenTree/models.py:205 common/models.py:1499
-#: common/models.py:1500 common/models.py:1728 common/models.py:1729
-#: common/models.py:1991 common/models.py:1992 part/models.py:2153
-#: part/models.py:2173 plugin/models.py:238 plugin/models.py:239
+#: InvenTree/models.py:208 InvenTree/models.py:209 common/models.py:1506
+#: common/models.py:1507 common/models.py:1735 common/models.py:1736
+#: common/models.py:1998 common/models.py:1999 part/models.py:2141
+#: part/models.py:2161 plugin/models.py:238 plugin/models.py:239
#: report/templates/report/inventree_test_report_base.html:96
-#: templates/js/translated/stock.js:2513
+#: templates/js/translated/stock.js:2523
msgid "User"
msgstr "Uživatel"
-#: InvenTree/models.py:208
+#: InvenTree/models.py:212
msgid "upload date"
msgstr "datum přidání"
-#: InvenTree/models.py:230
+#: InvenTree/models.py:234
msgid "Filename must not be empty"
msgstr "Název souboru nesmí být prázdný"
-#: InvenTree/models.py:253
+#: InvenTree/models.py:257
msgid "Invalid attachment directory"
msgstr "Neplatný adresář přílohy"
-#: InvenTree/models.py:263
+#: InvenTree/models.py:267
#, python-brace-format
msgid "Filename contains illegal character '{c}'"
msgstr "Název souboru obsahuje nepovolený znak '{c}'"
-#: InvenTree/models.py:266
+#: InvenTree/models.py:270
msgid "Filename missing extension"
msgstr "Chybějící přípona souboru"
-#: InvenTree/models.py:273
+#: InvenTree/models.py:277
msgid "Attachment with this filename already exists"
msgstr "Příloha s tímto názvem již existuje"
-#: InvenTree/models.py:280
+#: InvenTree/models.py:284
msgid "Error renaming file"
msgstr "Chyba při přejmenování souboru"
-#: InvenTree/models.py:314
+#: InvenTree/models.py:318
msgid "Invalid choice"
msgstr "Neplatný výběr"
-#: InvenTree/models.py:333 InvenTree/models.py:334 common/models.py:1714
+#: InvenTree/models.py:337 InvenTree/models.py:338 common/models.py:1721
#: company/models.py:354 label/models.py:101 part/models.py:739
-#: part/models.py:2331 plugin/models.py:93 report/models.py:151
+#: part/models.py:2319 plugin/models.py:93 report/models.py:151
#: templates/InvenTree/notifications/notifications.html:84
#: templates/InvenTree/settings/mixins/urls.html:13
#: templates/InvenTree/settings/plugin.html:49
#: templates/InvenTree/settings/plugin.html:132
#: templates/InvenTree/settings/plugin_settings.html:23
#: templates/InvenTree/settings/settings.html:346
-#: templates/js/translated/company.js:539
-#: templates/js/translated/company.js:757 templates/js/translated/part.js:615
-#: templates/js/translated/part.js:767 templates/js/translated/part.js:1736
-#: templates/js/translated/stock.js:2283
+#: templates/js/translated/company.js:530
+#: templates/js/translated/company.js:742 templates/js/translated/part.js:659
+#: templates/js/translated/part.js:811 templates/js/translated/part.js:1832
+#: templates/js/translated/stock.js:2293
msgid "Name"
msgstr "Název"
-#: InvenTree/models.py:340 build/models.py:197
+#: InvenTree/models.py:344 build/models.py:197
#: build/templates/build/detail.html:24 company/models.py:278
#: company/models.py:512 company/templates/company/company_base.html:71
#: company/templates/company/manufacturer_part.html:75
#: company/templates/company/supplier_part.html:73 label/models.py:108
-#: order/models.py:133 part/models.py:762 part/templates/part/category.html:74
-#: part/templates/part/part_base.html:167
-#: part/templates/part/set_category.html:14 report/models.py:164
+#: order/models.py:134 part/models.py:762 part/templates/part/category.html:74
+#: part/templates/part/part_base.html:167 report/models.py:164
#: report/models.py:509 report/models.py:550
#: report/templates/report/inventree_build_order_base.html:118
#: stock/templates/stock/location.html:103
#: templates/InvenTree/settings/plugin_settings.html:33
-#: templates/js/translated/bom.js:553 templates/js/translated/bom.js:851
-#: templates/js/translated/build.js:2476 templates/js/translated/company.js:401
-#: templates/js/translated/company.js:666
-#: templates/js/translated/company.js:957 templates/js/translated/order.js:1656
+#: templates/js/translated/bom.js:553 templates/js/translated/bom.js:845
+#: templates/js/translated/build.js:2476 templates/js/translated/company.js:395
+#: templates/js/translated/company.js:651
+#: templates/js/translated/company.js:942 templates/js/translated/order.js:1656
#: templates/js/translated/order.js:1888 templates/js/translated/order.js:2476
-#: templates/js/translated/part.js:674 templates/js/translated/part.js:1082
-#: templates/js/translated/part.js:1355 templates/js/translated/part.js:1755
-#: templates/js/translated/part.js:1824 templates/js/translated/stock.js:1676
-#: templates/js/translated/stock.js:2295 templates/js/translated/stock.js:2350
+#: templates/js/translated/part.js:718 templates/js/translated/part.js:1126
+#: templates/js/translated/part.js:1399 templates/js/translated/part.js:1851
+#: templates/js/translated/part.js:1920 templates/js/translated/stock.js:1686
+#: templates/js/translated/stock.js:2305 templates/js/translated/stock.js:2360
msgid "Description"
msgstr "Popis"
-#: InvenTree/models.py:341
+#: InvenTree/models.py:345
msgid "Description (optional)"
msgstr "Popis (volitelně)"
-#: InvenTree/models.py:349
+#: InvenTree/models.py:353
msgid "parent"
msgstr "nadřazený"
-#: InvenTree/serializers.py:52 part/models.py:2652
+#: InvenTree/models.py:466
+msgid "Server Error"
+msgstr ""
+
+#: InvenTree/models.py:467
+msgid "An error has been logged by the server."
+msgstr ""
+
+#: InvenTree/serializers.py:52 part/models.py:2640
msgid "Must be a valid number"
msgstr "Musí být platné číslo"
-#: InvenTree/serializers.py:271
+#: InvenTree/serializers.py:263
msgid "Filename"
msgstr "Název souboru"
-#: InvenTree/serializers.py:306
+#: InvenTree/serializers.py:298
msgid "Invalid value"
msgstr "Neplatná hodnota"
-#: InvenTree/serializers.py:328
+#: InvenTree/serializers.py:320
msgid "Data File"
msgstr "Datový soubor"
-#: InvenTree/serializers.py:329
+#: InvenTree/serializers.py:321
msgid "Select data file for upload"
msgstr "Vyberte datový soubor k nahrání"
-#: InvenTree/serializers.py:350
+#: InvenTree/serializers.py:342
msgid "Unsupported file type"
msgstr "Nepodporovaný typ souboru"
-#: InvenTree/serializers.py:356
+#: InvenTree/serializers.py:348
msgid "File is too large"
msgstr "Soubor je příliš velký"
-#: InvenTree/serializers.py:377
+#: InvenTree/serializers.py:369
msgid "No columns found in file"
msgstr "V souboru nebyly nalezeny žádné sloupce"
-#: InvenTree/serializers.py:380
+#: InvenTree/serializers.py:372
msgid "No data rows found in file"
msgstr "V souboru nebyly nalezeny žádné řádky s daty"
-#: InvenTree/serializers.py:503
+#: InvenTree/serializers.py:495
msgid "No data rows provided"
msgstr "Nebyly zadány žádné řádky s daty"
-#: InvenTree/serializers.py:506
+#: InvenTree/serializers.py:498
msgid "No data columns supplied"
msgstr "Nebyly zadány žádné sloupce s daty"
-#: InvenTree/serializers.py:583
+#: InvenTree/serializers.py:575
#, python-brace-format
msgid "Missing required column: '{name}'"
msgstr "Chybí povinný sloupec: '{name}'"
-#: InvenTree/serializers.py:592
+#: InvenTree/serializers.py:584
#, python-brace-format
msgid "Duplicate column: '{col}'"
msgstr "Duplicitní sloupec: '{col}'"
@@ -440,7 +438,7 @@ msgstr "Ztraceno"
msgid "Returned"
msgstr "Vráceno"
-#: InvenTree/status_codes.py:141 order/models.py:1114
+#: InvenTree/status_codes.py:141 order/models.py:1130
#: templates/js/translated/order.js:3264 templates/js/translated/order.js:3607
msgid "Shipped"
msgstr "Odesláno"
@@ -525,7 +523,7 @@ msgstr ""
msgid "Split child item"
msgstr ""
-#: InvenTree/status_codes.py:281 templates/js/translated/stock.js:2020
+#: InvenTree/status_codes.py:281 templates/js/translated/stock.js:2030
msgid "Merged stock items"
msgstr ""
@@ -597,27 +595,27 @@ msgstr ""
msgid "Invalid value for overage"
msgstr ""
-#: InvenTree/views.py:522
+#: InvenTree/views.py:521
msgid "Delete Item"
msgstr ""
-#: InvenTree/views.py:571
+#: InvenTree/views.py:570
msgid "Check box to confirm item deletion"
msgstr "Zaškrtněte políčko pro potvrzení odstranění položky"
-#: InvenTree/views.py:586 templates/InvenTree/settings/user.html:22
+#: InvenTree/views.py:585 templates/InvenTree/settings/user.html:22
msgid "Edit User Information"
msgstr "Upravit informace o uživateli"
-#: InvenTree/views.py:598 templates/InvenTree/settings/user.html:19
+#: InvenTree/views.py:597 templates/InvenTree/settings/user.html:19
msgid "Set Password"
msgstr "Nastavit heslo"
-#: InvenTree/views.py:618
+#: InvenTree/views.py:617
msgid "Password fields must match"
msgstr "Hesla se musí shodovat"
-#: InvenTree/views.py:842 templates/navbar.html:152
+#: InvenTree/views.py:807 templates/navbar.html:152
msgid "System Information"
msgstr "Informace o systému"
@@ -628,6 +626,7 @@ msgstr ""
#: build/models.py:131 build/templates/build/build_base.html:9
#: build/templates/build/build_base.html:27
#: report/templates/report/inventree_build_order_base.html:106
+#: templates/email/overdue_build_order.html:15
#: templates/js/translated/build.js:727
msgid "Build Order"
msgstr ""
@@ -646,12 +645,12 @@ msgstr ""
msgid "Build Order Reference"
msgstr ""
-#: build/models.py:189 order/models.py:288 order/models.py:638
-#: order/models.py:916 part/models.py:2570
+#: build/models.py:189 order/models.py:293 order/models.py:654
+#: order/models.py:932 part/models.py:2558
#: part/templates/part/upload_bom.html:54
#: report/templates/report/inventree_po_report.html:91
#: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:688 templates/js/translated/bom.js:858
+#: templates/js/translated/bom.js:690 templates/js/translated/bom.js:852
#: templates/js/translated/build.js:1777 templates/js/translated/order.js:1919
#: templates/js/translated/order.js:2120 templates/js/translated/order.js:3448
#: templates/js/translated/order.js:3959
@@ -673,13 +672,12 @@ msgstr ""
#: build/models.py:215 build/templates/build/build_base.html:77
#: build/templates/build/detail.html:29 company/models.py:647
-#: order/models.py:1012 order/models.py:1103 part/models.py:336
-#: part/models.py:2099 part/models.py:2114 part/models.py:2133
-#: part/models.py:2151 part/models.py:2250 part/models.py:2370
-#: part/models.py:2460 part/models.py:2545 part/models.py:2821
-#: part/serializers.py:793 part/templates/part/part_app_base.html:8
+#: order/models.py:1028 order/models.py:1119 part/models.py:336
+#: part/models.py:2087 part/models.py:2102 part/models.py:2121
+#: part/models.py:2139 part/models.py:2238 part/models.py:2358
+#: part/models.py:2448 part/models.py:2533 part/models.py:2809
+#: part/serializers.py:795 part/templates/part/part_app_base.html:8
#: part/templates/part/part_pricing.html:12
-#: part/templates/part/set_category.html:13
#: part/templates/part/upload_bom.html:52
#: report/templates/report/inventree_build_order_base.html:110
#: report/templates/report/inventree_po_report.html:89
@@ -687,22 +685,23 @@ msgstr ""
#: templates/InvenTree/search.html:80
#: templates/email/build_order_required_stock.html:17
#: templates/email/low_stock_notification.html:16
+#: templates/email/overdue_build_order.html:16
#: templates/js/translated/barcode.js:435 templates/js/translated/bom.js:552
-#: templates/js/translated/bom.js:687 templates/js/translated/bom.js:805
+#: templates/js/translated/bom.js:689 templates/js/translated/bom.js:799
#: templates/js/translated/build.js:1153 templates/js/translated/build.js:1647
#: templates/js/translated/build.js:2083 templates/js/translated/build.js:2481
-#: templates/js/translated/company.js:252
-#: templates/js/translated/company.js:486
-#: templates/js/translated/company.js:607
-#: templates/js/translated/company.js:866 templates/js/translated/order.js:100
+#: templates/js/translated/company.js:253
+#: templates/js/translated/company.js:482
+#: templates/js/translated/company.js:592
+#: templates/js/translated/company.js:851 templates/js/translated/order.js:100
#: templates/js/translated/order.js:883 templates/js/translated/order.js:1315
#: templates/js/translated/order.js:1873 templates/js/translated/order.js:2819
#: templates/js/translated/order.js:3217 templates/js/translated/order.js:3432
-#: templates/js/translated/part.js:1067 templates/js/translated/part.js:1137
-#: templates/js/translated/part.js:1333 templates/js/translated/stock.js:531
-#: templates/js/translated/stock.js:696 templates/js/translated/stock.js:903
-#: templates/js/translated/stock.js:1633 templates/js/translated/stock.js:2376
-#: templates/js/translated/stock.js:2571 templates/js/translated/stock.js:2705
+#: templates/js/translated/part.js:1111 templates/js/translated/part.js:1181
+#: templates/js/translated/part.js:1377 templates/js/translated/stock.js:530
+#: templates/js/translated/stock.js:695 templates/js/translated/stock.js:902
+#: templates/js/translated/stock.js:1643 templates/js/translated/stock.js:2386
+#: templates/js/translated/stock.js:2581 templates/js/translated/stock.js:2715
msgid "Part"
msgstr ""
@@ -768,12 +767,12 @@ msgstr ""
msgid "Batch code for this build output"
msgstr ""
-#: build/models.py:282 order/models.py:137 part/models.py:932
+#: build/models.py:282 order/models.py:138 part/models.py:932
#: part/templates/part/part_base.html:305 templates/js/translated/order.js:2489
msgid "Creation Date"
msgstr ""
-#: build/models.py:286 order/models.py:660
+#: build/models.py:286 order/models.py:676
msgid "Target completion date"
msgstr ""
@@ -781,7 +780,7 @@ msgstr ""
msgid "Target date for build completion. Build will be overdue after this date."
msgstr ""
-#: build/models.py:290 order/models.py:331
+#: build/models.py:290 order/models.py:336
#: templates/js/translated/build.js:2558
msgid "Completion Date"
msgstr ""
@@ -799,7 +798,7 @@ msgid "User who issued this build order"
msgstr ""
#: build/models.py:313 build/templates/build/build_base.html:190
-#: build/templates/build/detail.html:115 order/models.py:151
+#: build/templates/build/detail.html:115 order/models.py:152
#: order/templates/order/order_base.html:176
#: order/templates/order/sales_order_base.html:183 part/models.py:936
#: report/templates/report/inventree_build_order_base.html:159
@@ -822,20 +821,20 @@ msgstr ""
#: build/models.py:324 build/serializers.py:374
#: build/templates/build/sidebar.html:21 company/models.py:134
#: company/models.py:519 company/templates/company/sidebar.html:25
-#: order/models.py:155 order/models.py:918 order/models.py:1213
+#: order/models.py:156 order/models.py:934 order/models.py:1229
#: order/templates/order/po_sidebar.html:11
#: order/templates/order/so_sidebar.html:17 part/models.py:921
#: part/templates/part/part_sidebar.html:59
#: report/templates/report/inventree_build_order_base.html:173
-#: stock/models.py:713 stock/models.py:1985 stock/models.py:2093
+#: stock/models.py:713 stock/models.py:1989 stock/models.py:2097
#: stock/serializers.py:315 stock/serializers.py:444 stock/serializers.py:486
-#: stock/serializers.py:772 stock/serializers.py:871 stock/serializers.py:1003
+#: stock/serializers.py:759 stock/serializers.py:858 stock/serializers.py:990
#: stock/templates/stock/stock_sidebar.html:25
-#: templates/js/translated/barcode.js:100 templates/js/translated/bom.js:1044
-#: templates/js/translated/company.js:962 templates/js/translated/order.js:2040
+#: templates/js/translated/barcode.js:100 templates/js/translated/bom.js:1038
+#: templates/js/translated/company.js:947 templates/js/translated/order.js:2040
#: templates/js/translated/order.js:2191 templates/js/translated/order.js:2687
#: templates/js/translated/order.js:3632 templates/js/translated/order.js:4030
-#: templates/js/translated/stock.js:1307 templates/js/translated/stock.js:1916
+#: templates/js/translated/stock.js:1317 templates/js/translated/stock.js:1926
msgid "Notes"
msgstr ""
@@ -855,44 +854,44 @@ msgstr ""
msgid "Build output does not match Build Order"
msgstr ""
-#: build/models.py:1108
+#: build/models.py:1111
msgid "Build item must specify a build output, as master part is marked as trackable"
msgstr ""
-#: build/models.py:1117
+#: build/models.py:1120
#, python-brace-format
msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})"
msgstr ""
-#: build/models.py:1127
+#: build/models.py:1130
msgid "Stock item is over-allocated"
msgstr ""
-#: build/models.py:1133 order/models.py:1372
+#: build/models.py:1136 order/models.py:1388
msgid "Allocation quantity must be greater than zero"
msgstr ""
-#: build/models.py:1139
+#: build/models.py:1142
msgid "Quantity must be 1 for serialized stock"
msgstr ""
-#: build/models.py:1196
+#: build/models.py:1199
msgid "Selected stock item not found in BOM"
msgstr ""
-#: build/models.py:1265 stock/templates/stock/item_base.html:177
+#: build/models.py:1268 stock/templates/stock/item_base.html:177
#: templates/InvenTree/search.html:137 templates/js/translated/build.js:2454
#: templates/navbar.html:38
msgid "Build"
msgstr ""
-#: build/models.py:1266
+#: build/models.py:1269
msgid "Build to allocate parts"
msgstr ""
-#: build/models.py:1282 build/serializers.py:603 order/serializers.py:994
-#: order/serializers.py:1015 stock/serializers.py:382 stock/serializers.py:703
-#: stock/serializers.py:829 stock/templates/stock/item_base.html:10
+#: build/models.py:1285 build/serializers.py:603 order/serializers.py:996
+#: order/serializers.py:1017 stock/serializers.py:382 stock/serializers.py:690
+#: stock/serializers.py:816 stock/templates/stock/item_base.html:10
#: stock/templates/stock/item_base.html:23
#: stock/templates/stock/item_base.html:199
#: templates/js/translated/build.js:738 templates/js/translated/build.js:743
@@ -900,22 +899,22 @@ msgstr ""
#: templates/js/translated/order.js:101 templates/js/translated/order.js:2820
#: templates/js/translated/order.js:3124 templates/js/translated/order.js:3129
#: templates/js/translated/order.js:3224 templates/js/translated/order.js:3314
-#: templates/js/translated/stock.js:532 templates/js/translated/stock.js:697
-#: templates/js/translated/stock.js:2449
+#: templates/js/translated/stock.js:531 templates/js/translated/stock.js:696
+#: templates/js/translated/stock.js:2459
msgid "Stock Item"
msgstr ""
-#: build/models.py:1283
+#: build/models.py:1286
msgid "Source stock item"
msgstr ""
-#: build/models.py:1295 build/serializers.py:183
+#: build/models.py:1298 build/serializers.py:183
#: build/templates/build/build_base.html:82
-#: build/templates/build/detail.html:34 common/models.py:1536
+#: build/templates/build/detail.html:34 common/models.py:1543
#: company/forms.py:36 company/templates/company/supplier_part.html:258
-#: order/models.py:909 order/models.py:1412 order/serializers.py:1134
-#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:68
-#: part/forms.py:83 part/forms.py:98 part/models.py:2561
+#: order/models.py:925 order/models.py:1428 order/serializers.py:1136
+#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:59
+#: part/forms.py:74 part/forms.py:89 part/models.py:2549
#: part/templates/part/detail.html:935 part/templates/part/detail.html:1021
#: part/templates/part/part_pricing.html:16
#: part/templates/part/upload_bom.html:53
@@ -926,8 +925,8 @@ msgstr ""
#: report/templates/report/inventree_test_report_base.html:139
#: stock/serializers.py:279 stock/templates/stock/item_base.html:292
#: stock/templates/stock/item_base.html:300
-#: templates/js/translated/barcode.js:437 templates/js/translated/bom.js:689
-#: templates/js/translated/bom.js:866 templates/js/translated/build.js:422
+#: templates/js/translated/barcode.js:437 templates/js/translated/bom.js:691
+#: templates/js/translated/bom.js:860 templates/js/translated/build.js:422
#: templates/js/translated/build.js:574 templates/js/translated/build.js:765
#: templates/js/translated/build.js:1175 templates/js/translated/build.js:1673
#: templates/js/translated/build.js:2086
@@ -937,23 +936,23 @@ msgstr ""
#: templates/js/translated/order.js:2821 templates/js/translated/order.js:3143
#: templates/js/translated/order.js:3231 templates/js/translated/order.js:3320
#: templates/js/translated/order.js:3454 templates/js/translated/order.js:3965
-#: templates/js/translated/part.js:967 templates/js/translated/part.js:1969
-#: templates/js/translated/part.js:2200 templates/js/translated/part.js:2234
-#: templates/js/translated/part.js:2312 templates/js/translated/stock.js:403
-#: templates/js/translated/stock.js:557 templates/js/translated/stock.js:727
-#: templates/js/translated/stock.js:2498 templates/js/translated/stock.js:2583
+#: templates/js/translated/part.js:1011 templates/js/translated/part.js:2065
+#: templates/js/translated/part.js:2296 templates/js/translated/part.js:2330
+#: templates/js/translated/part.js:2408 templates/js/translated/stock.js:402
+#: templates/js/translated/stock.js:556 templates/js/translated/stock.js:726
+#: templates/js/translated/stock.js:2508 templates/js/translated/stock.js:2593
msgid "Quantity"
msgstr ""
-#: build/models.py:1296
+#: build/models.py:1299
msgid "Stock quantity to allocate to build"
msgstr ""
-#: build/models.py:1304
+#: build/models.py:1307
msgid "Install into"
msgstr ""
-#: build/models.py:1305
+#: build/models.py:1308
msgid "Destination stock item"
msgstr ""
@@ -982,9 +981,9 @@ msgstr ""
msgid "Enter quantity for build output"
msgstr ""
-#: build/serializers.py:198 build/serializers.py:623 order/models.py:363
-#: order/serializers.py:280 order/serializers.py:435 part/serializers.py:512
-#: part/serializers.py:956 stock/models.py:470 stock/models.py:1239
+#: build/serializers.py:198 build/serializers.py:623 order/models.py:368
+#: order/serializers.py:280 order/serializers.py:435 part/serializers.py:514
+#: part/serializers.py:958 stock/models.py:470 stock/models.py:1239
#: stock/serializers.py:288
msgid "Quantity must be greater than zero"
msgstr ""
@@ -997,9 +996,9 @@ msgstr ""
msgid "Integer quantity required, as the bill of materials contains trackable parts"
msgstr ""
-#: build/serializers.py:222 order/serializers.py:448 order/serializers.py:1138
+#: build/serializers.py:222 order/serializers.py:448 order/serializers.py:1140
#: stock/serializers.py:297 templates/js/translated/order.js:1186
-#: templates/js/translated/stock.js:238 templates/js/translated/stock.js:404
+#: templates/js/translated/stock.js:237 templates/js/translated/stock.js:403
msgid "Serial Numbers"
msgstr ""
@@ -1015,7 +1014,7 @@ msgstr ""
msgid "Automatically allocate required items with matching serial numbers"
msgstr ""
-#: build/serializers.py:268 stock/api.py:552
+#: build/serializers.py:268 stock/api.py:553
msgid "The following serial numbers already exist"
msgstr ""
@@ -1025,16 +1024,16 @@ msgstr ""
#: build/serializers.py:356 order/serializers.py:421 order/serializers.py:525
#: stock/serializers.py:308 stock/serializers.py:439 stock/serializers.py:481
-#: stock/serializers.py:864 stock/serializers.py:1097
+#: stock/serializers.py:851 stock/serializers.py:1084
#: stock/templates/stock/item_base.html:390
#: templates/js/translated/barcode.js:436
#: templates/js/translated/barcode.js:618 templates/js/translated/build.js:750
#: templates/js/translated/build.js:1685 templates/js/translated/order.js:1213
#: templates/js/translated/order.js:3136 templates/js/translated/order.js:3239
#: templates/js/translated/order.js:3247 templates/js/translated/order.js:3328
-#: templates/js/translated/part.js:180 templates/js/translated/stock.js:533
-#: templates/js/translated/stock.js:698 templates/js/translated/stock.js:905
-#: templates/js/translated/stock.js:1787 templates/js/translated/stock.js:2390
+#: templates/js/translated/part.js:180 templates/js/translated/stock.js:532
+#: templates/js/translated/stock.js:697 templates/js/translated/stock.js:904
+#: templates/js/translated/stock.js:1797 templates/js/translated/stock.js:2400
msgid "Location"
msgstr ""
@@ -1043,12 +1042,12 @@ msgid "Location for completed build outputs"
msgstr ""
#: build/serializers.py:363 build/templates/build/build_base.html:142
-#: build/templates/build/detail.html:62 order/models.py:654
+#: build/templates/build/detail.html:62 order/models.py:670
#: order/serializers.py:458 stock/templates/stock/item_base.html:423
#: templates/js/translated/barcode.js:182 templates/js/translated/build.js:2510
#: templates/js/translated/order.js:1320 templates/js/translated/order.js:1660
-#: templates/js/translated/order.js:2481 templates/js/translated/stock.js:1762
-#: templates/js/translated/stock.js:2467 templates/js/translated/stock.js:2599
+#: templates/js/translated/order.js:2481 templates/js/translated/stock.js:1772
+#: templates/js/translated/stock.js:2477 templates/js/translated/stock.js:2609
msgid "Status"
msgstr ""
@@ -1108,8 +1107,8 @@ msgstr ""
msgid "No build outputs have been created for this build order"
msgstr ""
-#: build/serializers.py:535 build/serializers.py:580 part/models.py:2679
-#: part/models.py:2813
+#: build/serializers.py:535 build/serializers.py:580 part/models.py:2667
+#: part/models.py:2801
msgid "BOM Item"
msgstr ""
@@ -1125,11 +1124,11 @@ msgstr ""
msgid "bom_item.part must point to the same part as the build order"
msgstr ""
-#: build/serializers.py:609 stock/serializers.py:716
+#: build/serializers.py:609 stock/serializers.py:703
msgid "Item must be in stock"
msgstr ""
-#: build/serializers.py:667 order/serializers.py:1052
+#: build/serializers.py:667 order/serializers.py:1054
#, python-brace-format
msgid "Available quantity ({q}) exceeded"
msgstr ""
@@ -1146,7 +1145,7 @@ msgstr ""
msgid "This stock item has already been allocated to this build output"
msgstr ""
-#: build/serializers.py:708 order/serializers.py:1298
+#: build/serializers.py:708 order/serializers.py:1300
msgid "Allocation items must be provided"
msgstr ""
@@ -1178,10 +1177,19 @@ msgstr ""
msgid "Allow allocation of substitute parts"
msgstr ""
-#: build/tasks.py:96
+#: build/tasks.py:100
msgid "Stock required for build order"
msgstr ""
+#: build/tasks.py:118
+msgid "Overdue Build Order"
+msgstr ""
+
+#: build/tasks.py:123
+#, python-brace-format
+msgid "Build order {bo} is now overdue"
+msgstr ""
+
#: build/templates/build/build_base.html:39
#: order/templates/order/order_base.html:28
#: order/templates/order/sales_order_base.html:38
@@ -1244,13 +1252,13 @@ msgid "Stock has not been fully allocated to this Build Order"
msgstr ""
#: build/templates/build/build_base.html:151
-#: build/templates/build/detail.html:131 order/models.py:922
+#: build/templates/build/detail.html:131 order/models.py:938
#: order/templates/order/order_base.html:162
#: order/templates/order/sales_order_base.html:164
#: report/templates/report/inventree_build_order_base.html:126
#: templates/js/translated/build.js:2550 templates/js/translated/order.js:1677
#: templates/js/translated/order.js:1987 templates/js/translated/order.js:2497
-#: templates/js/translated/order.js:3517 templates/js/translated/part.js:971
+#: templates/js/translated/order.js:3517 templates/js/translated/part.js:1015
msgid "Target Date"
msgstr ""
@@ -1277,13 +1285,14 @@ msgid "Completed"
msgstr ""
#: build/templates/build/build_base.html:176
-#: build/templates/build/detail.html:94 order/models.py:1100
-#: order/models.py:1185 order/models.py:1320
+#: build/templates/build/detail.html:94 order/models.py:1116
+#: order/models.py:1201 order/models.py:1336
#: order/templates/order/sales_order_base.html:9
#: order/templates/order/sales_order_base.html:28
#: report/templates/report/inventree_build_order_base.html:136
#: report/templates/report/inventree_so_report.html:77
#: stock/templates/stock/item_base.html:370
+#: templates/email/overdue_sales_order.html:15
#: templates/js/translated/order.js:2436
msgid "Sales Order"
msgstr ""
@@ -1319,7 +1328,7 @@ msgstr ""
msgid "Stock can be taken from any available location."
msgstr ""
-#: build/templates/build/detail.html:49 order/models.py:1034
+#: build/templates/build/detail.html:49 order/models.py:1050
#: templates/js/translated/order.js:1321 templates/js/translated/order.js:2029
msgid "Destination"
msgstr ""
@@ -1336,8 +1345,8 @@ msgstr ""
#: stock/templates/stock/item_base.html:170
#: templates/js/translated/build.js:1179
#: templates/js/translated/model_renderers.js:112
-#: templates/js/translated/stock.js:971 templates/js/translated/stock.js:1776
-#: templates/js/translated/stock.js:2606
+#: templates/js/translated/stock.js:970 templates/js/translated/stock.js:1786
+#: templates/js/translated/stock.js:2616
#: templates/js/translated/table_filters.js:151
#: templates/js/translated/table_filters.js:242
msgid "Batch"
@@ -1716,7 +1725,7 @@ msgstr ""
msgid "Copy category parameter templates when creating a part"
msgstr ""
-#: common/models.py:820 part/models.py:2372 report/models.py:157
+#: common/models.py:820 part/models.py:2360 report/models.py:157
#: templates/js/translated/table_filters.js:38
#: templates/js/translated/table_filters.js:444
msgid "Template"
@@ -1726,7 +1735,7 @@ msgstr ""
msgid "Parts are templates by default"
msgstr ""
-#: common/models.py:827 part/models.py:884 templates/js/translated/bom.js:1390
+#: common/models.py:827 part/models.py:884 templates/js/translated/bom.js:1384
#: templates/js/translated/table_filters.js:168
#: templates/js/translated/table_filters.js:460
msgid "Assembly"
@@ -1880,7 +1889,7 @@ msgid "Default page size for PDF reports"
msgstr ""
#: common/models.py:968
-msgid "Test Reports"
+msgid "Enable Test Reports"
msgstr ""
#: common/models.py:969
@@ -1888,568 +1897,576 @@ msgid "Enable generation of test reports"
msgstr ""
#: common/models.py:975
-msgid "Batch Code Template"
+msgid "Attach Test Reports"
msgstr ""
#: common/models.py:976
-msgid "Template for generating default batch codes for stock items"
-msgstr ""
-
-#: common/models.py:981
-msgid "Stock Expiry"
+msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item"
msgstr ""
#: common/models.py:982
-msgid "Enable stock expiry functionality"
+msgid "Batch Code Template"
+msgstr ""
+
+#: common/models.py:983
+msgid "Template for generating default batch codes for stock items"
msgstr ""
#: common/models.py:988
-msgid "Sell Expired Stock"
+msgid "Stock Expiry"
msgstr ""
#: common/models.py:989
-msgid "Allow sale of expired stock"
+msgid "Enable stock expiry functionality"
msgstr ""
#: common/models.py:995
-msgid "Stock Stale Time"
+msgid "Sell Expired Stock"
msgstr ""
#: common/models.py:996
-msgid "Number of days stock items are considered stale before expiring"
+msgid "Allow sale of expired stock"
msgstr ""
-#: common/models.py:998
-msgid "days"
+#: common/models.py:1002
+msgid "Stock Stale Time"
msgstr ""
#: common/models.py:1003
-msgid "Build Expired Stock"
+msgid "Number of days stock items are considered stale before expiring"
msgstr ""
-#: common/models.py:1004
-msgid "Allow building with expired stock"
+#: common/models.py:1005
+msgid "days"
msgstr ""
#: common/models.py:1010
-msgid "Stock Ownership Control"
+msgid "Build Expired Stock"
msgstr ""
#: common/models.py:1011
-msgid "Enable ownership control over stock locations and items"
+msgid "Allow building with expired stock"
msgstr ""
#: common/models.py:1017
-msgid "Build Order Reference Prefix"
+msgid "Stock Ownership Control"
msgstr ""
#: common/models.py:1018
-msgid "Prefix value for build order reference"
-msgstr ""
-
-#: common/models.py:1023
-msgid "Build Order Reference Regex"
+msgid "Enable ownership control over stock locations and items"
msgstr ""
#: common/models.py:1024
+msgid "Build Order Reference Prefix"
+msgstr ""
+
+#: common/models.py:1025
+msgid "Prefix value for build order reference"
+msgstr ""
+
+#: common/models.py:1030
+msgid "Build Order Reference Regex"
+msgstr ""
+
+#: common/models.py:1031
msgid "Regular expression pattern for matching build order reference"
msgstr ""
-#: common/models.py:1028
+#: common/models.py:1035
msgid "Sales Order Reference Prefix"
msgstr ""
-#: common/models.py:1029
+#: common/models.py:1036
msgid "Prefix value for sales order reference"
msgstr ""
-#: common/models.py:1034
+#: common/models.py:1041
msgid "Sales Order Default Shipment"
msgstr ""
-#: common/models.py:1035
+#: common/models.py:1042
msgid "Enable creation of default shipment with sales orders"
msgstr ""
-#: common/models.py:1041
+#: common/models.py:1048
msgid "Purchase Order Reference Prefix"
msgstr ""
-#: common/models.py:1042
+#: common/models.py:1049
msgid "Prefix value for purchase order reference"
msgstr ""
-#: common/models.py:1048
+#: common/models.py:1055
msgid "Enable password forgot"
msgstr ""
-#: common/models.py:1049
+#: common/models.py:1056
msgid "Enable password forgot function on the login pages"
msgstr ""
-#: common/models.py:1055
+#: common/models.py:1062
msgid "Enable registration"
msgstr ""
-#: common/models.py:1056
+#: common/models.py:1063
msgid "Enable self-registration for users on the login pages"
msgstr ""
-#: common/models.py:1062
+#: common/models.py:1069
msgid "Enable SSO"
msgstr ""
-#: common/models.py:1063
+#: common/models.py:1070
msgid "Enable SSO on the login pages"
msgstr ""
-#: common/models.py:1069
+#: common/models.py:1076
msgid "Email required"
msgstr ""
-#: common/models.py:1070
+#: common/models.py:1077
msgid "Require user to supply mail on signup"
msgstr ""
-#: common/models.py:1076
+#: common/models.py:1083
msgid "Auto-fill SSO users"
msgstr ""
-#: common/models.py:1077
+#: common/models.py:1084
msgid "Automatically fill out user-details from SSO account-data"
msgstr ""
-#: common/models.py:1083
+#: common/models.py:1090
msgid "Mail twice"
msgstr ""
-#: common/models.py:1084
+#: common/models.py:1091
msgid "On signup ask users twice for their mail"
msgstr ""
-#: common/models.py:1090
+#: common/models.py:1097
msgid "Password twice"
msgstr ""
-#: common/models.py:1091
+#: common/models.py:1098
msgid "On signup ask users twice for their password"
msgstr ""
-#: common/models.py:1097
+#: common/models.py:1104
msgid "Group on signup"
msgstr ""
-#: common/models.py:1098
+#: common/models.py:1105
msgid "Group to which new users are assigned on registration"
msgstr ""
-#: common/models.py:1104
+#: common/models.py:1111
msgid "Enforce MFA"
msgstr ""
-#: common/models.py:1105
+#: common/models.py:1112
msgid "Users must use multifactor security."
msgstr ""
-#: common/models.py:1111
+#: common/models.py:1118
msgid "Check plugins on startup"
msgstr ""
-#: common/models.py:1112
+#: common/models.py:1119
msgid "Check that all plugins are installed on startup - enable in container enviroments"
msgstr ""
-#: common/models.py:1120
+#: common/models.py:1127
msgid "Enable URL integration"
msgstr ""
-#: common/models.py:1121
+#: common/models.py:1128
msgid "Enable plugins to add URL routes"
msgstr ""
-#: common/models.py:1128
+#: common/models.py:1135
msgid "Enable navigation integration"
msgstr ""
-#: common/models.py:1129
+#: common/models.py:1136
msgid "Enable plugins to integrate into navigation"
msgstr ""
-#: common/models.py:1136
+#: common/models.py:1143
msgid "Enable app integration"
msgstr ""
-#: common/models.py:1137
+#: common/models.py:1144
msgid "Enable plugins to add apps"
msgstr ""
-#: common/models.py:1144
+#: common/models.py:1151
msgid "Enable schedule integration"
msgstr ""
-#: common/models.py:1145
+#: common/models.py:1152
msgid "Enable plugins to run scheduled tasks"
msgstr ""
-#: common/models.py:1152
+#: common/models.py:1159
msgid "Enable event integration"
msgstr ""
-#: common/models.py:1153
+#: common/models.py:1160
msgid "Enable plugins to respond to internal events"
msgstr ""
-#: common/models.py:1170 common/models.py:1492
+#: common/models.py:1177 common/models.py:1499
msgid "Settings key (must be unique - case insensitive"
msgstr ""
-#: common/models.py:1192
+#: common/models.py:1199
msgid "Show subscribed parts"
msgstr ""
-#: common/models.py:1193
+#: common/models.py:1200
msgid "Show subscribed parts on the homepage"
msgstr ""
-#: common/models.py:1199
+#: common/models.py:1206
msgid "Show subscribed categories"
msgstr ""
-#: common/models.py:1200
+#: common/models.py:1207
msgid "Show subscribed part categories on the homepage"
msgstr ""
-#: common/models.py:1206
+#: common/models.py:1213
msgid "Show latest parts"
msgstr ""
-#: common/models.py:1207
+#: common/models.py:1214
msgid "Show latest parts on the homepage"
msgstr ""
-#: common/models.py:1213
+#: common/models.py:1220
msgid "Recent Part Count"
msgstr ""
-#: common/models.py:1214
+#: common/models.py:1221
msgid "Number of recent parts to display on index page"
msgstr ""
-#: common/models.py:1220
+#: common/models.py:1227
msgid "Show unvalidated BOMs"
msgstr ""
-#: common/models.py:1221
+#: common/models.py:1228
msgid "Show BOMs that await validation on the homepage"
msgstr ""
-#: common/models.py:1227
+#: common/models.py:1234
msgid "Show recent stock changes"
msgstr ""
-#: common/models.py:1228
+#: common/models.py:1235
msgid "Show recently changed stock items on the homepage"
msgstr ""
-#: common/models.py:1234
+#: common/models.py:1241
msgid "Recent Stock Count"
msgstr ""
-#: common/models.py:1235
+#: common/models.py:1242
msgid "Number of recent stock items to display on index page"
msgstr ""
-#: common/models.py:1241
+#: common/models.py:1248
msgid "Show low stock"
msgstr ""
-#: common/models.py:1242
+#: common/models.py:1249
msgid "Show low stock items on the homepage"
msgstr ""
-#: common/models.py:1248
+#: common/models.py:1255
msgid "Show depleted stock"
msgstr ""
-#: common/models.py:1249
+#: common/models.py:1256
msgid "Show depleted stock items on the homepage"
msgstr ""
-#: common/models.py:1255
+#: common/models.py:1262
msgid "Show needed stock"
msgstr ""
-#: common/models.py:1256
+#: common/models.py:1263
msgid "Show stock items needed for builds on the homepage"
msgstr ""
-#: common/models.py:1262
+#: common/models.py:1269
msgid "Show expired stock"
msgstr ""
-#: common/models.py:1263
+#: common/models.py:1270
msgid "Show expired stock items on the homepage"
msgstr ""
-#: common/models.py:1269
+#: common/models.py:1276
msgid "Show stale stock"
msgstr ""
-#: common/models.py:1270
+#: common/models.py:1277
msgid "Show stale stock items on the homepage"
msgstr ""
-#: common/models.py:1276
+#: common/models.py:1283
msgid "Show pending builds"
msgstr ""
-#: common/models.py:1277
+#: common/models.py:1284
msgid "Show pending builds on the homepage"
msgstr ""
-#: common/models.py:1283
+#: common/models.py:1290
msgid "Show overdue builds"
msgstr ""
-#: common/models.py:1284
+#: common/models.py:1291
msgid "Show overdue builds on the homepage"
msgstr ""
-#: common/models.py:1290
+#: common/models.py:1297
msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:1291
+#: common/models.py:1298
msgid "Show outstanding POs on the homepage"
msgstr ""
-#: common/models.py:1297
+#: common/models.py:1304
msgid "Show overdue POs"
msgstr ""
-#: common/models.py:1298
+#: common/models.py:1305
msgid "Show overdue POs on the homepage"
msgstr ""
-#: common/models.py:1304
+#: common/models.py:1311
msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:1305
+#: common/models.py:1312
msgid "Show outstanding SOs on the homepage"
msgstr ""
-#: common/models.py:1311
+#: common/models.py:1318
msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:1312
+#: common/models.py:1319
msgid "Show overdue SOs on the homepage"
msgstr ""
-#: common/models.py:1317
+#: common/models.py:1324
msgid "Enable label printing"
msgstr ""
-#: common/models.py:1318
+#: common/models.py:1325
msgid "Enable label printing from the web interface"
msgstr ""
-#: common/models.py:1324
+#: common/models.py:1331
msgid "Inline label display"
msgstr ""
-#: common/models.py:1325
+#: common/models.py:1332
msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:1331
+#: common/models.py:1338
msgid "Inline report display"
msgstr ""
-#: common/models.py:1332
+#: common/models.py:1339
msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:1338
+#: common/models.py:1345
msgid "Search Parts"
msgstr ""
-#: common/models.py:1339
+#: common/models.py:1346
msgid "Display parts in search preview window"
msgstr ""
-#: common/models.py:1345
+#: common/models.py:1352
msgid "Seach Supplier Parts"
msgstr ""
-#: common/models.py:1346
+#: common/models.py:1353
msgid "Display supplier parts in search preview window"
msgstr ""
-#: common/models.py:1352
+#: common/models.py:1359
msgid "Search Manufacturer Parts"
msgstr ""
-#: common/models.py:1353
+#: common/models.py:1360
msgid "Display manufacturer parts in search preview window"
msgstr ""
-#: common/models.py:1359
+#: common/models.py:1366
msgid "Hide Inactive Parts"
msgstr ""
-#: common/models.py:1360
+#: common/models.py:1367
msgid "Excluded inactive parts from search preview window"
msgstr ""
-#: common/models.py:1366
+#: common/models.py:1373
msgid "Search Categories"
msgstr ""
-#: common/models.py:1367
+#: common/models.py:1374
msgid "Display part categories in search preview window"
msgstr ""
-#: common/models.py:1373
+#: common/models.py:1380
msgid "Search Stock"
msgstr ""
-#: common/models.py:1374
+#: common/models.py:1381
msgid "Display stock items in search preview window"
msgstr ""
-#: common/models.py:1380
+#: common/models.py:1387
msgid "Hide Unavailable Stock Items"
msgstr ""
-#: common/models.py:1381
+#: common/models.py:1388
msgid "Exclude stock items which are not available from the search preview window"
msgstr ""
-#: common/models.py:1387
+#: common/models.py:1394
msgid "Search Locations"
msgstr ""
-#: common/models.py:1388
+#: common/models.py:1395
msgid "Display stock locations in search preview window"
msgstr ""
-#: common/models.py:1394
+#: common/models.py:1401
msgid "Search Companies"
msgstr ""
-#: common/models.py:1395
+#: common/models.py:1402
msgid "Display companies in search preview window"
msgstr ""
-#: common/models.py:1401
+#: common/models.py:1408
msgid "Search Purchase Orders"
msgstr ""
-#: common/models.py:1402
+#: common/models.py:1409
msgid "Display purchase orders in search preview window"
msgstr ""
-#: common/models.py:1408
+#: common/models.py:1415
msgid "Exclude Inactive Purchase Orders"
msgstr ""
-#: common/models.py:1409
+#: common/models.py:1416
msgid "Exclude inactive purchase orders from search preview window"
msgstr ""
-#: common/models.py:1415
+#: common/models.py:1422
msgid "Search Sales Orders"
msgstr ""
-#: common/models.py:1416
+#: common/models.py:1423
msgid "Display sales orders in search preview window"
msgstr ""
-#: common/models.py:1422
+#: common/models.py:1429
msgid "Exclude Inactive Sales Orders"
msgstr ""
-#: common/models.py:1423
+#: common/models.py:1430
msgid "Exclude inactive sales orders from search preview window"
msgstr ""
-#: common/models.py:1429
+#: common/models.py:1436
msgid "Search Preview Results"
msgstr ""
-#: common/models.py:1430
+#: common/models.py:1437
msgid "Number of results to show in each section of the search preview window"
msgstr ""
-#: common/models.py:1436
+#: common/models.py:1443
msgid "Show Quantity in Forms"
msgstr ""
-#: common/models.py:1437
+#: common/models.py:1444
msgid "Display available part quantity in some forms"
msgstr ""
-#: common/models.py:1443
+#: common/models.py:1450
msgid "Escape Key Closes Forms"
msgstr ""
-#: common/models.py:1444
+#: common/models.py:1451
msgid "Use the escape key to close modal forms"
msgstr ""
-#: common/models.py:1450
+#: common/models.py:1457
msgid "Fixed Navbar"
msgstr ""
-#: common/models.py:1451
+#: common/models.py:1458
msgid "The navbar position is fixed to the top of the screen"
msgstr ""
-#: common/models.py:1457
+#: common/models.py:1464
msgid "Date Format"
msgstr ""
-#: common/models.py:1458
+#: common/models.py:1465
msgid "Preferred format for displaying dates"
msgstr ""
-#: common/models.py:1472 part/templates/part/detail.html:39
+#: common/models.py:1479 part/templates/part/detail.html:39
msgid "Part Scheduling"
msgstr ""
-#: common/models.py:1473
+#: common/models.py:1480
msgid "Display part scheduling information"
msgstr ""
-#: common/models.py:1537 company/forms.py:37
+#: common/models.py:1544 company/forms.py:37
msgid "Price break quantity"
msgstr ""
-#: common/models.py:1544 company/serializers.py:288
-#: company/templates/company/supplier_part.html:263 order/models.py:949
-#: templates/js/translated/part.js:998 templates/js/translated/part.js:1974
+#: common/models.py:1551 company/serializers.py:290
+#: company/templates/company/supplier_part.html:263 order/models.py:965
+#: templates/js/translated/part.js:1042 templates/js/translated/part.js:2070
msgid "Price"
msgstr ""
-#: common/models.py:1545
+#: common/models.py:1552
msgid "Unit price at specified quantity"
msgstr ""
-#: common/models.py:1705 common/models.py:1883
+#: common/models.py:1712 common/models.py:1890
msgid "Endpoint"
msgstr ""
-#: common/models.py:1706
+#: common/models.py:1713
msgid "Endpoint at which this webhook is received"
msgstr ""
-#: common/models.py:1715
+#: common/models.py:1722
msgid "Name for this webhook"
msgstr ""
-#: common/models.py:1720 part/models.py:911 plugin/models.py:99
+#: common/models.py:1727 part/models.py:911 plugin/models.py:99
#: templates/js/translated/table_filters.js:34
#: templates/js/translated/table_filters.js:96
#: templates/js/translated/table_filters.js:308
@@ -2457,79 +2474,89 @@ msgstr ""
msgid "Active"
msgstr ""
-#: common/models.py:1721
+#: common/models.py:1728
msgid "Is this webhook active"
msgstr ""
-#: common/models.py:1735
+#: common/models.py:1742
msgid "Token"
msgstr ""
-#: common/models.py:1736
+#: common/models.py:1743
msgid "Token for access"
msgstr ""
-#: common/models.py:1743
+#: common/models.py:1750
msgid "Secret"
msgstr ""
-#: common/models.py:1744
+#: common/models.py:1751
msgid "Shared secret for HMAC"
msgstr ""
-#: common/models.py:1850
+#: common/models.py:1857
msgid "Message ID"
msgstr ""
-#: common/models.py:1851
+#: common/models.py:1858
msgid "Unique identifier for this message"
msgstr ""
-#: common/models.py:1859
+#: common/models.py:1866
msgid "Host"
msgstr ""
-#: common/models.py:1860
+#: common/models.py:1867
msgid "Host from which this message was received"
msgstr ""
-#: common/models.py:1867
+#: common/models.py:1874
msgid "Header"
msgstr ""
-#: common/models.py:1868
+#: common/models.py:1875
msgid "Header of this message"
msgstr ""
-#: common/models.py:1874
+#: common/models.py:1881
msgid "Body"
msgstr ""
-#: common/models.py:1875
+#: common/models.py:1882
msgid "Body of this message"
msgstr ""
-#: common/models.py:1884
+#: common/models.py:1891
msgid "Endpoint on which this message was received"
msgstr ""
-#: common/models.py:1889
+#: common/models.py:1896
msgid "Worked on"
msgstr ""
-#: common/models.py:1890
+#: common/models.py:1897
msgid "Was the work on this message finished?"
msgstr ""
+#: common/notifications.py:292
+#, python-brace-format
+msgid "New {verbose_name}"
+msgstr ""
+
+#: common/notifications.py:294
+#, python-brace-format
+msgid "A new {verbose_name} has been created and ,assigned to you"
+msgstr ""
+
#: common/views.py:87 order/templates/order/purchase_order_detail.html:23
-#: order/views.py:102 part/views.py:191
+#: order/views.py:102 part/views.py:116
#: templates/patterns/wizard/upload.html:37
msgid "Upload File"
msgstr ""
#: common/views.py:88 order/views.py:103
#: part/templates/part/import_wizard/ajax_match_fields.html:45
-#: part/views.py:192 templates/patterns/wizard/match_fields.html:51
+#: part/views.py:117 templates/patterns/wizard/match_fields.html:51
msgid "Match Fields"
msgstr ""
@@ -2545,19 +2572,19 @@ msgstr ""
msgid "Parts imported"
msgstr ""
-#: common/views.py:507 order/templates/order/order_wizard/match_parts.html:19
+#: common/views.py:511 order/templates/order/order_wizard/match_parts.html:19
#: part/templates/part/import_wizard/match_references.html:19
#: templates/patterns/wizard/match_fields.html:26
#: templates/patterns/wizard/upload.html:35
msgid "Previous Step"
msgstr ""
-#: company/forms.py:16 part/forms.py:21
+#: company/forms.py:16 part/forms.py:18
#: templates/InvenTree/settings/mixins/urls.html:14
msgid "URL"
msgstr ""
-#: company/forms.py:17 part/forms.py:22
+#: company/forms.py:17 part/forms.py:19
msgid "Image URL"
msgstr ""
@@ -2571,7 +2598,7 @@ msgstr ""
#: company/models.py:104 company/templates/company/company_base.html:100
#: templates/InvenTree/settings/plugin_settings.html:55
-#: templates/js/translated/company.js:405
+#: templates/js/translated/company.js:399
msgid "Website"
msgstr ""
@@ -2644,9 +2671,9 @@ msgstr ""
msgid "Does this company manufacture parts?"
msgstr ""
-#: company/models.py:144 company/serializers.py:294
-#: company/templates/company/company_base.html:106 part/serializers.py:137
-#: part/serializers.py:168 stock/serializers.py:162
+#: company/models.py:144 company/serializers.py:296
+#: company/templates/company/company_base.html:106 part/serializers.py:139
+#: part/serializers.py:170 stock/serializers.py:162
msgid "Currency"
msgstr ""
@@ -2667,10 +2694,10 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:90
#: company/templates/company/supplier_part.html:103
#: stock/templates/stock/item_base.html:212
-#: templates/js/translated/company.js:389
-#: templates/js/translated/company.js:488
-#: templates/js/translated/company.js:632
-#: templates/js/translated/company.js:917 templates/js/translated/part.js:235
+#: templates/js/translated/company.js:383
+#: templates/js/translated/company.js:484
+#: templates/js/translated/company.js:617
+#: templates/js/translated/company.js:902 templates/js/translated/part.js:235
#: templates/js/translated/table_filters.js:411
msgid "Manufacturer"
msgstr ""
@@ -2681,11 +2708,11 @@ msgstr ""
#: company/models.py:266 company/templates/company/manufacturer_part.html:101
#: company/templates/company/supplier_part.html:111
-#: templates/js/translated/company.js:255
-#: templates/js/translated/company.js:487
-#: templates/js/translated/company.js:648
-#: templates/js/translated/company.js:935 templates/js/translated/order.js:1907
-#: templates/js/translated/part.js:246 templates/js/translated/part.js:956
+#: templates/js/translated/company.js:256
+#: templates/js/translated/company.js:483
+#: templates/js/translated/company.js:633
+#: templates/js/translated/company.js:920 templates/js/translated/order.js:1907
+#: templates/js/translated/part.js:246 templates/js/translated/part.js:1000
msgid "MPN"
msgstr ""
@@ -2714,9 +2741,9 @@ msgstr ""
#: company/models.py:361
#: report/templates/report/inventree_test_report_base.html:95
-#: stock/models.py:2080 templates/js/translated/company.js:540
-#: templates/js/translated/company.js:763 templates/js/translated/part.js:776
-#: templates/js/translated/stock.js:1294
+#: stock/models.py:2084 templates/js/translated/company.js:531
+#: templates/js/translated/company.js:748 templates/js/translated/part.js:820
+#: templates/js/translated/stock.js:1304
msgid "Value"
msgstr ""
@@ -2724,10 +2751,10 @@ msgstr ""
msgid "Parameter value"
msgstr ""
-#: company/models.py:368 part/models.py:878 part/models.py:2339
+#: company/models.py:368 part/models.py:878 part/models.py:2327
#: part/templates/part/part_base.html:280
#: templates/InvenTree/settings/settings.html:351
-#: templates/js/translated/company.js:769 templates/js/translated/part.js:782
+#: templates/js/translated/company.js:754 templates/js/translated/part.js:826
msgid "Units"
msgstr ""
@@ -2740,13 +2767,14 @@ msgid "Linked manufacturer part must reference the same base part"
msgstr ""
#: company/models.py:487 company/templates/company/company_base.html:81
-#: company/templates/company/supplier_part.html:87 order/models.py:303
+#: company/templates/company/supplier_part.html:87 order/models.py:308
#: order/templates/order/order_base.html:112 part/bom.py:237 part/bom.py:265
#: stock/templates/stock/item_base.html:229
-#: templates/js/translated/company.js:254
-#: templates/js/translated/company.js:393
-#: templates/js/translated/company.js:891 templates/js/translated/order.js:1643
-#: templates/js/translated/part.js:216 templates/js/translated/part.js:924
+#: templates/email/overdue_purchase_order.html:16
+#: templates/js/translated/company.js:255
+#: templates/js/translated/company.js:387
+#: templates/js/translated/company.js:876 templates/js/translated/order.js:1643
+#: templates/js/translated/part.js:216 templates/js/translated/part.js:968
#: templates/js/translated/table_filters.js:415
msgid "Supplier"
msgstr ""
@@ -2756,9 +2784,9 @@ msgid "Select supplier"
msgstr ""
#: company/models.py:493 company/templates/company/supplier_part.html:97
-#: part/bom.py:238 part/bom.py:266 templates/js/translated/company.js:253
+#: part/bom.py:238 part/bom.py:266 templates/js/translated/company.js:254
#: templates/js/translated/order.js:1894 templates/js/translated/part.js:227
-#: templates/js/translated/part.js:942
+#: templates/js/translated/part.js:986
msgid "SKU"
msgstr ""
@@ -2779,23 +2807,23 @@ msgid "Supplier part description"
msgstr ""
#: company/models.py:518 company/templates/company/supplier_part.html:125
-#: part/models.py:2573 part/templates/part/upload_bom.html:59
+#: part/models.py:2561 part/templates/part/upload_bom.html:59
#: report/templates/report/inventree_po_report.html:92
#: report/templates/report/inventree_so_report.html:93 stock/serializers.py:387
msgid "Note"
msgstr ""
-#: company/models.py:522 part/models.py:1688
+#: company/models.py:522 part/models.py:1683
msgid "base cost"
msgstr ""
-#: company/models.py:522 part/models.py:1688
+#: company/models.py:522 part/models.py:1683
msgid "Minimum charge (e.g. stocking fee)"
msgstr ""
#: company/models.py:524 company/templates/company/supplier_part.html:118
#: stock/models.py:608 stock/templates/stock/item_base.html:245
-#: templates/js/translated/company.js:967 templates/js/translated/stock.js:1912
+#: templates/js/translated/company.js:952 templates/js/translated/stock.js:1922
msgid "Packaging"
msgstr ""
@@ -2803,7 +2831,7 @@ msgstr ""
msgid "Part packaging"
msgstr ""
-#: company/models.py:526 part/models.py:1690
+#: company/models.py:526 part/models.py:1685
msgid "multiple"
msgstr ""
@@ -2825,7 +2853,7 @@ msgstr ""
#: company/templates/company/company_base.html:8
#: company/templates/company/company_base.html:12
-#: templates/InvenTree/search.html:177 templates/js/translated/company.js:378
+#: templates/InvenTree/search.html:177 templates/js/translated/company.js:372
msgid "Company"
msgstr ""
@@ -2843,7 +2871,7 @@ msgid "Edit company information"
msgstr ""
#: company/templates/company/company_base.html:34
-#: templates/js/translated/company.js:321
+#: templates/js/translated/company.js:315
msgid "Edit Company"
msgstr ""
@@ -2866,12 +2894,13 @@ msgstr ""
msgid "Download image from URL"
msgstr ""
-#: company/templates/company/company_base.html:86 order/models.py:649
+#: company/templates/company/company_base.html:86 order/models.py:665
#: order/templates/order/sales_order_base.html:116 stock/models.py:627
-#: stock/models.py:628 stock/serializers.py:758
+#: stock/models.py:628 stock/serializers.py:745
#: stock/templates/stock/item_base.html:401
-#: templates/js/translated/company.js:385 templates/js/translated/order.js:2458
-#: templates/js/translated/stock.js:2431
+#: templates/email/overdue_sales_order.html:16
+#: templates/js/translated/company.js:379 templates/js/translated/order.js:2458
+#: templates/js/translated/stock.js:2441
#: templates/js/translated/table_filters.js:419
msgid "Customer"
msgstr ""
@@ -2999,7 +3028,7 @@ msgid "Supplier List"
msgstr ""
#: company/templates/company/manufacturer_part.html:15 company/views.py:45
-#: part/templates/part/prices.html:170 templates/InvenTree/search.html:179
+#: part/templates/part/prices.html:172 templates/InvenTree/search.html:179
#: templates/navbar.html:49
msgid "Manufacturers"
msgstr ""
@@ -3012,12 +3041,12 @@ msgid "Order part"
msgstr ""
#: company/templates/company/manufacturer_part.html:39
-#: templates/js/translated/company.js:680
+#: templates/js/translated/company.js:665
msgid "Edit manufacturer part"
msgstr ""
#: company/templates/company/manufacturer_part.html:43
-#: templates/js/translated/company.js:681
+#: templates/js/translated/company.js:666
msgid "Delete manufacturer part"
msgstr ""
@@ -3032,7 +3061,7 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:119
#: company/templates/company/supplier_part.html:15 company/views.py:39
-#: part/templates/part/part_sidebar.html:35 part/templates/part/prices.html:166
+#: part/templates/part/part_sidebar.html:35 part/templates/part/prices.html:168
#: templates/InvenTree/search.html:189 templates/navbar.html:48
msgid "Suppliers"
msgstr ""
@@ -3092,18 +3121,18 @@ msgstr ""
#: company/templates/company/supplier_part.html:7
#: company/templates/company/supplier_part.html:24 stock/models.py:592
#: stock/templates/stock/item_base.html:238
-#: templates/js/translated/company.js:907 templates/js/translated/order.js:884
-#: templates/js/translated/stock.js:1869
+#: templates/js/translated/company.js:892 templates/js/translated/order.js:884
+#: templates/js/translated/stock.js:1879
msgid "Supplier Part"
msgstr ""
#: company/templates/company/supplier_part.html:38
-#: templates/js/translated/company.js:980
+#: templates/js/translated/company.js:965
msgid "Edit supplier part"
msgstr ""
#: company/templates/company/supplier_part.html:42
-#: templates/js/translated/company.js:981
+#: templates/js/translated/company.js:966
msgid "Delete supplier part"
msgstr ""
@@ -3123,7 +3152,7 @@ msgstr ""
#: company/templates/company/supplier_part.html:148
#: part/templates/part/detail.html:24 stock/templates/stock/location.html:177
-#: templates/js/translated/stock.js:380
+#: templates/js/translated/stock.js:379
msgid "New Stock Item"
msgstr ""
@@ -3144,7 +3173,7 @@ msgstr ""
#: company/templates/company/supplier_part.html:191
#: company/templates/company/supplier_part.html:305
-#: part/templates/part/prices.html:274 templates/js/translated/part.js:2046
+#: part/templates/part/prices.html:276 templates/js/translated/part.js:2142
msgid "Add Price Break"
msgstr ""
@@ -3153,12 +3182,12 @@ msgid "No price break information found"
msgstr ""
#: company/templates/company/supplier_part.html:231
-#: templates/js/translated/part.js:2056
+#: templates/js/translated/part.js:2152
msgid "Delete Price Break"
msgstr ""
#: company/templates/company/supplier_part.html:245
-#: templates/js/translated/part.js:2070
+#: templates/js/translated/part.js:2166
msgid "Edit Price Break"
msgstr ""
@@ -3180,9 +3209,9 @@ msgstr ""
#: stock/templates/stock/stock_app_base.html:10
#: templates/InvenTree/search.html:151
#: templates/InvenTree/settings/sidebar.html:43
-#: templates/js/translated/bom.js:554 templates/js/translated/part.js:678
-#: templates/js/translated/part.js:1226 templates/js/translated/part.js:1387
-#: templates/js/translated/stock.js:904 templates/js/translated/stock.js:1687
+#: templates/js/translated/bom.js:554 templates/js/translated/part.js:722
+#: templates/js/translated/part.js:1270 templates/js/translated/part.js:1431
+#: templates/js/translated/stock.js:903 templates/js/translated/stock.js:1697
#: templates/navbar.html:31
msgid "Stock"
msgstr ""
@@ -3209,7 +3238,7 @@ msgstr ""
#: stock/templates/stock/location.html:173
#: stock/templates/stock/location_sidebar.html:7
#: templates/InvenTree/search.html:153 templates/js/translated/search.js:223
-#: templates/js/translated/stock.js:2307 users/models.py:39
+#: templates/js/translated/stock.js:2317 users/models.py:39
msgid "Stock Items"
msgstr ""
@@ -3238,20 +3267,20 @@ msgstr ""
msgid "New Company"
msgstr ""
-#: company/views.py:112 part/views.py:576
+#: company/views.py:112 part/views.py:501
msgid "Download Image"
msgstr ""
-#: company/views.py:139 part/views.py:606
+#: company/views.py:139 part/views.py:531
msgid "Image size exceeds maximum allowable size for download"
msgstr ""
-#: company/views.py:146 part/views.py:613
+#: company/views.py:146 part/views.py:538
#, python-brace-format
msgid "Invalid response: {code}"
msgstr ""
-#: company/views.py:155 part/views.py:622
+#: company/views.py:155 part/views.py:547
msgid "Supplied URL is not a valid image file"
msgstr ""
@@ -3320,313 +3349,314 @@ msgstr ""
msgid "Part query filters (comma-separated value of key=value pairs)"
msgstr ""
-#: order/models.py:133
+#: order/models.py:134
msgid "Order description"
msgstr ""
-#: order/models.py:135 order/models.py:1236
+#: order/models.py:136 order/models.py:1252
msgid "Link to external page"
msgstr ""
-#: order/models.py:143
+#: order/models.py:144
msgid "Created By"
msgstr ""
-#: order/models.py:150
+#: order/models.py:151
msgid "User or group responsible for this order"
msgstr ""
-#: order/models.py:155
+#: order/models.py:156
msgid "Order notes"
msgstr ""
-#: order/models.py:289 order/models.py:639
+#: order/models.py:294 order/models.py:655
msgid "Order reference"
msgstr ""
-#: order/models.py:294 order/models.py:654
+#: order/models.py:299 order/models.py:670
msgid "Purchase order status"
msgstr ""
-#: order/models.py:304
+#: order/models.py:309
msgid "Company from which the items are being ordered"
msgstr ""
-#: order/models.py:307 order/templates/order/order_base.html:124
+#: order/models.py:312 order/templates/order/order_base.html:124
#: templates/js/translated/order.js:1652
msgid "Supplier Reference"
msgstr ""
-#: order/models.py:307
+#: order/models.py:312
msgid "Supplier order reference code"
msgstr ""
-#: order/models.py:314
+#: order/models.py:319
msgid "received by"
msgstr ""
-#: order/models.py:319
+#: order/models.py:324
msgid "Issue Date"
msgstr ""
-#: order/models.py:320
+#: order/models.py:325
msgid "Date order was issued"
msgstr ""
-#: order/models.py:325
+#: order/models.py:330
msgid "Target Delivery Date"
msgstr ""
-#: order/models.py:326
+#: order/models.py:331
msgid "Expected date for order delivery. Order will be overdue after this date."
msgstr ""
-#: order/models.py:332
+#: order/models.py:337
msgid "Date order was completed"
msgstr ""
-#: order/models.py:368
+#: order/models.py:373
msgid "Part supplier must match PO supplier"
msgstr ""
-#: order/models.py:512
+#: order/models.py:517
msgid "Quantity must be a positive number"
msgstr ""
-#: order/models.py:650
+#: order/models.py:666
msgid "Company to which the items are being sold"
msgstr ""
-#: order/models.py:656
+#: order/models.py:672
msgid "Customer Reference "
msgstr ""
-#: order/models.py:656
+#: order/models.py:672
msgid "Customer order reference code"
msgstr ""
-#: order/models.py:661
+#: order/models.py:677
msgid "Target date for order completion. Order will be overdue after this date."
msgstr ""
-#: order/models.py:664 order/models.py:1190
+#: order/models.py:680 order/models.py:1206
#: templates/js/translated/order.js:2505 templates/js/translated/order.js:2656
msgid "Shipment Date"
msgstr ""
-#: order/models.py:671
+#: order/models.py:687
msgid "shipped by"
msgstr ""
-#: order/models.py:726
+#: order/models.py:742
msgid "Order cannot be completed as no parts have been assigned"
msgstr ""
-#: order/models.py:730
+#: order/models.py:746
msgid "Only a pending order can be marked as complete"
msgstr ""
-#: order/models.py:733
+#: order/models.py:749
msgid "Order cannot be completed as there are incomplete shipments"
msgstr ""
-#: order/models.py:736
+#: order/models.py:752
msgid "Order cannot be completed as there are incomplete line items"
msgstr ""
-#: order/models.py:910
+#: order/models.py:926
msgid "Item quantity"
msgstr ""
-#: order/models.py:916
+#: order/models.py:932
msgid "Line item reference"
msgstr ""
-#: order/models.py:918
+#: order/models.py:934
msgid "Line item notes"
msgstr ""
-#: order/models.py:923
+#: order/models.py:939
msgid "Target shipping date for this line item"
msgstr ""
-#: order/models.py:941
+#: order/models.py:957
msgid "Context"
msgstr ""
-#: order/models.py:942
+#: order/models.py:958
msgid "Additional context for this line"
msgstr ""
-#: order/models.py:950
+#: order/models.py:966
msgid "Unit price"
msgstr ""
-#: order/models.py:980
+#: order/models.py:996
msgid "Supplier part must match supplier"
msgstr ""
-#: order/models.py:988
+#: order/models.py:1004
msgid "deleted"
msgstr ""
-#: order/models.py:994 order/models.py:1074 order/models.py:1099
-#: order/models.py:1184 order/models.py:1320
+#: order/models.py:1010 order/models.py:1090 order/models.py:1115
+#: order/models.py:1200 order/models.py:1336
#: templates/js/translated/order.js:3112
msgid "Order"
msgstr ""
-#: order/models.py:995 order/models.py:1074
+#: order/models.py:1011 order/models.py:1090
#: order/templates/order/order_base.html:9
#: order/templates/order/order_base.html:18
#: report/templates/report/inventree_po_report.html:76
#: stock/templates/stock/item_base.html:184
+#: templates/email/overdue_purchase_order.html:15
#: templates/js/translated/order.js:885 templates/js/translated/order.js:1621
-#: templates/js/translated/part.js:899 templates/js/translated/stock.js:1846
-#: templates/js/translated/stock.js:2412
+#: templates/js/translated/part.js:943 templates/js/translated/stock.js:1856
+#: templates/js/translated/stock.js:2422
msgid "Purchase Order"
msgstr ""
-#: order/models.py:1013
+#: order/models.py:1029
msgid "Supplier part"
msgstr ""
-#: order/models.py:1020 order/templates/order/order_base.html:169
+#: order/models.py:1036 order/templates/order/order_base.html:169
#: templates/js/translated/order.js:1318 templates/js/translated/order.js:2009
-#: templates/js/translated/part.js:993 templates/js/translated/part.js:1020
+#: templates/js/translated/part.js:1037 templates/js/translated/part.js:1064
#: templates/js/translated/table_filters.js:330
msgid "Received"
msgstr ""
-#: order/models.py:1021
+#: order/models.py:1037
msgid "Number of items received"
msgstr ""
-#: order/models.py:1028 part/templates/part/prices.html:179 stock/models.py:722
+#: order/models.py:1044 part/templates/part/prices.html:181 stock/models.py:722
#: stock/serializers.py:153 stock/templates/stock/item_base.html:191
-#: templates/js/translated/stock.js:1900
+#: templates/js/translated/stock.js:1910
msgid "Purchase Price"
msgstr ""
-#: order/models.py:1029
+#: order/models.py:1045
msgid "Unit purchase price"
msgstr ""
-#: order/models.py:1037
+#: order/models.py:1053
msgid "Where does the Purchaser want this item to be stored?"
msgstr ""
-#: order/models.py:1109 part/templates/part/part_pricing.html:112
-#: part/templates/part/prices.html:119 part/templates/part/prices.html:288
+#: order/models.py:1125 part/templates/part/part_pricing.html:115
+#: part/templates/part/prices.html:121 part/templates/part/prices.html:290
msgid "Sale Price"
msgstr ""
-#: order/models.py:1110
+#: order/models.py:1126
msgid "Unit sale price"
msgstr ""
-#: order/models.py:1115
+#: order/models.py:1131
msgid "Shipped quantity"
msgstr ""
-#: order/models.py:1191
+#: order/models.py:1207
msgid "Date of shipment"
msgstr ""
-#: order/models.py:1198
+#: order/models.py:1214
msgid "Checked By"
msgstr ""
-#: order/models.py:1199
+#: order/models.py:1215
msgid "User who checked this shipment"
msgstr ""
-#: order/models.py:1207
+#: order/models.py:1223
msgid "Shipment number"
msgstr ""
-#: order/models.py:1214
+#: order/models.py:1230
msgid "Shipment notes"
msgstr ""
-#: order/models.py:1221
+#: order/models.py:1237
msgid "Tracking Number"
msgstr ""
-#: order/models.py:1222
+#: order/models.py:1238
msgid "Shipment tracking information"
msgstr ""
-#: order/models.py:1229
+#: order/models.py:1245
msgid "Invoice Number"
msgstr ""
-#: order/models.py:1230
+#: order/models.py:1246
msgid "Reference number for associated invoice"
msgstr ""
-#: order/models.py:1248
+#: order/models.py:1264
msgid "Shipment has already been sent"
msgstr ""
-#: order/models.py:1251
+#: order/models.py:1267
msgid "Shipment has no allocated stock items"
msgstr ""
-#: order/models.py:1354 order/models.py:1356
+#: order/models.py:1370 order/models.py:1372
msgid "Stock item has not been assigned"
msgstr ""
-#: order/models.py:1360
+#: order/models.py:1376
msgid "Cannot allocate stock item to a line with a different part"
msgstr ""
-#: order/models.py:1362
+#: order/models.py:1378
msgid "Cannot allocate stock to a line without a part"
msgstr ""
-#: order/models.py:1365
+#: order/models.py:1381
msgid "Allocation quantity cannot exceed stock quantity"
msgstr ""
-#: order/models.py:1369
+#: order/models.py:1385
msgid "StockItem is over-allocated"
msgstr ""
-#: order/models.py:1375 order/serializers.py:1045
+#: order/models.py:1391 order/serializers.py:1047
msgid "Quantity must be 1 for serialized stock item"
msgstr ""
-#: order/models.py:1378
+#: order/models.py:1394
msgid "Sales order does not match shipment"
msgstr ""
-#: order/models.py:1379
+#: order/models.py:1395
msgid "Shipment does not match sales order"
msgstr ""
-#: order/models.py:1387
+#: order/models.py:1403
msgid "Line"
msgstr ""
-#: order/models.py:1395 order/serializers.py:1149 order/serializers.py:1273
+#: order/models.py:1411 order/serializers.py:1151 order/serializers.py:1275
#: templates/js/translated/model_renderers.js:301
msgid "Shipment"
msgstr ""
-#: order/models.py:1396
+#: order/models.py:1412
msgid "Sales order shipment reference"
msgstr ""
-#: order/models.py:1408 templates/InvenTree/notifications/notifications.html:70
+#: order/models.py:1424 templates/InvenTree/notifications/notifications.html:70
msgid "Item"
msgstr ""
-#: order/models.py:1409
+#: order/models.py:1425
msgid "Select stock item to allocate"
msgstr ""
-#: order/models.py:1412
+#: order/models.py:1428
msgid "Enter stock allocation quantity"
msgstr ""
@@ -3662,7 +3692,7 @@ msgstr ""
msgid "Purchase order must match supplier"
msgstr ""
-#: order/serializers.py:406 order/serializers.py:1117
+#: order/serializers.py:406 order/serializers.py:1119
msgid "Line Item"
msgstr ""
@@ -3710,42 +3740,60 @@ msgstr ""
msgid "Supplied barcode values must be unique"
msgstr ""
-#: order/serializers.py:866
+#: order/serializers.py:868
msgid "Sale price currency"
msgstr ""
-#: order/serializers.py:947
+#: order/serializers.py:949
msgid "No shipment details provided"
msgstr ""
-#: order/serializers.py:1006 order/serializers.py:1126
+#: order/serializers.py:1008 order/serializers.py:1128
msgid "Line item is not associated with this order"
msgstr ""
-#: order/serializers.py:1028
+#: order/serializers.py:1030
msgid "Quantity must be positive"
msgstr ""
-#: order/serializers.py:1139
+#: order/serializers.py:1141
msgid "Enter serial numbers to allocate"
msgstr ""
-#: order/serializers.py:1161 order/serializers.py:1281
+#: order/serializers.py:1163 order/serializers.py:1283
msgid "Shipment has already been shipped"
msgstr ""
-#: order/serializers.py:1164 order/serializers.py:1284
+#: order/serializers.py:1166 order/serializers.py:1286
msgid "Shipment is not associated with this order"
msgstr ""
-#: order/serializers.py:1214
+#: order/serializers.py:1216
msgid "No match found for the following serial numbers"
msgstr ""
-#: order/serializers.py:1224
+#: order/serializers.py:1226
msgid "The following serial numbers are already allocated"
msgstr ""
+#: order/tasks.py:26
+msgid "Overdue Purchase Order"
+msgstr ""
+
+#: order/tasks.py:31
+#, python-brace-format
+msgid "Purchase order {po} is now overdue"
+msgstr ""
+
+#: order/tasks.py:88
+msgid "Overdue Sales Order"
+msgstr ""
+
+#: order/tasks.py:93
+#, python-brace-format
+msgid "Sales order {so} is now overdue"
+msgstr ""
+
#: order/templates/order/order_base.html:33
msgid "Print purchase order report"
msgstr ""
@@ -3870,8 +3918,8 @@ msgstr ""
#: templates/js/translated/bom.js:77 templates/js/translated/build.js:427
#: templates/js/translated/build.js:579 templates/js/translated/build.js:1972
#: templates/js/translated/order.js:833 templates/js/translated/order.js:1265
-#: templates/js/translated/order.js:2731 templates/js/translated/stock.js:570
-#: templates/js/translated/stock.js:738
+#: templates/js/translated/order.js:2731 templates/js/translated/stock.js:569
+#: templates/js/translated/stock.js:737
#: templates/patterns/wizard/match_fields.html:70
msgid "Remove row"
msgstr ""
@@ -3990,7 +4038,7 @@ msgid "Pending Shipments"
msgstr ""
#: order/templates/order/sales_order_detail.html:70
-#: templates/attachment_table.html:6 templates/js/translated/bom.js:1053
+#: templates/attachment_table.html:6 templates/js/translated/bom.js:1047
#: templates/js/translated/build.js:1880
msgid "Actions"
msgstr ""
@@ -4021,47 +4069,47 @@ msgstr ""
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr ""
-#: part/api.py:481
+#: part/api.py:482
msgid "Incoming Purchase Order"
msgstr ""
-#: part/api.py:501
+#: part/api.py:502
msgid "Outgoing Sales Order"
msgstr ""
-#: part/api.py:519
+#: part/api.py:520
msgid "Stock produced by Build Order"
msgstr ""
-#: part/api.py:551
+#: part/api.py:552
msgid "Stock required for Build Order"
msgstr ""
-#: part/api.py:637
+#: part/api.py:638
msgid "Valid"
msgstr ""
-#: part/api.py:638
+#: part/api.py:639
msgid "Validate entire Bill of Materials"
msgstr ""
-#: part/api.py:644
+#: part/api.py:645
msgid "This option must be selected"
msgstr ""
-#: part/api.py:1010
+#: part/api.py:1011
msgid "Must be greater than zero"
msgstr ""
-#: part/api.py:1014
+#: part/api.py:1015
msgid "Must be a valid quantity"
msgstr ""
-#: part/api.py:1029
+#: part/api.py:1030
msgid "Specify location for initial part stock"
msgstr ""
-#: part/api.py:1060 part/api.py:1064 part/api.py:1079 part/api.py:1083
+#: part/api.py:1061 part/api.py:1065 part/api.py:1080 part/api.py:1084
msgid "This field is required"
msgstr ""
@@ -4080,17 +4128,13 @@ msgid "Available Stock"
msgstr ""
#: part/bom.py:130 part/templates/part/part_base.html:207
-#: templates/js/translated/part.js:517 templates/js/translated/part.js:537
-#: templates/js/translated/part.js:1229 templates/js/translated/part.js:1401
-#: templates/js/translated/part.js:1417
+#: templates/js/translated/part.js:561 templates/js/translated/part.js:581
+#: templates/js/translated/part.js:1273 templates/js/translated/part.js:1445
+#: templates/js/translated/part.js:1461
msgid "On Order"
msgstr ""
-#: part/forms.py:59
-msgid "Select part category"
-msgstr ""
-
-#: part/forms.py:69
+#: part/forms.py:60
msgid "Input quantity for price calculation"
msgstr ""
@@ -4106,7 +4150,7 @@ msgstr ""
msgid "Default keywords for parts in this category"
msgstr ""
-#: part/models.py:115 part/models.py:2415 part/templates/part/category.html:15
+#: part/models.py:115 part/models.py:2403 part/templates/part/category.html:15
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr ""
@@ -4123,7 +4167,7 @@ msgstr ""
#: part/templates/part/category_sidebar.html:9
#: templates/InvenTree/index.html:85 templates/InvenTree/search.html:82
#: templates/InvenTree/settings/sidebar.html:39
-#: templates/js/translated/part.js:1768 templates/js/translated/search.js:144
+#: templates/js/translated/part.js:1864 templates/js/translated/search.js:144
#: templates/navbar.html:24 users/models.py:37
msgid "Parts"
msgstr ""
@@ -4153,7 +4197,7 @@ msgstr ""
msgid "Duplicate IPN not allowed in part settings"
msgstr ""
-#: part/models.py:738 part/models.py:2469
+#: part/models.py:738 part/models.py:2457
msgid "Part name"
msgstr ""
@@ -4186,12 +4230,11 @@ msgstr ""
msgid "Part keywords to improve visibility in search results"
msgstr ""
-#: part/models.py:776 part/models.py:2171 part/models.py:2414
+#: part/models.py:776 part/models.py:2159 part/models.py:2402
#: part/templates/part/part_base.html:257
-#: part/templates/part/set_category.html:15
#: templates/InvenTree/notifications/notifications.html:65
#: templates/InvenTree/settings/settings.html:231
-#: templates/js/translated/part.js:1369
+#: templates/js/translated/part.js:1413 templates/js/translated/part.js:1639
msgid "Category"
msgstr ""
@@ -4200,8 +4243,8 @@ msgid "Part category"
msgstr ""
#: part/models.py:782 part/templates/part/part_base.html:266
-#: templates/js/translated/part.js:666 templates/js/translated/part.js:1322
-#: templates/js/translated/stock.js:1659
+#: templates/js/translated/part.js:710 templates/js/translated/part.js:1366
+#: templates/js/translated/stock.js:1669
msgid "IPN"
msgstr ""
@@ -4214,7 +4257,7 @@ msgid "Part revision or version number"
msgstr ""
#: part/models.py:790 part/templates/part/part_base.html:273
-#: report/models.py:170 templates/js/translated/part.js:670
+#: report/models.py:170 templates/js/translated/part.js:714
msgid "Revision"
msgstr ""
@@ -4302,317 +4345,321 @@ msgstr ""
msgid "Creation User"
msgstr ""
-#: part/models.py:1690
+#: part/models.py:1685
msgid "Sell multiple"
msgstr ""
-#: part/models.py:2218
+#: part/models.py:2206
msgid "Test templates can only be created for trackable parts"
msgstr ""
-#: part/models.py:2235
+#: part/models.py:2223
msgid "Test with this name already exists for this part"
msgstr ""
-#: part/models.py:2255 templates/js/translated/part.js:1819
-#: templates/js/translated/stock.js:1274
+#: part/models.py:2243 templates/js/translated/part.js:1915
+#: templates/js/translated/stock.js:1284
msgid "Test Name"
msgstr ""
-#: part/models.py:2256
+#: part/models.py:2244
msgid "Enter a name for the test"
msgstr ""
-#: part/models.py:2261
+#: part/models.py:2249
msgid "Test Description"
msgstr ""
-#: part/models.py:2262
+#: part/models.py:2250
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:2267 templates/js/translated/part.js:1828
+#: part/models.py:2255 templates/js/translated/part.js:1924
#: templates/js/translated/table_filters.js:294
msgid "Required"
msgstr ""
-#: part/models.py:2268
+#: part/models.py:2256
msgid "Is this test required to pass?"
msgstr ""
-#: part/models.py:2273 templates/js/translated/part.js:1836
+#: part/models.py:2261 templates/js/translated/part.js:1932
msgid "Requires Value"
msgstr ""
-#: part/models.py:2274
+#: part/models.py:2262
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:2279 templates/js/translated/part.js:1843
+#: part/models.py:2267 templates/js/translated/part.js:1939
msgid "Requires Attachment"
msgstr ""
-#: part/models.py:2280
+#: part/models.py:2268
msgid "Does this test require a file attachment when adding a test result?"
msgstr ""
-#: part/models.py:2288
+#: part/models.py:2276
#, python-brace-format
msgid "Illegal character in template name ({c})"
msgstr ""
-#: part/models.py:2324
+#: part/models.py:2312
msgid "Parameter template name must be unique"
msgstr ""
-#: part/models.py:2332
+#: part/models.py:2320
msgid "Parameter Name"
msgstr ""
-#: part/models.py:2339
+#: part/models.py:2327
msgid "Parameter Units"
msgstr ""
-#: part/models.py:2370
+#: part/models.py:2358
msgid "Parent Part"
msgstr ""
-#: part/models.py:2372 part/models.py:2420 part/models.py:2421
+#: part/models.py:2360 part/models.py:2408 part/models.py:2409
#: templates/InvenTree/settings/settings.html:226
msgid "Parameter Template"
msgstr ""
-#: part/models.py:2374
+#: part/models.py:2362
msgid "Data"
msgstr ""
-#: part/models.py:2374
+#: part/models.py:2362
msgid "Parameter Value"
msgstr ""
-#: part/models.py:2425 templates/InvenTree/settings/settings.html:235
+#: part/models.py:2413 templates/InvenTree/settings/settings.html:235
msgid "Default Value"
msgstr ""
-#: part/models.py:2426
+#: part/models.py:2414
msgid "Default Parameter Value"
msgstr ""
-#: part/models.py:2461
+#: part/models.py:2449
msgid "Part ID or part name"
msgstr ""
-#: part/models.py:2464 templates/js/translated/model_renderers.js:200
+#: part/models.py:2452 templates/js/translated/model_renderers.js:200
msgid "Part ID"
msgstr ""
-#: part/models.py:2465
+#: part/models.py:2453
msgid "Unique part ID value"
msgstr ""
-#: part/models.py:2468
+#: part/models.py:2456
msgid "Part Name"
msgstr ""
-#: part/models.py:2472
+#: part/models.py:2460
msgid "Part IPN"
msgstr ""
-#: part/models.py:2473
+#: part/models.py:2461
msgid "Part IPN value"
msgstr ""
-#: part/models.py:2476
+#: part/models.py:2464
msgid "Level"
msgstr ""
-#: part/models.py:2477
+#: part/models.py:2465
msgid "BOM level"
msgstr ""
-#: part/models.py:2546
+#: part/models.py:2534
msgid "Select parent part"
msgstr ""
-#: part/models.py:2554
+#: part/models.py:2542
msgid "Sub part"
msgstr ""
-#: part/models.py:2555
+#: part/models.py:2543
msgid "Select part to be used in BOM"
msgstr ""
-#: part/models.py:2561
+#: part/models.py:2549
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:2563 part/templates/part/upload_bom.html:58
-#: templates/js/translated/bom.js:877 templates/js/translated/bom.js:971
+#: part/models.py:2551 part/templates/part/upload_bom.html:58
+#: templates/js/translated/bom.js:871 templates/js/translated/bom.js:965
#: templates/js/translated/table_filters.js:92
msgid "Optional"
msgstr ""
-#: part/models.py:2563
+#: part/models.py:2551
msgid "This BOM item is optional"
msgstr ""
-#: part/models.py:2566 part/templates/part/upload_bom.html:55
+#: part/models.py:2554 part/templates/part/upload_bom.html:55
msgid "Overage"
msgstr ""
-#: part/models.py:2567
+#: part/models.py:2555
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr ""
-#: part/models.py:2570
+#: part/models.py:2558
msgid "BOM item reference"
msgstr ""
-#: part/models.py:2573
+#: part/models.py:2561
msgid "BOM item notes"
msgstr ""
-#: part/models.py:2575
+#: part/models.py:2563
msgid "Checksum"
msgstr ""
-#: part/models.py:2575
+#: part/models.py:2563
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:2579 part/templates/part/upload_bom.html:57
-#: templates/js/translated/bom.js:988
+#: part/models.py:2567 part/templates/part/upload_bom.html:57
+#: templates/js/translated/bom.js:982
#: templates/js/translated/table_filters.js:68
#: templates/js/translated/table_filters.js:88
msgid "Inherited"
msgstr ""
-#: part/models.py:2580
+#: part/models.py:2568
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr ""
-#: part/models.py:2585 part/templates/part/upload_bom.html:56
-#: templates/js/translated/bom.js:980
+#: part/models.py:2573 part/templates/part/upload_bom.html:56
+#: templates/js/translated/bom.js:974
msgid "Allow Variants"
msgstr ""
-#: part/models.py:2586
+#: part/models.py:2574
msgid "Stock items for variant parts can be used for this BOM item"
msgstr ""
-#: part/models.py:2664 stock/models.py:460
+#: part/models.py:2652 stock/models.py:460
msgid "Quantity must be integer value for trackable parts"
msgstr ""
-#: part/models.py:2673 part/models.py:2675
+#: part/models.py:2661 part/models.py:2663
msgid "Sub part must be specified"
msgstr ""
-#: part/models.py:2780
+#: part/models.py:2768
msgid "BOM Item Substitute"
msgstr ""
-#: part/models.py:2801
+#: part/models.py:2789
msgid "Substitute part cannot be the same as the master part"
msgstr ""
-#: part/models.py:2814
+#: part/models.py:2802
msgid "Parent BOM item"
msgstr ""
-#: part/models.py:2822
+#: part/models.py:2810
msgid "Substitute part"
msgstr ""
-#: part/models.py:2833
+#: part/models.py:2825
msgid "Part 1"
msgstr ""
-#: part/models.py:2837
+#: part/models.py:2829
msgid "Part 2"
msgstr ""
-#: part/models.py:2837
+#: part/models.py:2829
msgid "Select Related Part"
msgstr ""
-#: part/models.py:2868
-msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique"
+#: part/models.py:2847
+msgid "Part relationship cannot be created between a part and itself"
msgstr ""
-#: part/serializers.py:138 part/serializers.py:169 stock/serializers.py:163
+#: part/models.py:2851
+msgid "Duplicate relationship already exists"
+msgstr ""
+
+#: part/serializers.py:140 part/serializers.py:171 stock/serializers.py:163
msgid "Purchase currency of this stock item"
msgstr ""
-#: part/serializers.py:794
+#: part/serializers.py:796
msgid "Select part to copy BOM from"
msgstr ""
-#: part/serializers.py:802
+#: part/serializers.py:804
msgid "Remove Existing Data"
msgstr ""
-#: part/serializers.py:803
+#: part/serializers.py:805
msgid "Remove existing BOM items before copying"
msgstr ""
-#: part/serializers.py:808
+#: part/serializers.py:810
msgid "Include Inherited"
msgstr ""
-#: part/serializers.py:809
+#: part/serializers.py:811
msgid "Include BOM items which are inherited from templated parts"
msgstr ""
-#: part/serializers.py:814
+#: part/serializers.py:816
msgid "Skip Invalid Rows"
msgstr ""
-#: part/serializers.py:815
+#: part/serializers.py:817
msgid "Enable this option to skip invalid rows"
msgstr ""
-#: part/serializers.py:820
+#: part/serializers.py:822
msgid "Copy Substitute Parts"
msgstr ""
-#: part/serializers.py:821
+#: part/serializers.py:823
msgid "Copy substitute parts when duplicate BOM items"
msgstr ""
-#: part/serializers.py:861
+#: part/serializers.py:863
msgid "Clear Existing BOM"
msgstr ""
-#: part/serializers.py:862
+#: part/serializers.py:864
msgid "Delete existing BOM items before uploading"
msgstr ""
-#: part/serializers.py:892
+#: part/serializers.py:894
msgid "No part column specified"
msgstr ""
-#: part/serializers.py:935
+#: part/serializers.py:937
msgid "Multiple matching parts found"
msgstr ""
-#: part/serializers.py:938
+#: part/serializers.py:940
msgid "No matching part found"
msgstr ""
-#: part/serializers.py:941
+#: part/serializers.py:943
msgid "Part is not designated as a component"
msgstr ""
-#: part/serializers.py:950
+#: part/serializers.py:952
msgid "Quantity not provided"
msgstr ""
-#: part/serializers.py:958
+#: part/serializers.py:960
msgid "Invalid quantity"
msgstr ""
-#: part/serializers.py:979
+#: part/serializers.py:981
msgid "At least one BOM item is required"
msgstr ""
@@ -5088,10 +5135,10 @@ msgid "Part is virtual (not a physical part)"
msgstr ""
#: part/templates/part/part_base.html:143
-#: templates/js/translated/company.js:623
-#: templates/js/translated/company.js:882
+#: templates/js/translated/company.js:608
+#: templates/js/translated/company.js:867
#: templates/js/translated/model_renderers.js:192
-#: templates/js/translated/part.js:581 templates/js/translated/part.js:658
+#: templates/js/translated/part.js:625 templates/js/translated/part.js:702
msgid "Inactive"
msgstr ""
@@ -5120,13 +5167,13 @@ msgstr ""
msgid "Allocated to Sales Orders"
msgstr ""
-#: part/templates/part/part_base.html:232 templates/js/translated/bom.js:1009
+#: part/templates/part/part_base.html:232 templates/js/translated/bom.js:1003
msgid "Can Build"
msgstr ""
-#: part/templates/part/part_base.html:238 templates/js/translated/part.js:520
-#: templates/js/translated/part.js:540 templates/js/translated/part.js:1233
-#: templates/js/translated/part.js:1405 templates/js/translated/part.js:1421
+#: part/templates/part/part_base.html:238 templates/js/translated/part.js:564
+#: templates/js/translated/part.js:584 templates/js/translated/part.js:1277
+#: templates/js/translated/part.js:1449 templates/js/translated/part.js:1465
msgid "Building"
msgstr ""
@@ -5143,7 +5190,7 @@ msgstr ""
msgid "Search for serial number"
msgstr ""
-#: part/templates/part/part_base.html:443 part/templates/part/prices.html:147
+#: part/templates/part/part_base.html:443 part/templates/part/prices.html:149
msgid "Calculate"
msgstr ""
@@ -5161,54 +5208,55 @@ msgstr ""
#: part/templates/part/part_pricing.html:26
#: part/templates/part/part_pricing.html:52
-#: part/templates/part/part_pricing.html:100
-#: part/templates/part/part_pricing.html:115 part/templates/part/prices.html:28
-#: part/templates/part/prices.html:55 part/templates/part/prices.html:106
-#: part/templates/part/prices.html:123
+#: part/templates/part/part_pricing.html:103
+#: part/templates/part/part_pricing.html:118 part/templates/part/prices.html:28
+#: part/templates/part/prices.html:55 part/templates/part/prices.html:108
+#: part/templates/part/prices.html:125
msgid "Unit Cost"
msgstr ""
#: part/templates/part/part_pricing.html:32
#: part/templates/part/part_pricing.html:58
-#: part/templates/part/part_pricing.html:104
-#: part/templates/part/part_pricing.html:119 part/templates/part/prices.html:35
-#: part/templates/part/prices.html:62 part/templates/part/prices.html:111
-#: part/templates/part/prices.html:128
+#: part/templates/part/part_pricing.html:107
+#: part/templates/part/part_pricing.html:122 part/templates/part/prices.html:35
+#: part/templates/part/prices.html:62 part/templates/part/prices.html:113
+#: part/templates/part/prices.html:130
msgid "Total Cost"
msgstr ""
#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:43
-#: templates/js/translated/bom.js:963
+#: templates/js/translated/bom.js:957
msgid "No supplier pricing available"
msgstr ""
#: part/templates/part/part_pricing.html:48 part/templates/part/prices.html:52
-#: part/templates/part/prices.html:246
+#: part/templates/part/prices.html:248
msgid "BOM Pricing"
msgstr ""
-#: part/templates/part/part_pricing.html:65 part/templates/part/prices.html:72
+#: part/templates/part/part_pricing.html:66 part/templates/part/prices.html:72
msgid "Unit Purchase Price"
msgstr ""
-#: part/templates/part/part_pricing.html:71 part/templates/part/prices.html:79
+#: part/templates/part/part_pricing.html:72 part/templates/part/prices.html:79
msgid "Total Purchase Price"
msgstr ""
-#: part/templates/part/part_pricing.html:81 part/templates/part/prices.html:89
+#: part/templates/part/part_pricing.html:82 part/templates/part/prices.html:89
msgid "Note: BOM pricing is incomplete for this part"
msgstr ""
-#: part/templates/part/part_pricing.html:88 part/templates/part/prices.html:96
+#: part/templates/part/part_pricing.html:91 part/templates/part/prices.html:98
msgid "No BOM pricing available"
msgstr ""
-#: part/templates/part/part_pricing.html:97 part/templates/part/prices.html:105
+#: part/templates/part/part_pricing.html:100
+#: part/templates/part/prices.html:107
msgid "Internal Price"
msgstr ""
-#: part/templates/part/part_pricing.html:128
-#: part/templates/part/prices.html:137
+#: part/templates/part/part_pricing.html:131
+#: part/templates/part/prices.html:139
msgid "No pricing information is available for this part."
msgstr ""
@@ -5232,43 +5280,6 @@ msgstr ""
msgid "Select from existing images"
msgstr ""
-#: part/templates/part/partial_delete.html:9
-#, python-format
-msgid "Part '%(full_name)s' cannot be deleted as it is still marked as active.\n"
-"
Disable the \"Active\" part attribute and re-try.\n"
-" "
-msgstr ""
-
-#: part/templates/part/partial_delete.html:17
-#, python-format
-msgid "Are you sure you want to delete part '%(full_name)s'?"
-msgstr ""
-
-#: part/templates/part/partial_delete.html:22
-#, python-format
-msgid "This part is used in BOMs for %(count)s other parts. If you delete this part, the BOMs for the following parts will be updated"
-msgstr ""
-
-#: part/templates/part/partial_delete.html:32
-#, python-format
-msgid "There are %(count)s stock entries defined for this part. If you delete this part, the following stock entries will also be deleted:"
-msgstr ""
-
-#: part/templates/part/partial_delete.html:43
-#, python-format
-msgid "There are %(count)s manufacturers defined for this part. If you delete this part, the following manufacturer parts will also be deleted:"
-msgstr ""
-
-#: part/templates/part/partial_delete.html:54
-#, python-format
-msgid "There are %(count)s suppliers defined for this part. If you delete this part, the following supplier parts will also be deleted:"
-msgstr ""
-
-#: part/templates/part/partial_delete.html:67
-#, python-format
-msgid "There are %(count)s unique parts tracked for '%(full_name)s'. Deleting this part will permanently remove this tracking information."
-msgstr ""
-
#: part/templates/part/prices.html:19
msgid "Pricing ranges"
msgstr ""
@@ -5285,66 +5296,58 @@ msgstr ""
msgid "Show BOM cost"
msgstr ""
-#: part/templates/part/prices.html:120
+#: part/templates/part/prices.html:122
msgid "Show sale cost"
msgstr ""
-#: part/templates/part/prices.html:121
+#: part/templates/part/prices.html:123
msgid "Show sale price"
msgstr ""
-#: part/templates/part/prices.html:143
+#: part/templates/part/prices.html:145
msgid "Calculation parameters"
msgstr ""
-#: part/templates/part/prices.html:158 templates/js/translated/bom.js:957
+#: part/templates/part/prices.html:160 templates/js/translated/bom.js:951
msgid "Supplier Cost"
msgstr ""
-#: part/templates/part/prices.html:159 part/templates/part/prices.html:180
-#: part/templates/part/prices.html:204 part/templates/part/prices.html:234
-#: part/templates/part/prices.html:260 part/templates/part/prices.html:289
+#: part/templates/part/prices.html:161 part/templates/part/prices.html:182
+#: part/templates/part/prices.html:206 part/templates/part/prices.html:236
+#: part/templates/part/prices.html:262 part/templates/part/prices.html:291
msgid "Jump to overview"
msgstr ""
-#: part/templates/part/prices.html:184
+#: part/templates/part/prices.html:186
msgid "Stock Pricing"
msgstr ""
-#: part/templates/part/prices.html:193
+#: part/templates/part/prices.html:195
msgid "No stock pricing history is available for this part."
msgstr ""
-#: part/templates/part/prices.html:203
+#: part/templates/part/prices.html:205
msgid "Internal Cost"
msgstr ""
-#: part/templates/part/prices.html:218
+#: part/templates/part/prices.html:220
msgid "Add Internal Price Break"
msgstr ""
-#: part/templates/part/prices.html:233
+#: part/templates/part/prices.html:235
msgid "BOM Cost"
msgstr ""
-#: part/templates/part/prices.html:259
+#: part/templates/part/prices.html:261
msgid "Sale Cost"
msgstr ""
-#: part/templates/part/prices.html:300
+#: part/templates/part/prices.html:302
msgid "No sale pice history available for this part."
msgstr ""
-#: part/templates/part/set_category.html:9
-msgid "Set category for the following parts"
-msgstr ""
-
-#: part/templates/part/set_category.html:32
-msgid "Remove part"
-msgstr ""
-
-#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:543
-#: templates/js/translated/part.js:1221 templates/js/translated/part.js:1425
+#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:587
+#: templates/js/translated/part.js:1265 templates/js/translated/part.js:1469
msgid "No Stock"
msgstr ""
@@ -5407,56 +5410,39 @@ msgstr ""
msgid "{title} v{version}"
msgstr ""
-#: part/views.py:74
-msgid "Set Part Category"
-msgstr ""
-
-#: part/views.py:122
-#, python-brace-format
-msgid "Set category for {n} parts"
-msgstr ""
-
-#: part/views.py:193
+#: part/views.py:118
msgid "Match References"
msgstr ""
-#: part/views.py:494
+#: part/views.py:419
msgid "None"
msgstr ""
-#: part/views.py:556
+#: part/views.py:481
msgid "Part QR Code"
msgstr ""
-#: part/views.py:650
+#: part/views.py:575
msgid "Select Part Image"
msgstr ""
-#: part/views.py:676
+#: part/views.py:601
msgid "Updated part image"
msgstr ""
-#: part/views.py:679
+#: part/views.py:604
msgid "Part image not found"
msgstr ""
-#: part/views.py:768
-msgid "Confirm Part Deletion"
-msgstr ""
-
-#: part/views.py:776
-msgid "Part was deleted"
-msgstr ""
-
-#: part/views.py:785
+#: part/views.py:693
msgid "Part Pricing"
msgstr ""
-#: part/views.py:976
+#: part/views.py:884
msgid "Delete Part Category"
msgstr ""
-#: part/views.py:983
+#: part/views.py:891
msgid "Part category was deleted"
msgstr ""
@@ -5516,21 +5502,21 @@ msgstr ""
msgid "Label printing failed"
msgstr ""
-#: plugin/builtin/integration/core_notifications.py:28
+#: plugin/builtin/integration/core_notifications.py:29
msgid "InvenTree contributors"
msgstr ""
-#: plugin/builtin/integration/core_notifications.py:29
+#: plugin/builtin/integration/core_notifications.py:30
msgid "Integrated outgoing notificaton methods"
msgstr ""
-#: plugin/builtin/integration/core_notifications.py:33
-#: plugin/builtin/integration/core_notifications.py:52
-msgid "Enable email notifications"
-msgstr ""
-
#: plugin/builtin/integration/core_notifications.py:34
#: plugin/builtin/integration/core_notifications.py:53
+msgid "Enable email notifications"
+msgstr ""
+
+#: plugin/builtin/integration/core_notifications.py:35
+#: plugin/builtin/integration/core_notifications.py:54
msgid "Allow sending of emails for event notifications"
msgstr ""
@@ -5646,15 +5632,19 @@ msgstr ""
msgid "Either packagename of URL must be provided"
msgstr ""
-#: report/api.py:166
+#: report/api.py:179
msgid "No valid objects provided to template"
msgstr ""
-#: report/api.py:198 report/api.py:239
+#: report/api.py:215 report/api.py:256
#, python-brace-format
msgid "Template file '{template}' is missing or does not exist"
msgstr ""
+#: report/api.py:359
+msgid "Test report"
+msgstr ""
+
#: report/models.py:152
msgid "Template name"
msgstr ""
@@ -5757,7 +5747,7 @@ msgstr ""
#: templates/js/translated/build.js:1173 templates/js/translated/build.js:1671
#: templates/js/translated/model_renderers.js:106
#: templates/js/translated/order.js:115 templates/js/translated/order.js:3229
-#: templates/js/translated/order.js:3318 templates/js/translated/stock.js:435
+#: templates/js/translated/order.js:3318 templates/js/translated/stock.js:434
msgid "Serial Number"
msgstr ""
@@ -5766,19 +5756,19 @@ msgid "Test Results"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:93
-#: stock/models.py:2068
+#: stock/models.py:2072
msgid "Test"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:94
-#: stock/models.py:2074
+#: stock/models.py:2078
msgid "Result"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:97
#: templates/InvenTree/settings/plugin.html:51
#: templates/InvenTree/settings/plugin_settings.html:38
-#: templates/js/translated/order.js:1669 templates/js/translated/stock.js:2340
+#: templates/js/translated/order.js:1669 templates/js/translated/stock.js:2350
msgid "Date"
msgstr ""
@@ -5796,20 +5786,20 @@ msgid "Installed Items"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:137
-#: templates/js/translated/stock.js:555 templates/js/translated/stock.js:725
-#: templates/js/translated/stock.js:2589
+#: templates/js/translated/stock.js:554 templates/js/translated/stock.js:724
+#: templates/js/translated/stock.js:2599
msgid "Serial"
msgstr ""
-#: stock/api.py:504
+#: stock/api.py:505
msgid "Quantity is required"
msgstr ""
-#: stock/api.py:511
+#: stock/api.py:512
msgid "Valid part must be supplied"
msgstr ""
-#: stock/api.py:536
+#: stock/api.py:537
msgid "Serial numbers cannot be supplied for a non-trackable part"
msgstr ""
@@ -5917,7 +5907,7 @@ msgid "Destination Sales Order"
msgstr ""
#: stock/models.py:690 stock/templates/stock/item_base.html:429
-#: templates/js/translated/stock.js:1816
+#: templates/js/translated/stock.js:1826
msgid "Expiry Date"
msgstr ""
@@ -5971,79 +5961,79 @@ msgstr ""
msgid "Serial numbers already exist: {exists}"
msgstr ""
-#: stock/models.py:1321
+#: stock/models.py:1325
msgid "Stock item has been assigned to a sales order"
msgstr ""
-#: stock/models.py:1324
+#: stock/models.py:1328
msgid "Stock item is installed in another item"
msgstr ""
-#: stock/models.py:1327
+#: stock/models.py:1331
msgid "Stock item contains other items"
msgstr ""
-#: stock/models.py:1330
+#: stock/models.py:1334
msgid "Stock item has been assigned to a customer"
msgstr ""
-#: stock/models.py:1333
+#: stock/models.py:1337
msgid "Stock item is currently in production"
msgstr ""
-#: stock/models.py:1336
+#: stock/models.py:1340
msgid "Serialized stock cannot be merged"
msgstr ""
-#: stock/models.py:1343 stock/serializers.py:908
+#: stock/models.py:1347 stock/serializers.py:895
msgid "Duplicate stock items"
msgstr ""
-#: stock/models.py:1347
+#: stock/models.py:1351
msgid "Stock items must refer to the same part"
msgstr ""
-#: stock/models.py:1351
+#: stock/models.py:1355
msgid "Stock items must refer to the same supplier part"
msgstr ""
-#: stock/models.py:1355
+#: stock/models.py:1359
msgid "Stock status codes must match"
msgstr ""
-#: stock/models.py:1524
+#: stock/models.py:1528
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:1986
+#: stock/models.py:1990
msgid "Entry notes"
msgstr ""
-#: stock/models.py:2044
+#: stock/models.py:2048
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:2050
+#: stock/models.py:2054
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:2069
+#: stock/models.py:2073
msgid "Test name"
msgstr ""
-#: stock/models.py:2075
+#: stock/models.py:2079
msgid "Test result"
msgstr ""
-#: stock/models.py:2081
+#: stock/models.py:2085
msgid "Test output value"
msgstr ""
-#: stock/models.py:2088
+#: stock/models.py:2092
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:2094
+#: stock/models.py:2098
msgid "Test notes"
msgstr ""
@@ -6064,7 +6054,7 @@ msgstr ""
msgid "Enter serial numbers for new items"
msgstr ""
-#: stock/serializers.py:309 stock/serializers.py:865 stock/serializers.py:1098
+#: stock/serializers.py:309 stock/serializers.py:852 stock/serializers.py:1085
msgid "Destination stock location"
msgstr ""
@@ -6104,63 +6094,63 @@ msgstr ""
msgid "Destination location for returned item"
msgstr ""
-#: stock/serializers.py:720
+#: stock/serializers.py:707
msgid "Part must be salable"
msgstr ""
-#: stock/serializers.py:724
+#: stock/serializers.py:711
msgid "Item is allocated to a sales order"
msgstr ""
-#: stock/serializers.py:728
+#: stock/serializers.py:715
msgid "Item is allocated to a build order"
msgstr ""
-#: stock/serializers.py:759
+#: stock/serializers.py:746
msgid "Customer to assign stock items"
msgstr ""
-#: stock/serializers.py:765
+#: stock/serializers.py:752
msgid "Selected company is not a customer"
msgstr ""
-#: stock/serializers.py:773
+#: stock/serializers.py:760
msgid "Stock assignment notes"
msgstr ""
-#: stock/serializers.py:783 stock/serializers.py:1014
+#: stock/serializers.py:770 stock/serializers.py:1001
msgid "A list of stock items must be provided"
msgstr ""
-#: stock/serializers.py:872
+#: stock/serializers.py:859
msgid "Stock merging notes"
msgstr ""
-#: stock/serializers.py:877
+#: stock/serializers.py:864
msgid "Allow mismatched suppliers"
msgstr ""
-#: stock/serializers.py:878
+#: stock/serializers.py:865
msgid "Allow stock items with different supplier parts to be merged"
msgstr ""
-#: stock/serializers.py:883
+#: stock/serializers.py:870
msgid "Allow mismatched status"
msgstr ""
-#: stock/serializers.py:884
+#: stock/serializers.py:871
msgid "Allow stock items with different status codes to be merged"
msgstr ""
-#: stock/serializers.py:894
+#: stock/serializers.py:881
msgid "At least two stock items must be provided"
msgstr ""
-#: stock/serializers.py:976
+#: stock/serializers.py:963
msgid "StockItem primary key value"
msgstr ""
-#: stock/serializers.py:1004
+#: stock/serializers.py:991
msgid "Stock transaction notes"
msgstr ""
@@ -6185,7 +6175,7 @@ msgstr ""
msgid "Test Report"
msgstr ""
-#: stock/templates/stock/item.html:94
+#: stock/templates/stock/item.html:94 stock/templates/stock/item.html:298
msgid "Delete Test Data"
msgstr ""
@@ -6197,11 +6187,15 @@ msgstr ""
msgid "Installed Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:151 templates/js/translated/stock.js:2733
+#: stock/templates/stock/item.html:151 templates/js/translated/stock.js:2743
msgid "Install Stock Item"
msgstr ""
-#: stock/templates/stock/item.html:292 templates/js/translated/stock.js:1455
+#: stock/templates/stock/item.html:290
+msgid "Delete all test results for this stock item"
+msgstr ""
+
+#: stock/templates/stock/item.html:323 templates/js/translated/stock.js:1465
msgid "Add Test Result"
msgstr ""
@@ -6388,7 +6382,7 @@ msgid "Stale"
msgstr ""
#: stock/templates/stock/item_base.html:442
-#: templates/js/translated/stock.js:1832
+#: templates/js/translated/stock.js:1842
msgid "Last Updated"
msgstr ""
@@ -6529,7 +6523,7 @@ msgstr ""
msgid "Child Items"
msgstr ""
-#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:182
+#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:144
msgid "Convert Stock Item"
msgstr ""
@@ -6550,31 +6544,19 @@ msgstr ""
msgid "This action cannot be easily undone"
msgstr ""
-#: stock/views.py:113
+#: stock/views.py:111
msgid "Stock Location QR code"
msgstr ""
-#: stock/views.py:131
-msgid "Delete All Test Data"
-msgstr ""
-
-#: stock/views.py:149
-msgid "Confirm test data deletion"
-msgstr ""
-
-#: stock/views.py:150
-msgid "Check the confirmation box"
-msgstr ""
-
-#: stock/views.py:165
+#: stock/views.py:127
msgid "Stock Item QR Code"
msgstr ""
-#: stock/views.py:216
+#: stock/views.py:178
msgid "Delete Stock Location"
msgstr ""
-#: stock/views.py:229
+#: stock/views.py:191
msgid "Delete Stock Item"
msgstr ""
@@ -7317,8 +7299,8 @@ msgstr ""
#: templates/about.html:11 templates/about.html:105
#: templates/js/translated/bom.js:133 templates/js/translated/bom.js:621
-#: templates/js/translated/modals.js:56 templates/js/translated/modals.js:595
-#: templates/js/translated/modals.js:689 templates/js/translated/modals.js:997
+#: templates/js/translated/modals.js:56 templates/js/translated/modals.js:601
+#: templates/js/translated/modals.js:695 templates/js/translated/modals.js:1003
#: templates/js/translated/order.js:928 templates/modals.html:15
#: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50
msgid "Close"
@@ -7390,6 +7372,10 @@ msgstr ""
msgid "Please confirm that %(email)s is an email address for user %(user_display)s."
msgstr ""
+#: templates/account/email_confirm.html:20 templates/js/translated/forms.js:630
+msgid "Confirm"
+msgstr "Potvrdit"
+
#: templates/account/email_confirm.html:27
#, python-format
msgid "This email confirmation link expired or is invalid. Please issue a new email confirmation request."
@@ -7562,7 +7548,7 @@ msgstr ""
msgid "Delete selected attachments"
msgstr ""
-#: templates/attachment_table.html:12 templates/js/translated/attachment.js:110
+#: templates/attachment_table.html:12 templates/js/translated/attachment.js:112
msgid "Delete Attachments"
msgstr ""
@@ -7596,15 +7582,15 @@ msgid "The following parts are low on required stock"
msgstr ""
#: templates/email/build_order_required_stock.html:18
-#: templates/js/translated/bom.js:1425
+#: templates/js/translated/bom.js:1419
msgid "Required Quantity"
msgstr ""
#: templates/email/build_order_required_stock.html:19
#: templates/email/low_stock_notification.html:18
-#: templates/js/translated/bom.js:890 templates/js/translated/build.js:1787
-#: templates/js/translated/build.js:2650 templates/js/translated/part.js:527
-#: templates/js/translated/part.js:530
+#: templates/js/translated/bom.js:884 templates/js/translated/build.js:1787
+#: templates/js/translated/build.js:2650 templates/js/translated/part.js:571
+#: templates/js/translated/part.js:574
#: templates/js/translated/table_filters.js:178
msgid "Available"
msgstr ""
@@ -7622,6 +7608,13 @@ msgstr ""
msgid "Minimum Quantity"
msgstr ""
+#: templates/email/new_order_assigned.html:9
+#: templates/email/overdue_build_order.html:9
+#: templates/email/overdue_purchase_order.html:9
+#: templates/email/overdue_sales_order.html:9
+msgid "Click on the following link to view this order"
+msgstr ""
+
#: templates/image_download.html:8
msgid "Specify URL for downloading image"
msgstr ""
@@ -7638,91 +7631,91 @@ msgstr ""
msgid "Remote image must not exceed maximum allowable file size"
msgstr ""
-#: templates/js/translated/api.js:235 templates/js/translated/modals.js:1067
+#: templates/js/translated/api.js:195 templates/js/translated/modals.js:1073
msgid "No Response"
msgstr ""
-#: templates/js/translated/api.js:236 templates/js/translated/modals.js:1068
+#: templates/js/translated/api.js:196 templates/js/translated/modals.js:1074
msgid "No response from the InvenTree server"
msgstr ""
-#: templates/js/translated/api.js:242
+#: templates/js/translated/api.js:202
msgid "Error 400: Bad request"
msgstr ""
-#: templates/js/translated/api.js:243
+#: templates/js/translated/api.js:203
msgid "API request returned error code 400"
msgstr ""
-#: templates/js/translated/api.js:247 templates/js/translated/modals.js:1077
+#: templates/js/translated/api.js:207 templates/js/translated/modals.js:1083
msgid "Error 401: Not Authenticated"
msgstr ""
-#: templates/js/translated/api.js:248 templates/js/translated/modals.js:1078
+#: templates/js/translated/api.js:208 templates/js/translated/modals.js:1084
msgid "Authentication credentials not supplied"
msgstr ""
-#: templates/js/translated/api.js:252 templates/js/translated/modals.js:1082
+#: templates/js/translated/api.js:212 templates/js/translated/modals.js:1088
msgid "Error 403: Permission Denied"
msgstr ""
-#: templates/js/translated/api.js:253 templates/js/translated/modals.js:1083
+#: templates/js/translated/api.js:213 templates/js/translated/modals.js:1089
msgid "You do not have the required permissions to access this function"
msgstr ""
-#: templates/js/translated/api.js:257 templates/js/translated/modals.js:1087
+#: templates/js/translated/api.js:217 templates/js/translated/modals.js:1093
msgid "Error 404: Resource Not Found"
msgstr ""
-#: templates/js/translated/api.js:258 templates/js/translated/modals.js:1088
+#: templates/js/translated/api.js:218 templates/js/translated/modals.js:1094
msgid "The requested resource could not be located on the server"
msgstr ""
-#: templates/js/translated/api.js:262
+#: templates/js/translated/api.js:222
msgid "Error 405: Method Not Allowed"
msgstr ""
-#: templates/js/translated/api.js:263
+#: templates/js/translated/api.js:223
msgid "HTTP method not allowed at URL"
msgstr ""
-#: templates/js/translated/api.js:267 templates/js/translated/modals.js:1092
+#: templates/js/translated/api.js:227 templates/js/translated/modals.js:1098
msgid "Error 408: Timeout"
msgstr ""
-#: templates/js/translated/api.js:268 templates/js/translated/modals.js:1093
+#: templates/js/translated/api.js:228 templates/js/translated/modals.js:1099
msgid "Connection timeout while requesting data from server"
msgstr ""
-#: templates/js/translated/api.js:271
+#: templates/js/translated/api.js:231
msgid "Unhandled Error Code"
msgstr ""
-#: templates/js/translated/api.js:272
+#: templates/js/translated/api.js:232
msgid "Error code"
msgstr ""
-#: templates/js/translated/attachment.js:96
+#: templates/js/translated/attachment.js:98
msgid "All selected attachments will be deleted"
msgstr ""
-#: templates/js/translated/attachment.js:156
+#: templates/js/translated/attachment.js:152
msgid "No attachments found"
msgstr ""
-#: templates/js/translated/attachment.js:180
+#: templates/js/translated/attachment.js:176
msgid "Edit Attachment"
msgstr ""
-#: templates/js/translated/attachment.js:246
+#: templates/js/translated/attachment.js:242
msgid "Upload Date"
msgstr ""
-#: templates/js/translated/attachment.js:262
+#: templates/js/translated/attachment.js:264
msgid "Edit attachment"
msgstr ""
-#: templates/js/translated/attachment.js:269
+#: templates/js/translated/attachment.js:271
msgid "Delete attachment"
msgstr ""
@@ -7755,7 +7748,7 @@ msgid "Unknown response from server"
msgstr ""
#: templates/js/translated/barcode.js:182
-#: templates/js/translated/modals.js:1057
+#: templates/js/translated/modals.js:1063
msgid "Invalid server response"
msgstr ""
@@ -7783,7 +7776,7 @@ msgstr ""
msgid "Unlink"
msgstr ""
-#: templates/js/translated/barcode.js:456 templates/js/translated/stock.js:999
+#: templates/js/translated/barcode.js:456 templates/js/translated/stock.js:998
msgid "Remove stock item"
msgstr ""
@@ -7918,89 +7911,89 @@ msgstr ""
msgid "Edit BOM Item Substitutes"
msgstr ""
-#: templates/js/translated/bom.js:682
+#: templates/js/translated/bom.js:684
msgid "All selected BOM items will be deleted"
msgstr ""
-#: templates/js/translated/bom.js:697
+#: templates/js/translated/bom.js:699
msgid "Delete selected BOM items?"
msgstr ""
-#: templates/js/translated/bom.js:824
+#: templates/js/translated/bom.js:818
msgid "Load BOM for subassembly"
msgstr ""
-#: templates/js/translated/bom.js:834
+#: templates/js/translated/bom.js:828
msgid "Substitutes Available"
msgstr ""
-#: templates/js/translated/bom.js:838 templates/js/translated/build.js:1769
+#: templates/js/translated/bom.js:832 templates/js/translated/build.js:1769
msgid "Variant stock allowed"
msgstr ""
-#: templates/js/translated/bom.js:906 templates/js/translated/build.js:1814
+#: templates/js/translated/bom.js:900 templates/js/translated/build.js:1814
#: templates/js/translated/order.js:3562
msgid "No Stock Available"
msgstr ""
-#: templates/js/translated/bom.js:910 templates/js/translated/build.js:1818
+#: templates/js/translated/bom.js:904 templates/js/translated/build.js:1818
msgid "Includes variant and substitute stock"
msgstr ""
-#: templates/js/translated/bom.js:912 templates/js/translated/build.js:1820
-#: templates/js/translated/part.js:690
+#: templates/js/translated/bom.js:906 templates/js/translated/build.js:1820
+#: templates/js/translated/part.js:734
msgid "Includes variant stock"
msgstr ""
-#: templates/js/translated/bom.js:914 templates/js/translated/build.js:1822
+#: templates/js/translated/bom.js:908 templates/js/translated/build.js:1822
msgid "Includes substitute stock"
msgstr ""
-#: templates/js/translated/bom.js:928
+#: templates/js/translated/bom.js:922
msgid "Substitutes"
msgstr ""
-#: templates/js/translated/bom.js:943
+#: templates/js/translated/bom.js:937
msgid "Purchase Price Range"
msgstr ""
-#: templates/js/translated/bom.js:950
+#: templates/js/translated/bom.js:944
msgid "Purchase Price Average"
msgstr ""
-#: templates/js/translated/bom.js:999 templates/js/translated/bom.js:1090
+#: templates/js/translated/bom.js:993 templates/js/translated/bom.js:1084
msgid "View BOM"
msgstr ""
-#: templates/js/translated/bom.js:1061
+#: templates/js/translated/bom.js:1055
msgid "Validate BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:1063
+#: templates/js/translated/bom.js:1057
msgid "This line has been validated"
msgstr ""
-#: templates/js/translated/bom.js:1065
+#: templates/js/translated/bom.js:1059
msgid "Edit substitute parts"
msgstr ""
-#: templates/js/translated/bom.js:1067 templates/js/translated/bom.js:1228
+#: templates/js/translated/bom.js:1061 templates/js/translated/bom.js:1222
msgid "Edit BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:1069
+#: templates/js/translated/bom.js:1063
msgid "Delete BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:1164 templates/js/translated/build.js:1615
+#: templates/js/translated/bom.js:1158 templates/js/translated/build.js:1615
msgid "No BOM items found"
msgstr ""
-#: templates/js/translated/bom.js:1408 templates/js/translated/build.js:1753
+#: templates/js/translated/bom.js:1402 templates/js/translated/build.js:1753
msgid "Required Part"
msgstr ""
-#: templates/js/translated/bom.js:1430
+#: templates/js/translated/bom.js:1424
msgid "Inherited from parent BOM"
msgstr ""
@@ -8040,13 +8033,13 @@ msgstr ""
msgid "Complete Build Order"
msgstr ""
-#: templates/js/translated/build.js:259 templates/js/translated/stock.js:91
-#: templates/js/translated/stock.js:181
+#: templates/js/translated/build.js:259 templates/js/translated/stock.js:90
+#: templates/js/translated/stock.js:180
msgid "Next available serial number"
msgstr ""
-#: templates/js/translated/build.js:261 templates/js/translated/stock.js:93
-#: templates/js/translated/stock.js:183
+#: templates/js/translated/build.js:261 templates/js/translated/stock.js:92
+#: templates/js/translated/stock.js:182
msgid "Latest serial number"
msgstr ""
@@ -8259,9 +8252,9 @@ msgstr ""
msgid "No builds matching query"
msgstr ""
-#: templates/js/translated/build.js:2448 templates/js/translated/part.js:1314
-#: templates/js/translated/part.js:1729 templates/js/translated/stock.js:1619
-#: templates/js/translated/stock.js:2277
+#: templates/js/translated/build.js:2448 templates/js/translated/part.js:1358
+#: templates/js/translated/part.js:1825 templates/js/translated/stock.js:1629
+#: templates/js/translated/stock.js:2287
msgid "Select"
msgstr ""
@@ -8273,7 +8266,7 @@ msgstr ""
msgid "Progress"
msgstr ""
-#: templates/js/translated/build.js:2532 templates/js/translated/stock.js:2519
+#: templates/js/translated/build.js:2532 templates/js/translated/stock.js:2529
msgid "No user information"
msgstr ""
@@ -8285,107 +8278,107 @@ msgstr ""
msgid "No parts allocated for"
msgstr ""
-#: templates/js/translated/company.js:66
+#: templates/js/translated/company.js:65
msgid "Add Manufacturer"
msgstr ""
-#: templates/js/translated/company.js:79 templates/js/translated/company.js:169
+#: templates/js/translated/company.js:78 templates/js/translated/company.js:168
msgid "Add Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:100
+#: templates/js/translated/company.js:99
msgid "Edit Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:157 templates/js/translated/order.js:506
+#: templates/js/translated/company.js:156 templates/js/translated/order.js:506
msgid "Add Supplier"
msgstr ""
-#: templates/js/translated/company.js:185
+#: templates/js/translated/company.js:184
msgid "Add Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:200
+#: templates/js/translated/company.js:199
msgid "Edit Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:248
+#: templates/js/translated/company.js:249
msgid "All selected supplier parts will be deleted"
msgstr ""
-#: templates/js/translated/company.js:263
+#: templates/js/translated/company.js:264
msgid "Delete Supplier Parts"
msgstr ""
-#: templates/js/translated/company.js:342
+#: templates/js/translated/company.js:336
msgid "Add new Company"
msgstr ""
-#: templates/js/translated/company.js:419
+#: templates/js/translated/company.js:413
msgid "Parts Supplied"
msgstr ""
-#: templates/js/translated/company.js:428
+#: templates/js/translated/company.js:422
msgid "Parts Manufactured"
msgstr ""
-#: templates/js/translated/company.js:443
+#: templates/js/translated/company.js:437
msgid "No company information found"
msgstr ""
-#: templates/js/translated/company.js:482
+#: templates/js/translated/company.js:478
msgid "All selected manufacturer parts will be deleted"
msgstr ""
-#: templates/js/translated/company.js:496
+#: templates/js/translated/company.js:492
msgid "Delete Manufacturer Parts"
msgstr ""
-#: templates/js/translated/company.js:535
+#: templates/js/translated/company.js:526
msgid "All selected parameters will be deleted"
msgstr ""
-#: templates/js/translated/company.js:548
+#: templates/js/translated/company.js:539
msgid "Delete Parameters"
msgstr ""
-#: templates/js/translated/company.js:595
+#: templates/js/translated/company.js:580
msgid "No manufacturer parts found"
msgstr ""
-#: templates/js/translated/company.js:615
-#: templates/js/translated/company.js:874 templates/js/translated/part.js:565
-#: templates/js/translated/part.js:650
+#: templates/js/translated/company.js:600
+#: templates/js/translated/company.js:859 templates/js/translated/part.js:609
+#: templates/js/translated/part.js:694
msgid "Template part"
msgstr ""
-#: templates/js/translated/company.js:619
-#: templates/js/translated/company.js:878 templates/js/translated/part.js:569
-#: templates/js/translated/part.js:654
+#: templates/js/translated/company.js:604
+#: templates/js/translated/company.js:863 templates/js/translated/part.js:613
+#: templates/js/translated/part.js:698
msgid "Assembled part"
msgstr ""
-#: templates/js/translated/company.js:747 templates/js/translated/part.js:757
+#: templates/js/translated/company.js:732 templates/js/translated/part.js:801
msgid "No parameters found"
msgstr ""
-#: templates/js/translated/company.js:784 templates/js/translated/part.js:799
+#: templates/js/translated/company.js:769 templates/js/translated/part.js:843
msgid "Edit parameter"
msgstr ""
-#: templates/js/translated/company.js:785 templates/js/translated/part.js:800
+#: templates/js/translated/company.js:770 templates/js/translated/part.js:844
msgid "Delete parameter"
msgstr ""
-#: templates/js/translated/company.js:804 templates/js/translated/part.js:817
+#: templates/js/translated/company.js:789 templates/js/translated/part.js:861
msgid "Edit Parameter"
msgstr ""
-#: templates/js/translated/company.js:815 templates/js/translated/part.js:829
+#: templates/js/translated/company.js:800 templates/js/translated/part.js:873
msgid "Delete Parameter"
msgstr ""
-#: templates/js/translated/company.js:854
+#: templates/js/translated/company.js:839
msgid "No supplier parts found"
msgstr ""
@@ -8448,36 +8441,36 @@ msgstr ""
msgid "Keep this form open"
msgstr ""
-#: templates/js/translated/forms.js:756
+#: templates/js/translated/forms.js:757
msgid "Enter a valid number"
msgstr ""
-#: templates/js/translated/forms.js:1248 templates/modals.html:19
+#: templates/js/translated/forms.js:1249 templates/modals.html:19
#: templates/modals.html:43
msgid "Form errors exist"
msgstr ""
-#: templates/js/translated/forms.js:1681
+#: templates/js/translated/forms.js:1682
msgid "No results found"
msgstr ""
-#: templates/js/translated/forms.js:1896 templates/search.html:29
+#: templates/js/translated/forms.js:1897 templates/search.html:29
msgid "Searching"
msgstr ""
-#: templates/js/translated/forms.js:2149
+#: templates/js/translated/forms.js:2150
msgid "Clear input"
msgstr ""
-#: templates/js/translated/forms.js:2615
+#: templates/js/translated/forms.js:2616
msgid "File Column"
msgstr ""
-#: templates/js/translated/forms.js:2615
+#: templates/js/translated/forms.js:2616
msgid "Field Name"
msgstr ""
-#: templates/js/translated/forms.js:2627
+#: templates/js/translated/forms.js:2628
msgid "Select Columns"
msgstr ""
@@ -8498,7 +8491,7 @@ msgid "Labels sent to printer"
msgstr ""
#: templates/js/translated/label.js:60 templates/js/translated/report.js:118
-#: templates/js/translated/stock.js:1023
+#: templates/js/translated/stock.js:1022
msgid "Select Stock Items"
msgstr ""
@@ -8552,12 +8545,12 @@ msgid "Select Label Template"
msgstr ""
#: templates/js/translated/modals.js:82 templates/js/translated/modals.js:142
-#: templates/js/translated/modals.js:621
+#: templates/js/translated/modals.js:627
msgid "Cancel"
msgstr ""
#: templates/js/translated/modals.js:83 templates/js/translated/modals.js:141
-#: templates/js/translated/modals.js:688 templates/js/translated/modals.js:996
+#: templates/js/translated/modals.js:694 templates/js/translated/modals.js:1002
#: templates/modals.html:28 templates/modals.html:51
msgid "Submit"
msgstr ""
@@ -8566,47 +8559,47 @@ msgstr ""
msgid "Form Title"
msgstr ""
-#: templates/js/translated/modals.js:403
+#: templates/js/translated/modals.js:421
msgid "Waiting for server..."
msgstr ""
-#: templates/js/translated/modals.js:562
+#: templates/js/translated/modals.js:568
msgid "Show Error Information"
msgstr ""
-#: templates/js/translated/modals.js:620
+#: templates/js/translated/modals.js:626
msgid "Accept"
msgstr ""
-#: templates/js/translated/modals.js:677
+#: templates/js/translated/modals.js:683
msgid "Loading Data"
msgstr ""
-#: templates/js/translated/modals.js:948
+#: templates/js/translated/modals.js:954
msgid "Invalid response from server"
msgstr ""
-#: templates/js/translated/modals.js:948
+#: templates/js/translated/modals.js:954
msgid "Form data missing from server response"
msgstr ""
-#: templates/js/translated/modals.js:960
+#: templates/js/translated/modals.js:966
msgid "Error posting form data"
msgstr ""
-#: templates/js/translated/modals.js:1057
+#: templates/js/translated/modals.js:1063
msgid "JSON response missing form data"
msgstr ""
-#: templates/js/translated/modals.js:1072
+#: templates/js/translated/modals.js:1078
msgid "Error 400: Bad Request"
msgstr ""
-#: templates/js/translated/modals.js:1073
+#: templates/js/translated/modals.js:1079
msgid "Server returned error code 400"
msgstr ""
-#: templates/js/translated/modals.js:1096
+#: templates/js/translated/modals.js:1102
msgid "Error requesting form data"
msgstr ""
@@ -8656,11 +8649,11 @@ msgstr ""
msgid "Mark as read"
msgstr ""
-#: templates/js/translated/notification.js:259
+#: templates/js/translated/notification.js:260
msgid "No unread notifications"
msgstr ""
-#: templates/js/translated/notification.js:300 templates/notifications.html:10
+#: templates/js/translated/notification.js:302 templates/notifications.html:10
msgid "Notifications will load here"
msgstr ""
@@ -8804,7 +8797,7 @@ msgstr ""
msgid "Quantity to receive"
msgstr ""
-#: templates/js/translated/order.js:1225 templates/js/translated/stock.js:2080
+#: templates/js/translated/order.js:1225 templates/js/translated/stock.js:2090
msgid "Stock Status"
msgstr ""
@@ -8828,7 +8821,7 @@ msgstr ""
msgid "Receive Purchase Order Items"
msgstr ""
-#: templates/js/translated/order.js:1602 templates/js/translated/part.js:870
+#: templates/js/translated/order.js:1602 templates/js/translated/part.js:914
msgid "No purchase orders found"
msgstr ""
@@ -8863,7 +8856,7 @@ msgstr ""
#: templates/js/translated/order.js:1937 templates/js/translated/order.js:2139
#: templates/js/translated/order.js:3467 templates/js/translated/order.js:3978
-#: templates/js/translated/part.js:1948 templates/js/translated/part.js:2301
+#: templates/js/translated/part.js:2044 templates/js/translated/part.js:2397
msgid "Unit Price"
msgstr ""
@@ -8873,11 +8866,11 @@ msgid "Total Price"
msgstr ""
#: templates/js/translated/order.js:1993 templates/js/translated/order.js:3525
-#: templates/js/translated/part.js:979
+#: templates/js/translated/part.js:1023
msgid "This line item is overdue"
msgstr ""
-#: templates/js/translated/order.js:2052 templates/js/translated/part.js:1025
+#: templates/js/translated/order.js:2052 templates/js/translated/part.js:1069
msgid "Receive line item"
msgstr ""
@@ -8998,7 +8991,7 @@ msgid "Delete Stock Allocation"
msgstr ""
#: templates/js/translated/order.js:3243 templates/js/translated/order.js:3332
-#: templates/js/translated/stock.js:1535
+#: templates/js/translated/stock.js:1545
msgid "Shipped to customer"
msgstr ""
@@ -9138,165 +9131,209 @@ msgstr ""
msgid "Create Part Variant"
msgstr ""
+#: templates/js/translated/part.js:405
+msgid "Active Part"
+msgstr ""
+
+#: templates/js/translated/part.js:406
+msgid "Part cannot be deleted as it is currently active"
+msgstr ""
+
+#: templates/js/translated/part.js:420
+msgid "Deleting this part cannot be reversed"
+msgstr ""
+
+#: templates/js/translated/part.js:422
+msgid "Any stock items for this part will be deleted"
+msgstr ""
+
#: templates/js/translated/part.js:423
+msgid "This part will be removed from any Bills of Material"
+msgstr ""
+
+#: templates/js/translated/part.js:424
+msgid "All manufacturer and supplier information for this part will be deleted"
+msgstr ""
+
+#: templates/js/translated/part.js:431
+msgid "Delete Part"
+msgstr ""
+
+#: templates/js/translated/part.js:467
msgid "You are subscribed to notifications for this item"
msgstr ""
-#: templates/js/translated/part.js:425
+#: templates/js/translated/part.js:469
msgid "You have subscribed to notifications for this item"
msgstr ""
-#: templates/js/translated/part.js:430
+#: templates/js/translated/part.js:474
msgid "Subscribe to notifications for this item"
msgstr ""
-#: templates/js/translated/part.js:432
+#: templates/js/translated/part.js:476
msgid "You have unsubscribed to notifications for this item"
msgstr ""
-#: templates/js/translated/part.js:449
+#: templates/js/translated/part.js:493
msgid "Validating the BOM will mark each line item as valid"
msgstr ""
-#: templates/js/translated/part.js:459
+#: templates/js/translated/part.js:503
msgid "Validate Bill of Materials"
msgstr ""
-#: templates/js/translated/part.js:462
+#: templates/js/translated/part.js:506
msgid "Validated Bill of Materials"
msgstr ""
-#: templates/js/translated/part.js:487
+#: templates/js/translated/part.js:531
msgid "Copy Bill of Materials"
msgstr ""
-#: templates/js/translated/part.js:513 templates/js/translated/part.js:1397
+#: templates/js/translated/part.js:557 templates/js/translated/part.js:1441
#: templates/js/translated/table_filters.js:452
msgid "Low stock"
msgstr ""
-#: templates/js/translated/part.js:523 templates/js/translated/part.js:1409
+#: templates/js/translated/part.js:567 templates/js/translated/part.js:1453
msgid "No stock available"
msgstr ""
-#: templates/js/translated/part.js:557 templates/js/translated/part.js:642
+#: templates/js/translated/part.js:601 templates/js/translated/part.js:686
msgid "Trackable part"
msgstr ""
-#: templates/js/translated/part.js:561 templates/js/translated/part.js:646
+#: templates/js/translated/part.js:605 templates/js/translated/part.js:690
msgid "Virtual part"
msgstr ""
-#: templates/js/translated/part.js:573
+#: templates/js/translated/part.js:617
msgid "Subscribed part"
msgstr ""
-#: templates/js/translated/part.js:577
+#: templates/js/translated/part.js:621
msgid "Salable part"
msgstr ""
-#: templates/js/translated/part.js:705
+#: templates/js/translated/part.js:749
msgid "No variants found"
msgstr ""
-#: templates/js/translated/part.js:1095
+#: templates/js/translated/part.js:1139
msgid "Delete part relationship"
msgstr ""
-#: templates/js/translated/part.js:1119
+#: templates/js/translated/part.js:1163
msgid "Delete Part Relationship"
msgstr ""
-#: templates/js/translated/part.js:1184 templates/js/translated/part.js:1480
+#: templates/js/translated/part.js:1228 templates/js/translated/part.js:1524
msgid "No parts found"
msgstr ""
-#: templates/js/translated/part.js:1223
+#: templates/js/translated/part.js:1267
msgid "Not available"
msgstr ""
-#: templates/js/translated/part.js:1374
+#: templates/js/translated/part.js:1418
msgid "No category"
msgstr ""
-#: templates/js/translated/part.js:1504 templates/js/translated/part.js:1664
-#: templates/js/translated/stock.js:2238
+#: templates/js/translated/part.js:1548 templates/js/translated/part.js:1760
+#: templates/js/translated/stock.js:2248
msgid "Display as list"
msgstr ""
-#: templates/js/translated/part.js:1520
+#: templates/js/translated/part.js:1564
msgid "Display as grid"
msgstr ""
-#: templates/js/translated/part.js:1683 templates/js/translated/stock.js:2257
+#: templates/js/translated/part.js:1630
+msgid "Set the part category for the selected parts"
+msgstr ""
+
+#: templates/js/translated/part.js:1635
+msgid "Set Part Category"
+msgstr ""
+
+#: templates/js/translated/part.js:1640
+msgid "Select Part Category"
+msgstr ""
+
+#: templates/js/translated/part.js:1653
+msgid "Category is required"
+msgstr ""
+
+#: templates/js/translated/part.js:1779 templates/js/translated/stock.js:2267
msgid "Display as tree"
msgstr ""
-#: templates/js/translated/part.js:1747
+#: templates/js/translated/part.js:1843
msgid "Subscribed category"
msgstr ""
-#: templates/js/translated/part.js:1761 templates/js/translated/stock.js:2301
+#: templates/js/translated/part.js:1857 templates/js/translated/stock.js:2311
msgid "Path"
msgstr ""
-#: templates/js/translated/part.js:1805
+#: templates/js/translated/part.js:1901
msgid "No test templates matching query"
msgstr ""
-#: templates/js/translated/part.js:1856 templates/js/translated/stock.js:1233
+#: templates/js/translated/part.js:1952 templates/js/translated/stock.js:1243
msgid "Edit test result"
msgstr ""
-#: templates/js/translated/part.js:1857 templates/js/translated/stock.js:1234
-#: templates/js/translated/stock.js:1493
+#: templates/js/translated/part.js:1953 templates/js/translated/stock.js:1244
+#: templates/js/translated/stock.js:1503
msgid "Delete test result"
msgstr ""
-#: templates/js/translated/part.js:1863
+#: templates/js/translated/part.js:1959
msgid "This test is defined for a parent part"
msgstr ""
-#: templates/js/translated/part.js:1885
+#: templates/js/translated/part.js:1981
msgid "Edit Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:1899
+#: templates/js/translated/part.js:1995
msgid "Delete Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:1924
+#: templates/js/translated/part.js:2020
#, python-brace-format
msgid "No ${human_name} information found"
msgstr ""
-#: templates/js/translated/part.js:1981
+#: templates/js/translated/part.js:2077
#, python-brace-format
msgid "Edit ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:1982
+#: templates/js/translated/part.js:2078
#, python-brace-format
msgid "Delete ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:2096
+#: templates/js/translated/part.js:2192
msgid "Current Stock"
msgstr ""
-#: templates/js/translated/part.js:2129
+#: templates/js/translated/part.js:2225
msgid "No scheduling information available for this part"
msgstr ""
-#: templates/js/translated/part.js:2155
+#: templates/js/translated/part.js:2251
msgid "Scheduled Stock Quantities"
msgstr ""
-#: templates/js/translated/part.js:2225
+#: templates/js/translated/part.js:2321
msgid "Single Price"
msgstr ""
-#: templates/js/translated/part.js:2244
+#: templates/js/translated/part.js:2340
msgid "Single Price Difference"
msgstr ""
@@ -9378,360 +9415,360 @@ msgstr ""
msgid "Remove results"
msgstr ""
-#: templates/js/translated/stock.js:73
+#: templates/js/translated/stock.js:72
msgid "Serialize Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:101
+#: templates/js/translated/stock.js:100
msgid "Confirm Stock Serialization"
msgstr ""
-#: templates/js/translated/stock.js:110
+#: templates/js/translated/stock.js:109
msgid "Parent stock location"
msgstr ""
-#: templates/js/translated/stock.js:139
+#: templates/js/translated/stock.js:138
msgid "Edit Stock Location"
msgstr ""
-#: templates/js/translated/stock.js:154
+#: templates/js/translated/stock.js:153
msgid "New Stock Location"
msgstr ""
-#: templates/js/translated/stock.js:194
+#: templates/js/translated/stock.js:193
msgid "This part cannot be serialized"
msgstr ""
-#: templates/js/translated/stock.js:233
+#: templates/js/translated/stock.js:232
msgid "Enter initial quantity for this stock item"
msgstr ""
-#: templates/js/translated/stock.js:239
+#: templates/js/translated/stock.js:238
msgid "Enter serial numbers for new stock (or leave blank)"
msgstr ""
-#: templates/js/translated/stock.js:304
+#: templates/js/translated/stock.js:303
msgid "Stock item duplicated"
msgstr ""
-#: templates/js/translated/stock.js:324
+#: templates/js/translated/stock.js:323
msgid "Duplicate Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:344
+#: templates/js/translated/stock.js:343
msgid "Edit Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:394
+#: templates/js/translated/stock.js:393
msgid "Created new stock item"
msgstr ""
-#: templates/js/translated/stock.js:407
+#: templates/js/translated/stock.js:406
msgid "Created multiple stock items"
msgstr ""
-#: templates/js/translated/stock.js:432
+#: templates/js/translated/stock.js:431
msgid "Find Serial Number"
msgstr ""
-#: templates/js/translated/stock.js:436 templates/js/translated/stock.js:437
+#: templates/js/translated/stock.js:435 templates/js/translated/stock.js:436
msgid "Enter serial number"
msgstr ""
-#: templates/js/translated/stock.js:453
+#: templates/js/translated/stock.js:452
msgid "Enter a serial number"
msgstr ""
-#: templates/js/translated/stock.js:473
+#: templates/js/translated/stock.js:472
msgid "No matching serial number"
msgstr ""
-#: templates/js/translated/stock.js:482
+#: templates/js/translated/stock.js:481
msgid "More than one matching result found"
msgstr ""
-#: templates/js/translated/stock.js:605
+#: templates/js/translated/stock.js:604
msgid "Confirm stock assignment"
msgstr ""
-#: templates/js/translated/stock.js:606
+#: templates/js/translated/stock.js:605
msgid "Assign Stock to Customer"
msgstr ""
-#: templates/js/translated/stock.js:683
+#: templates/js/translated/stock.js:682
msgid "Warning: Merge operation cannot be reversed"
msgstr ""
-#: templates/js/translated/stock.js:684
+#: templates/js/translated/stock.js:683
msgid "Some information will be lost when merging stock items"
msgstr ""
-#: templates/js/translated/stock.js:686
+#: templates/js/translated/stock.js:685
msgid "Stock transaction history will be deleted for merged items"
msgstr ""
-#: templates/js/translated/stock.js:687
+#: templates/js/translated/stock.js:686
msgid "Supplier part information will be deleted for merged items"
msgstr ""
-#: templates/js/translated/stock.js:773
+#: templates/js/translated/stock.js:772
msgid "Confirm stock item merge"
msgstr ""
-#: templates/js/translated/stock.js:774
+#: templates/js/translated/stock.js:773
msgid "Merge Stock Items"
msgstr ""
-#: templates/js/translated/stock.js:869
+#: templates/js/translated/stock.js:868
msgid "Transfer Stock"
msgstr ""
-#: templates/js/translated/stock.js:870
+#: templates/js/translated/stock.js:869
msgid "Move"
msgstr ""
-#: templates/js/translated/stock.js:876
+#: templates/js/translated/stock.js:875
msgid "Count Stock"
msgstr ""
-#: templates/js/translated/stock.js:877
+#: templates/js/translated/stock.js:876
msgid "Count"
msgstr ""
-#: templates/js/translated/stock.js:881
+#: templates/js/translated/stock.js:880
msgid "Remove Stock"
msgstr ""
-#: templates/js/translated/stock.js:882
+#: templates/js/translated/stock.js:881
msgid "Take"
msgstr ""
-#: templates/js/translated/stock.js:886
+#: templates/js/translated/stock.js:885
msgid "Add Stock"
msgstr ""
-#: templates/js/translated/stock.js:887 users/models.py:215
+#: templates/js/translated/stock.js:886 users/models.py:215
msgid "Add"
msgstr ""
-#: templates/js/translated/stock.js:891
+#: templates/js/translated/stock.js:890
msgid "Delete Stock"
msgstr ""
-#: templates/js/translated/stock.js:984
+#: templates/js/translated/stock.js:983
msgid "Quantity cannot be adjusted for serialized stock"
msgstr ""
-#: templates/js/translated/stock.js:984
+#: templates/js/translated/stock.js:983
msgid "Specify stock quantity"
msgstr ""
-#: templates/js/translated/stock.js:1024
+#: templates/js/translated/stock.js:1023
msgid "You must select at least one available stock item"
msgstr ""
-#: templates/js/translated/stock.js:1047
+#: templates/js/translated/stock.js:1046
msgid "Confirm stock adjustment"
msgstr ""
-#: templates/js/translated/stock.js:1172
+#: templates/js/translated/stock.js:1182
msgid "PASS"
msgstr ""
-#: templates/js/translated/stock.js:1174
+#: templates/js/translated/stock.js:1184
msgid "FAIL"
msgstr ""
-#: templates/js/translated/stock.js:1179
+#: templates/js/translated/stock.js:1189
msgid "NO RESULT"
msgstr ""
-#: templates/js/translated/stock.js:1226
+#: templates/js/translated/stock.js:1236
msgid "Pass test"
msgstr ""
-#: templates/js/translated/stock.js:1229
+#: templates/js/translated/stock.js:1239
msgid "Add test result"
msgstr ""
-#: templates/js/translated/stock.js:1255
+#: templates/js/translated/stock.js:1265
msgid "No test results found"
msgstr ""
-#: templates/js/translated/stock.js:1311
+#: templates/js/translated/stock.js:1321
msgid "Test Date"
msgstr ""
-#: templates/js/translated/stock.js:1476
+#: templates/js/translated/stock.js:1486
msgid "Edit Test Result"
msgstr ""
-#: templates/js/translated/stock.js:1498
+#: templates/js/translated/stock.js:1508
msgid "Delete Test Result"
msgstr ""
-#: templates/js/translated/stock.js:1527
+#: templates/js/translated/stock.js:1537
msgid "In production"
msgstr ""
-#: templates/js/translated/stock.js:1531
+#: templates/js/translated/stock.js:1541
msgid "Installed in Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:1539
+#: templates/js/translated/stock.js:1549
msgid "Assigned to Sales Order"
msgstr ""
-#: templates/js/translated/stock.js:1545
+#: templates/js/translated/stock.js:1555
msgid "No stock location set"
msgstr ""
-#: templates/js/translated/stock.js:1712
+#: templates/js/translated/stock.js:1722
msgid "Stock item is in production"
msgstr ""
-#: templates/js/translated/stock.js:1717
+#: templates/js/translated/stock.js:1727
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:1720
+#: templates/js/translated/stock.js:1730
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:1723
+#: templates/js/translated/stock.js:1733
msgid "Serialized stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:1725
+#: templates/js/translated/stock.js:1735
msgid "Stock item has been fully allocated"
msgstr ""
-#: templates/js/translated/stock.js:1727
+#: templates/js/translated/stock.js:1737
msgid "Stock item has been partially allocated"
msgstr ""
-#: templates/js/translated/stock.js:1730
+#: templates/js/translated/stock.js:1740
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:1734
+#: templates/js/translated/stock.js:1744
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:1736
+#: templates/js/translated/stock.js:1746
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:1743
+#: templates/js/translated/stock.js:1753
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:1745
+#: templates/js/translated/stock.js:1755
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:1747
+#: templates/js/translated/stock.js:1757
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:1751
+#: templates/js/translated/stock.js:1761
#: templates/js/translated/table_filters.js:188
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:1802
+#: templates/js/translated/stock.js:1812
msgid "Stocktake"
msgstr ""
-#: templates/js/translated/stock.js:1884
+#: templates/js/translated/stock.js:1894
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:1922
+#: templates/js/translated/stock.js:1932
msgid "No stock items matching query"
msgstr ""
-#: templates/js/translated/stock.js:2095
+#: templates/js/translated/stock.js:2105
msgid "Set Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:2109
+#: templates/js/translated/stock.js:2119
msgid "Select Status Code"
msgstr ""
-#: templates/js/translated/stock.js:2110
+#: templates/js/translated/stock.js:2120
msgid "Status code must be selected"
msgstr ""
-#: templates/js/translated/stock.js:2365
+#: templates/js/translated/stock.js:2375
msgid "Details"
msgstr ""
-#: templates/js/translated/stock.js:2381
+#: templates/js/translated/stock.js:2391
msgid "Part information unavailable"
msgstr ""
-#: templates/js/translated/stock.js:2403
+#: templates/js/translated/stock.js:2413
msgid "Location no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2422
+#: templates/js/translated/stock.js:2432
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2441
+#: templates/js/translated/stock.js:2451
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2459
+#: templates/js/translated/stock.js:2469
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2482
+#: templates/js/translated/stock.js:2492
msgid "Added"
msgstr ""
-#: templates/js/translated/stock.js:2490
+#: templates/js/translated/stock.js:2500
msgid "Removed"
msgstr ""
-#: templates/js/translated/stock.js:2566
+#: templates/js/translated/stock.js:2576
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:2617 templates/js/translated/stock.js:2653
+#: templates/js/translated/stock.js:2627 templates/js/translated/stock.js:2663
msgid "Uninstall Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:2666
+#: templates/js/translated/stock.js:2676
msgid "Select stock item to uninstall"
msgstr ""
-#: templates/js/translated/stock.js:2687
+#: templates/js/translated/stock.js:2697
msgid "Install another stock item into this item"
msgstr ""
-#: templates/js/translated/stock.js:2688
+#: templates/js/translated/stock.js:2698
msgid "Stock items can only be installed if they meet the following criteria"
msgstr ""
-#: templates/js/translated/stock.js:2690
+#: templates/js/translated/stock.js:2700
msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:2691
+#: templates/js/translated/stock.js:2701
msgid "The Stock Item is currently available in stock"
msgstr ""
-#: templates/js/translated/stock.js:2692
+#: templates/js/translated/stock.js:2702
msgid "The Stock Item is not already installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:2693
+#: templates/js/translated/stock.js:2703
msgid "The Stock Item is tracked by either a batch code or serial number"
msgstr ""
-#: templates/js/translated/stock.js:2706
+#: templates/js/translated/stock.js:2716
msgid "Select part to install"
msgstr ""
diff --git a/InvenTree/locale/de/LC_MESSAGES/django.po b/InvenTree/locale/de/LC_MESSAGES/django.po
index 0b34bff57e..5b919f08d1 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: 2022-06-05 14:26+0000\n"
-"PO-Revision-Date: 2022-06-05 14:34\n"
+"POT-Creation-Date: 2022-06-06 22:59+0000\n"
+"PO-Revision-Date: 2022-06-07 14:34\n"
"Last-Translator: \n"
"Language-Team: German\n"
"Language: de_DE\n"
@@ -17,7 +17,7 @@ msgstr ""
"X-Crowdin-File: /[inventree.InvenTree] l10/InvenTree/locale/en/LC_MESSAGES/django.po\n"
"X-Crowdin-File-ID: 154\n"
-#: InvenTree/api.py:46
+#: InvenTree/api.py:49
msgid "API endpoint not found"
msgstr "API-Endpunkt nicht gefunden"
@@ -29,275 +29,273 @@ msgstr "Fehlerdetails finden Sie im Admin-Panel"
msgid "Enter date"
msgstr "Datum eingeben"
-#: InvenTree/forms.py:117 templates/account/email_confirm.html:20
-#: templates/js/translated/forms.js:630
-msgid "Confirm"
-msgstr "Bestätigen"
-
-#: InvenTree/forms.py:134
+#: InvenTree/forms.py:117
msgid "Confirm delete"
msgstr "Löschung bestätigen"
-#: InvenTree/forms.py:135
+#: InvenTree/forms.py:118
msgid "Confirm item deletion"
msgstr "Löschung von Position bestätigen"
-#: InvenTree/forms.py:167
+#: InvenTree/forms.py:150
msgid "Enter password"
msgstr "Passwort eingeben"
-#: InvenTree/forms.py:168
+#: InvenTree/forms.py:151
msgid "Enter new password"
msgstr "Neues Passwort eingeben"
-#: InvenTree/forms.py:175
+#: InvenTree/forms.py:158
msgid "Confirm password"
msgstr "Passwort wiederholen"
-#: InvenTree/forms.py:176
+#: InvenTree/forms.py:159
msgid "Confirm new password"
msgstr "Neues Passwort bestätigen"
-#: InvenTree/forms.py:213
-msgid "Select Category"
-msgstr "Kategorie auswählen"
-
-#: InvenTree/forms.py:234
+#: InvenTree/forms.py:184
msgid "Email (again)"
msgstr "E-Mail (nochmal)"
-#: InvenTree/forms.py:238
+#: InvenTree/forms.py:188
msgid "Email address confirmation"
msgstr "Bestätigung der E-Mail Adresse"
-#: InvenTree/forms.py:259
+#: InvenTree/forms.py:209
msgid "You must type the same email each time."
msgstr "E-Mail Adressen müssen übereinstimmen."
-#: InvenTree/helpers.py:402
+#: InvenTree/helpers.py:404
#, python-brace-format
msgid "Duplicate serial: {sn}"
msgstr "Doppelte Seriennummer: {sn}"
-#: InvenTree/helpers.py:409 order/models.py:365 order/models.py:517
+#: InvenTree/helpers.py:411 order/models.py:370 order/models.py:522
msgid "Invalid quantity provided"
msgstr "Keine gültige Menge"
-#: InvenTree/helpers.py:412
+#: InvenTree/helpers.py:414
msgid "Empty serial number string"
msgstr "Keine Seriennummer angegeben"
-#: InvenTree/helpers.py:444
+#: InvenTree/helpers.py:446
#, python-brace-format
msgid "Invalid group range: {g}"
msgstr "Ungültiger Gruppenbereich: {g}"
-#: InvenTree/helpers.py:447
+#: InvenTree/helpers.py:449
#, python-brace-format
msgid "Invalid group: {g}"
msgstr "Ungültige Gruppe: {g}"
-#: InvenTree/helpers.py:475
+#: InvenTree/helpers.py:477
#, python-brace-format
msgid "Invalid group sequence: {g}"
msgstr "Ungültige Gruppensequenz: {g}"
-#: InvenTree/helpers.py:483
+#: InvenTree/helpers.py:485
#, python-brace-format
msgid "Invalid/no group {group}"
msgstr "Ungültige/Keine Gruppe {group}"
-#: InvenTree/helpers.py:489
+#: InvenTree/helpers.py:491
msgid "No serial numbers found"
msgstr "Keine Seriennummern gefunden"
-#: InvenTree/helpers.py:493
+#: InvenTree/helpers.py:495
#, python-brace-format
msgid "Number of unique serial numbers ({s}) must match quantity ({q})"
msgstr "Anzahl der eindeutigen Seriennummern ({s}) muss mit der Anzahl ({q}) übereinstimmen"
-#: InvenTree/models.py:174
+#: InvenTree/models.py:178
msgid "Missing file"
msgstr "Fehlende Datei"
-#: InvenTree/models.py:175
+#: InvenTree/models.py:179
msgid "Missing external link"
msgstr "Fehlender externer Link"
-#: InvenTree/models.py:187 stock/models.py:2087
-#: templates/js/translated/attachment.js:101
-#: templates/js/translated/attachment.js:198
+#: InvenTree/models.py:191 stock/models.py:2091
+#: templates/js/translated/attachment.js:103
+#: templates/js/translated/attachment.js:194
msgid "Attachment"
msgstr "Anhang"
-#: InvenTree/models.py:188
+#: InvenTree/models.py:192
msgid "Select file to attach"
msgstr "Datei zum Anhängen auswählen"
-#: InvenTree/models.py:194 company/models.py:123 company/models.py:272
-#: company/models.py:506 order/models.py:135 order/models.py:1235
+#: InvenTree/models.py:198 company/models.py:123 company/models.py:272
+#: company/models.py:506 order/models.py:136 order/models.py:1251
#: part/models.py:795
#: report/templates/report/inventree_build_order_base.html:165
-#: templates/js/translated/company.js:655
-#: templates/js/translated/company.js:946 templates/js/translated/order.js:2676
-#: templates/js/translated/part.js:1441
+#: templates/js/translated/company.js:640
+#: templates/js/translated/company.js:931 templates/js/translated/order.js:2676
+#: templates/js/translated/part.js:1485
msgid "Link"
msgstr "Link"
-#: InvenTree/models.py:195 build/models.py:320 part/models.py:796
+#: InvenTree/models.py:199 build/models.py:320 part/models.py:796
#: stock/models.py:642
msgid "Link to external URL"
msgstr "Link zu einer externen URL"
-#: InvenTree/models.py:198 templates/js/translated/attachment.js:102
-#: templates/js/translated/attachment.js:242
+#: InvenTree/models.py:202 templates/js/translated/attachment.js:104
+#: templates/js/translated/attachment.js:238
msgid "Comment"
msgstr "Kommentar"
-#: InvenTree/models.py:198
+#: InvenTree/models.py:202
msgid "File comment"
msgstr "Datei-Kommentar"
-#: InvenTree/models.py:204 InvenTree/models.py:205 common/models.py:1499
-#: common/models.py:1500 common/models.py:1728 common/models.py:1729
-#: common/models.py:1991 common/models.py:1992 part/models.py:2153
-#: part/models.py:2173 plugin/models.py:238 plugin/models.py:239
+#: InvenTree/models.py:208 InvenTree/models.py:209 common/models.py:1506
+#: common/models.py:1507 common/models.py:1735 common/models.py:1736
+#: common/models.py:1998 common/models.py:1999 part/models.py:2141
+#: part/models.py:2161 plugin/models.py:238 plugin/models.py:239
#: report/templates/report/inventree_test_report_base.html:96
-#: templates/js/translated/stock.js:2513
+#: templates/js/translated/stock.js:2523
msgid "User"
msgstr "Benutzer"
-#: InvenTree/models.py:208
+#: InvenTree/models.py:212
msgid "upload date"
msgstr "Hochladedatum"
-#: InvenTree/models.py:230
+#: InvenTree/models.py:234
msgid "Filename must not be empty"
msgstr "Dateiname darf nicht leer sein"
-#: InvenTree/models.py:253
+#: InvenTree/models.py:257
msgid "Invalid attachment directory"
msgstr "Ungültiges Verzeichnis für Anhang"
-#: InvenTree/models.py:263
+#: InvenTree/models.py:267
#, python-brace-format
msgid "Filename contains illegal character '{c}'"
msgstr "Dateiname enthält ungültiges Zeichen '{c}'"
-#: InvenTree/models.py:266
+#: InvenTree/models.py:270
msgid "Filename missing extension"
msgstr "Dateiendung fehlt"
-#: InvenTree/models.py:273
+#: InvenTree/models.py:277
msgid "Attachment with this filename already exists"
msgstr "Anhang mit diesem Dateinamen bereits vorhanden"
-#: InvenTree/models.py:280
+#: InvenTree/models.py:284
msgid "Error renaming file"
msgstr "Fehler beim Umbenennen"
-#: InvenTree/models.py:314
+#: InvenTree/models.py:318
msgid "Invalid choice"
msgstr "Ungültige Auswahl"
-#: InvenTree/models.py:333 InvenTree/models.py:334 common/models.py:1714
+#: InvenTree/models.py:337 InvenTree/models.py:338 common/models.py:1721
#: company/models.py:354 label/models.py:101 part/models.py:739
-#: part/models.py:2331 plugin/models.py:93 report/models.py:151
+#: part/models.py:2319 plugin/models.py:93 report/models.py:151
#: templates/InvenTree/notifications/notifications.html:84
#: templates/InvenTree/settings/mixins/urls.html:13
#: templates/InvenTree/settings/plugin.html:49
#: templates/InvenTree/settings/plugin.html:132
#: templates/InvenTree/settings/plugin_settings.html:23
#: templates/InvenTree/settings/settings.html:346
-#: templates/js/translated/company.js:539
-#: templates/js/translated/company.js:757 templates/js/translated/part.js:615
-#: templates/js/translated/part.js:767 templates/js/translated/part.js:1736
-#: templates/js/translated/stock.js:2283
+#: templates/js/translated/company.js:530
+#: templates/js/translated/company.js:742 templates/js/translated/part.js:659
+#: templates/js/translated/part.js:811 templates/js/translated/part.js:1832
+#: templates/js/translated/stock.js:2293
msgid "Name"
msgstr "Name"
-#: InvenTree/models.py:340 build/models.py:197
+#: InvenTree/models.py:344 build/models.py:197
#: build/templates/build/detail.html:24 company/models.py:278
#: company/models.py:512 company/templates/company/company_base.html:71
#: company/templates/company/manufacturer_part.html:75
#: company/templates/company/supplier_part.html:73 label/models.py:108
-#: order/models.py:133 part/models.py:762 part/templates/part/category.html:74
-#: part/templates/part/part_base.html:167
-#: part/templates/part/set_category.html:14 report/models.py:164
+#: order/models.py:134 part/models.py:762 part/templates/part/category.html:74
+#: part/templates/part/part_base.html:167 report/models.py:164
#: report/models.py:509 report/models.py:550
#: report/templates/report/inventree_build_order_base.html:118
#: stock/templates/stock/location.html:103
#: templates/InvenTree/settings/plugin_settings.html:33
-#: templates/js/translated/bom.js:553 templates/js/translated/bom.js:851
-#: templates/js/translated/build.js:2476 templates/js/translated/company.js:401
-#: templates/js/translated/company.js:666
-#: templates/js/translated/company.js:957 templates/js/translated/order.js:1656
+#: templates/js/translated/bom.js:553 templates/js/translated/bom.js:845
+#: templates/js/translated/build.js:2476 templates/js/translated/company.js:395
+#: templates/js/translated/company.js:651
+#: templates/js/translated/company.js:942 templates/js/translated/order.js:1656
#: templates/js/translated/order.js:1888 templates/js/translated/order.js:2476
-#: templates/js/translated/part.js:674 templates/js/translated/part.js:1082
-#: templates/js/translated/part.js:1355 templates/js/translated/part.js:1755
-#: templates/js/translated/part.js:1824 templates/js/translated/stock.js:1676
-#: templates/js/translated/stock.js:2295 templates/js/translated/stock.js:2350
+#: templates/js/translated/part.js:718 templates/js/translated/part.js:1126
+#: templates/js/translated/part.js:1399 templates/js/translated/part.js:1851
+#: templates/js/translated/part.js:1920 templates/js/translated/stock.js:1686
+#: templates/js/translated/stock.js:2305 templates/js/translated/stock.js:2360
msgid "Description"
msgstr "Beschreibung"
-#: InvenTree/models.py:341
+#: InvenTree/models.py:345
msgid "Description (optional)"
msgstr "Beschreibung (optional)"
-#: InvenTree/models.py:349
+#: InvenTree/models.py:353
msgid "parent"
msgstr "Eltern"
-#: InvenTree/serializers.py:52 part/models.py:2652
+#: InvenTree/models.py:466
+msgid "Server Error"
+msgstr ""
+
+#: InvenTree/models.py:467
+msgid "An error has been logged by the server."
+msgstr ""
+
+#: InvenTree/serializers.py:52 part/models.py:2640
msgid "Must be a valid number"
msgstr "Muss eine gültige Nummer sein"
-#: InvenTree/serializers.py:271
+#: InvenTree/serializers.py:263
msgid "Filename"
msgstr "Dateiname"
-#: InvenTree/serializers.py:306
+#: InvenTree/serializers.py:298
msgid "Invalid value"
msgstr "Ungültiger Wert"
-#: InvenTree/serializers.py:328
+#: InvenTree/serializers.py:320
msgid "Data File"
msgstr "Datendatei"
-#: InvenTree/serializers.py:329
+#: InvenTree/serializers.py:321
msgid "Select data file for upload"
msgstr "Neue Datei zum Hochladen auswählen"
-#: InvenTree/serializers.py:350
+#: InvenTree/serializers.py:342
msgid "Unsupported file type"
msgstr "Nicht unterstütztes Dateiformat"
-#: InvenTree/serializers.py:356
+#: InvenTree/serializers.py:348
msgid "File is too large"
msgstr "Datei ist zu groß"
-#: InvenTree/serializers.py:377
+#: InvenTree/serializers.py:369
msgid "No columns found in file"
msgstr "Keine Spalten in der Datei gefunden"
-#: InvenTree/serializers.py:380
+#: InvenTree/serializers.py:372
msgid "No data rows found in file"
msgstr "Keine Datensätze in der Datei gefunden"
-#: InvenTree/serializers.py:503
+#: InvenTree/serializers.py:495
msgid "No data rows provided"
msgstr "Keine Zeilen ausgewählt"
-#: InvenTree/serializers.py:506
+#: InvenTree/serializers.py:498
msgid "No data columns supplied"
msgstr "Keine Spalten angegeben"
-#: InvenTree/serializers.py:583
+#: InvenTree/serializers.py:575
#, python-brace-format
msgid "Missing required column: '{name}'"
msgstr "Erforderliche Spalte '{name}' fehlt"
-#: InvenTree/serializers.py:592
+#: InvenTree/serializers.py:584
#, python-brace-format
msgid "Duplicate column: '{col}'"
msgstr "Doppelte Spalte: '{col}'"
@@ -440,7 +438,7 @@ msgstr "Verloren"
msgid "Returned"
msgstr "Zurückgegeben"
-#: InvenTree/status_codes.py:141 order/models.py:1114
+#: InvenTree/status_codes.py:141 order/models.py:1130
#: templates/js/translated/order.js:3264 templates/js/translated/order.js:3607
msgid "Shipped"
msgstr "Versendet"
@@ -525,7 +523,7 @@ msgstr "Vom übergeordneten Element geteilt"
msgid "Split child item"
msgstr "Unterobjekt geteilt"
-#: InvenTree/status_codes.py:281 templates/js/translated/stock.js:2020
+#: InvenTree/status_codes.py:281 templates/js/translated/stock.js:2030
msgid "Merged stock items"
msgstr "Lagerartikel zusammengeführt"
@@ -597,27 +595,27 @@ msgstr "Überschuss darf 100% nicht überschreiten"
msgid "Invalid value for overage"
msgstr "Ungültiger Wert für Ausschuss"
-#: InvenTree/views.py:522
+#: InvenTree/views.py:521
msgid "Delete Item"
msgstr "Element löschen"
-#: InvenTree/views.py:571
+#: InvenTree/views.py:570
msgid "Check box to confirm item deletion"
msgstr "Häkchen setzen um Löschung von Objekt zu bestätigen"
-#: InvenTree/views.py:586 templates/InvenTree/settings/user.html:22
+#: InvenTree/views.py:585 templates/InvenTree/settings/user.html:22
msgid "Edit User Information"
msgstr "Benutzerinformationen bearbeiten"
-#: InvenTree/views.py:598 templates/InvenTree/settings/user.html:19
+#: InvenTree/views.py:597 templates/InvenTree/settings/user.html:19
msgid "Set Password"
msgstr "Passwort eingeben"
-#: InvenTree/views.py:618
+#: InvenTree/views.py:617
msgid "Password fields must match"
msgstr "Passwörter stimmen nicht überein"
-#: InvenTree/views.py:842 templates/navbar.html:152
+#: InvenTree/views.py:807 templates/navbar.html:152
msgid "System Information"
msgstr "Systeminformationen"
@@ -628,6 +626,7 @@ msgstr "Ungültige Wahl für übergeordneten Bauauftrag"
#: build/models.py:131 build/templates/build/build_base.html:9
#: build/templates/build/build_base.html:27
#: report/templates/report/inventree_build_order_base.html:106
+#: templates/email/overdue_build_order.html:15
#: templates/js/translated/build.js:727
msgid "Build Order"
msgstr "Bauauftrag"
@@ -646,12 +645,12 @@ msgstr "Bauaufträge"
msgid "Build Order Reference"
msgstr "Bauauftragsreferenz"
-#: build/models.py:189 order/models.py:288 order/models.py:638
-#: order/models.py:916 part/models.py:2570
+#: build/models.py:189 order/models.py:293 order/models.py:654
+#: order/models.py:932 part/models.py:2558
#: part/templates/part/upload_bom.html:54
#: report/templates/report/inventree_po_report.html:91
#: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:688 templates/js/translated/bom.js:858
+#: templates/js/translated/bom.js:690 templates/js/translated/bom.js:852
#: templates/js/translated/build.js:1777 templates/js/translated/order.js:1919
#: templates/js/translated/order.js:2120 templates/js/translated/order.js:3448
#: templates/js/translated/order.js:3959
@@ -673,13 +672,12 @@ msgstr "Bauauftrag, zu dem dieser Bauauftrag zugwiesen ist"
#: build/models.py:215 build/templates/build/build_base.html:77
#: build/templates/build/detail.html:29 company/models.py:647
-#: order/models.py:1012 order/models.py:1103 part/models.py:336
-#: part/models.py:2099 part/models.py:2114 part/models.py:2133
-#: part/models.py:2151 part/models.py:2250 part/models.py:2370
-#: part/models.py:2460 part/models.py:2545 part/models.py:2821
-#: part/serializers.py:793 part/templates/part/part_app_base.html:8
+#: order/models.py:1028 order/models.py:1119 part/models.py:336
+#: part/models.py:2087 part/models.py:2102 part/models.py:2121
+#: part/models.py:2139 part/models.py:2238 part/models.py:2358
+#: part/models.py:2448 part/models.py:2533 part/models.py:2809
+#: part/serializers.py:795 part/templates/part/part_app_base.html:8
#: part/templates/part/part_pricing.html:12
-#: part/templates/part/set_category.html:13
#: part/templates/part/upload_bom.html:52
#: report/templates/report/inventree_build_order_base.html:110
#: report/templates/report/inventree_po_report.html:89
@@ -687,22 +685,23 @@ msgstr "Bauauftrag, zu dem dieser Bauauftrag zugwiesen ist"
#: templates/InvenTree/search.html:80
#: templates/email/build_order_required_stock.html:17
#: templates/email/low_stock_notification.html:16
+#: templates/email/overdue_build_order.html:16
#: templates/js/translated/barcode.js:435 templates/js/translated/bom.js:552
-#: templates/js/translated/bom.js:687 templates/js/translated/bom.js:805
+#: templates/js/translated/bom.js:689 templates/js/translated/bom.js:799
#: templates/js/translated/build.js:1153 templates/js/translated/build.js:1647
#: templates/js/translated/build.js:2083 templates/js/translated/build.js:2481
-#: templates/js/translated/company.js:252
-#: templates/js/translated/company.js:486
-#: templates/js/translated/company.js:607
-#: templates/js/translated/company.js:866 templates/js/translated/order.js:100
+#: templates/js/translated/company.js:253
+#: templates/js/translated/company.js:482
+#: templates/js/translated/company.js:592
+#: templates/js/translated/company.js:851 templates/js/translated/order.js:100
#: templates/js/translated/order.js:883 templates/js/translated/order.js:1315
#: templates/js/translated/order.js:1873 templates/js/translated/order.js:2819
#: templates/js/translated/order.js:3217 templates/js/translated/order.js:3432
-#: templates/js/translated/part.js:1067 templates/js/translated/part.js:1137
-#: templates/js/translated/part.js:1333 templates/js/translated/stock.js:531
-#: templates/js/translated/stock.js:696 templates/js/translated/stock.js:903
-#: templates/js/translated/stock.js:1633 templates/js/translated/stock.js:2376
-#: templates/js/translated/stock.js:2571 templates/js/translated/stock.js:2705
+#: templates/js/translated/part.js:1111 templates/js/translated/part.js:1181
+#: templates/js/translated/part.js:1377 templates/js/translated/stock.js:530
+#: templates/js/translated/stock.js:695 templates/js/translated/stock.js:902
+#: templates/js/translated/stock.js:1643 templates/js/translated/stock.js:2386
+#: templates/js/translated/stock.js:2581 templates/js/translated/stock.js:2715
msgid "Part"
msgstr "Teil"
@@ -768,12 +767,12 @@ msgstr "Losnummer"
msgid "Batch code for this build output"
msgstr "Losnummer für dieses Endprodukt"
-#: build/models.py:282 order/models.py:137 part/models.py:932
+#: build/models.py:282 order/models.py:138 part/models.py:932
#: part/templates/part/part_base.html:305 templates/js/translated/order.js:2489
msgid "Creation Date"
msgstr "Erstelldatum"
-#: build/models.py:286 order/models.py:660
+#: build/models.py:286 order/models.py:676
msgid "Target completion date"
msgstr "geplantes Fertigstellungsdatum"
@@ -781,7 +780,7 @@ msgstr "geplantes Fertigstellungsdatum"
msgid "Target date for build completion. Build will be overdue after this date."
msgstr "Zieldatum für Bauauftrag-Fertigstellung."
-#: build/models.py:290 order/models.py:331
+#: build/models.py:290 order/models.py:336
#: templates/js/translated/build.js:2558
msgid "Completion Date"
msgstr "Fertigstellungsdatum"
@@ -799,7 +798,7 @@ msgid "User who issued this build order"
msgstr "Nutzer der diesen Bauauftrag erstellt hat"
#: build/models.py:313 build/templates/build/build_base.html:190
-#: build/templates/build/detail.html:115 order/models.py:151
+#: build/templates/build/detail.html:115 order/models.py:152
#: order/templates/order/order_base.html:176
#: order/templates/order/sales_order_base.html:183 part/models.py:936
#: report/templates/report/inventree_build_order_base.html:159
@@ -822,20 +821,20 @@ msgstr "Externer Link"
#: build/models.py:324 build/serializers.py:374
#: build/templates/build/sidebar.html:21 company/models.py:134
#: company/models.py:519 company/templates/company/sidebar.html:25
-#: order/models.py:155 order/models.py:918 order/models.py:1213
+#: order/models.py:156 order/models.py:934 order/models.py:1229
#: order/templates/order/po_sidebar.html:11
#: order/templates/order/so_sidebar.html:17 part/models.py:921
#: part/templates/part/part_sidebar.html:59
#: report/templates/report/inventree_build_order_base.html:173
-#: stock/models.py:713 stock/models.py:1985 stock/models.py:2093
+#: stock/models.py:713 stock/models.py:1989 stock/models.py:2097
#: stock/serializers.py:315 stock/serializers.py:444 stock/serializers.py:486
-#: stock/serializers.py:772 stock/serializers.py:871 stock/serializers.py:1003
+#: stock/serializers.py:759 stock/serializers.py:858 stock/serializers.py:990
#: stock/templates/stock/stock_sidebar.html:25
-#: templates/js/translated/barcode.js:100 templates/js/translated/bom.js:1044
-#: templates/js/translated/company.js:962 templates/js/translated/order.js:2040
+#: templates/js/translated/barcode.js:100 templates/js/translated/bom.js:1038
+#: templates/js/translated/company.js:947 templates/js/translated/order.js:2040
#: templates/js/translated/order.js:2191 templates/js/translated/order.js:2687
#: templates/js/translated/order.js:3632 templates/js/translated/order.js:4030
-#: templates/js/translated/stock.js:1307 templates/js/translated/stock.js:1916
+#: templates/js/translated/stock.js:1317 templates/js/translated/stock.js:1926
msgid "Notes"
msgstr "Notizen"
@@ -855,44 +854,44 @@ msgstr "Endprodukt bereits hergstellt"
msgid "Build output does not match Build Order"
msgstr "Endprodukt stimmt nicht mit dem Bauauftrag überein"
-#: build/models.py:1108
+#: build/models.py:1111
msgid "Build item must specify a build output, as master part is marked as trackable"
msgstr "Bauauftragsposition muss ein Endprodukt festlegen, da der übergeordnete Teil verfolgbar ist"
-#: build/models.py:1117
+#: build/models.py:1120
#, python-brace-format
msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})"
msgstr "Zugewiesene Menge ({q}) darf nicht verfügbare Menge ({a}) übersteigen"
-#: build/models.py:1127
+#: build/models.py:1130
msgid "Stock item is over-allocated"
msgstr "BestandObjekt ist zu oft zugewiesen"
-#: build/models.py:1133 order/models.py:1372
+#: build/models.py:1136 order/models.py:1388
msgid "Allocation quantity must be greater than zero"
msgstr "Reserviermenge muss größer null sein"
-#: build/models.py:1139
+#: build/models.py:1142
msgid "Quantity must be 1 for serialized stock"
msgstr "Anzahl muss 1 für Objekte mit Seriennummer sein"
-#: build/models.py:1196
+#: build/models.py:1199
msgid "Selected stock item not found in BOM"
msgstr "Ausgewähltes Bestands-Objekt nicht in Stückliste für Teil '{p}' gefunden"
-#: build/models.py:1265 stock/templates/stock/item_base.html:177
+#: build/models.py:1268 stock/templates/stock/item_base.html:177
#: templates/InvenTree/search.html:137 templates/js/translated/build.js:2454
#: templates/navbar.html:38
msgid "Build"
msgstr "Bauauftrag"
-#: build/models.py:1266
+#: build/models.py:1269
msgid "Build to allocate parts"
msgstr "Bauauftrag starten um Teile zuzuweisen"
-#: build/models.py:1282 build/serializers.py:603 order/serializers.py:994
-#: order/serializers.py:1015 stock/serializers.py:382 stock/serializers.py:703
-#: stock/serializers.py:829 stock/templates/stock/item_base.html:10
+#: build/models.py:1285 build/serializers.py:603 order/serializers.py:996
+#: order/serializers.py:1017 stock/serializers.py:382 stock/serializers.py:690
+#: stock/serializers.py:816 stock/templates/stock/item_base.html:10
#: stock/templates/stock/item_base.html:23
#: stock/templates/stock/item_base.html:199
#: templates/js/translated/build.js:738 templates/js/translated/build.js:743
@@ -900,22 +899,22 @@ msgstr "Bauauftrag starten um Teile zuzuweisen"
#: templates/js/translated/order.js:101 templates/js/translated/order.js:2820
#: templates/js/translated/order.js:3124 templates/js/translated/order.js:3129
#: templates/js/translated/order.js:3224 templates/js/translated/order.js:3314
-#: templates/js/translated/stock.js:532 templates/js/translated/stock.js:697
-#: templates/js/translated/stock.js:2449
+#: templates/js/translated/stock.js:531 templates/js/translated/stock.js:696
+#: templates/js/translated/stock.js:2459
msgid "Stock Item"
msgstr "Lagerartikel"
-#: build/models.py:1283
+#: build/models.py:1286
msgid "Source stock item"
msgstr "Quell-Lagerartikel"
-#: build/models.py:1295 build/serializers.py:183
+#: build/models.py:1298 build/serializers.py:183
#: build/templates/build/build_base.html:82
-#: build/templates/build/detail.html:34 common/models.py:1536
+#: build/templates/build/detail.html:34 common/models.py:1543
#: company/forms.py:36 company/templates/company/supplier_part.html:258
-#: order/models.py:909 order/models.py:1412 order/serializers.py:1134
-#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:68
-#: part/forms.py:83 part/forms.py:98 part/models.py:2561
+#: order/models.py:925 order/models.py:1428 order/serializers.py:1136
+#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:59
+#: part/forms.py:74 part/forms.py:89 part/models.py:2549
#: part/templates/part/detail.html:935 part/templates/part/detail.html:1021
#: part/templates/part/part_pricing.html:16
#: part/templates/part/upload_bom.html:53
@@ -926,8 +925,8 @@ msgstr "Quell-Lagerartikel"
#: report/templates/report/inventree_test_report_base.html:139
#: stock/serializers.py:279 stock/templates/stock/item_base.html:292
#: stock/templates/stock/item_base.html:300
-#: templates/js/translated/barcode.js:437 templates/js/translated/bom.js:689
-#: templates/js/translated/bom.js:866 templates/js/translated/build.js:422
+#: templates/js/translated/barcode.js:437 templates/js/translated/bom.js:691
+#: templates/js/translated/bom.js:860 templates/js/translated/build.js:422
#: templates/js/translated/build.js:574 templates/js/translated/build.js:765
#: templates/js/translated/build.js:1175 templates/js/translated/build.js:1673
#: templates/js/translated/build.js:2086
@@ -937,23 +936,23 @@ msgstr "Quell-Lagerartikel"
#: templates/js/translated/order.js:2821 templates/js/translated/order.js:3143
#: templates/js/translated/order.js:3231 templates/js/translated/order.js:3320
#: templates/js/translated/order.js:3454 templates/js/translated/order.js:3965
-#: templates/js/translated/part.js:967 templates/js/translated/part.js:1969
-#: templates/js/translated/part.js:2200 templates/js/translated/part.js:2234
-#: templates/js/translated/part.js:2312 templates/js/translated/stock.js:403
-#: templates/js/translated/stock.js:557 templates/js/translated/stock.js:727
-#: templates/js/translated/stock.js:2498 templates/js/translated/stock.js:2583
+#: templates/js/translated/part.js:1011 templates/js/translated/part.js:2065
+#: templates/js/translated/part.js:2296 templates/js/translated/part.js:2330
+#: templates/js/translated/part.js:2408 templates/js/translated/stock.js:402
+#: templates/js/translated/stock.js:556 templates/js/translated/stock.js:726
+#: templates/js/translated/stock.js:2508 templates/js/translated/stock.js:2593
msgid "Quantity"
msgstr "Anzahl"
-#: build/models.py:1296
+#: build/models.py:1299
msgid "Stock quantity to allocate to build"
msgstr "Anzahl an Lagerartikel dem Bauauftrag zuweisen"
-#: build/models.py:1304
+#: build/models.py:1307
msgid "Install into"
msgstr "Installiere in"
-#: build/models.py:1305
+#: build/models.py:1308
msgid "Destination stock item"
msgstr "Ziel-Lagerartikel"
@@ -982,9 +981,9 @@ msgstr "Dieses Endprodukt ist nicht vollständig zugewiesen"
msgid "Enter quantity for build output"
msgstr "Menge der Endprodukte angeben"
-#: build/serializers.py:198 build/serializers.py:623 order/models.py:363
-#: order/serializers.py:280 order/serializers.py:435 part/serializers.py:512
-#: part/serializers.py:956 stock/models.py:470 stock/models.py:1239
+#: build/serializers.py:198 build/serializers.py:623 order/models.py:368
+#: order/serializers.py:280 order/serializers.py:435 part/serializers.py:514
+#: part/serializers.py:958 stock/models.py:470 stock/models.py:1239
#: stock/serializers.py:288
msgid "Quantity must be greater than zero"
msgstr "Anzahl muss größer Null sein"
@@ -997,9 +996,9 @@ msgstr "Ganzzahl für verfolgbare Teile erforderlich"
msgid "Integer quantity required, as the bill of materials contains trackable parts"
msgstr "Ganzzahl erforderlich da die Stückliste nachverfolgbare Teile enthält"
-#: build/serializers.py:222 order/serializers.py:448 order/serializers.py:1138
+#: build/serializers.py:222 order/serializers.py:448 order/serializers.py:1140
#: stock/serializers.py:297 templates/js/translated/order.js:1186
-#: templates/js/translated/stock.js:238 templates/js/translated/stock.js:404
+#: templates/js/translated/stock.js:237 templates/js/translated/stock.js:403
msgid "Serial Numbers"
msgstr "Seriennummer"
@@ -1015,7 +1014,7 @@ msgstr "Seriennummern automatisch zuweisen"
msgid "Automatically allocate required items with matching serial numbers"
msgstr "Benötigte Lagerartikel automatisch mit passenden Seriennummern zuweisen"
-#: build/serializers.py:268 stock/api.py:552
+#: build/serializers.py:268 stock/api.py:553
msgid "The following serial numbers already exist"
msgstr "Folgende Seriennummern existieren bereits"
@@ -1025,16 +1024,16 @@ msgstr "Eine Liste von Endprodukten muss angegeben werden"
#: build/serializers.py:356 order/serializers.py:421 order/serializers.py:525
#: stock/serializers.py:308 stock/serializers.py:439 stock/serializers.py:481
-#: stock/serializers.py:864 stock/serializers.py:1097
+#: stock/serializers.py:851 stock/serializers.py:1084
#: stock/templates/stock/item_base.html:390
#: templates/js/translated/barcode.js:436
#: templates/js/translated/barcode.js:618 templates/js/translated/build.js:750
#: templates/js/translated/build.js:1685 templates/js/translated/order.js:1213
#: templates/js/translated/order.js:3136 templates/js/translated/order.js:3239
#: templates/js/translated/order.js:3247 templates/js/translated/order.js:3328
-#: templates/js/translated/part.js:180 templates/js/translated/stock.js:533
-#: templates/js/translated/stock.js:698 templates/js/translated/stock.js:905
-#: templates/js/translated/stock.js:1787 templates/js/translated/stock.js:2390
+#: templates/js/translated/part.js:180 templates/js/translated/stock.js:532
+#: templates/js/translated/stock.js:697 templates/js/translated/stock.js:904
+#: templates/js/translated/stock.js:1797 templates/js/translated/stock.js:2400
msgid "Location"
msgstr "Lagerort"
@@ -1043,12 +1042,12 @@ msgid "Location for completed build outputs"
msgstr "Lagerort für fertige Endprodukte"
#: build/serializers.py:363 build/templates/build/build_base.html:142
-#: build/templates/build/detail.html:62 order/models.py:654
+#: build/templates/build/detail.html:62 order/models.py:670
#: order/serializers.py:458 stock/templates/stock/item_base.html:423
#: templates/js/translated/barcode.js:182 templates/js/translated/build.js:2510
#: templates/js/translated/order.js:1320 templates/js/translated/order.js:1660
-#: templates/js/translated/order.js:2481 templates/js/translated/stock.js:1762
-#: templates/js/translated/stock.js:2467 templates/js/translated/stock.js:2599
+#: templates/js/translated/order.js:2481 templates/js/translated/stock.js:1772
+#: templates/js/translated/stock.js:2477 templates/js/translated/stock.js:2609
msgid "Status"
msgstr "Status"
@@ -1108,8 +1107,8 @@ msgstr "Bauauftrag hat unvollständige Aufbauten"
msgid "No build outputs have been created for this build order"
msgstr "Es wurden keine Endprodukte für diesen Bauauftrag erstellt"
-#: build/serializers.py:535 build/serializers.py:580 part/models.py:2679
-#: part/models.py:2813
+#: build/serializers.py:535 build/serializers.py:580 part/models.py:2667
+#: part/models.py:2801
msgid "BOM Item"
msgstr "Stücklisten-Position"
@@ -1125,11 +1124,11 @@ msgstr "Endprodukt muss auf den gleichen Bauauftrag verweisen"
msgid "bom_item.part must point to the same part as the build order"
msgstr "bom_item.part muss auf dasselbe Teil verweisen wie der Bauauftrag"
-#: build/serializers.py:609 stock/serializers.py:716
+#: build/serializers.py:609 stock/serializers.py:703
msgid "Item must be in stock"
msgstr "Teil muss auf Lager sein"
-#: build/serializers.py:667 order/serializers.py:1052
+#: build/serializers.py:667 order/serializers.py:1054
#, python-brace-format
msgid "Available quantity ({q}) exceeded"
msgstr "Verfügbare Menge ({q}) überschritten"
@@ -1146,7 +1145,7 @@ msgstr "Endprodukt kann bei Zuweisung nicht-verfolgter Teile nicht angegeben wer
msgid "This stock item has already been allocated to this build output"
msgstr "Dieser Lagerbestand wurde bereits diesem Endprodukt zugewiesen"
-#: build/serializers.py:708 order/serializers.py:1298
+#: build/serializers.py:708 order/serializers.py:1300
msgid "Allocation items must be provided"
msgstr "Zuweisungen müssen angegeben werden"
@@ -1178,10 +1177,19 @@ msgstr "Ersatzbestand"
msgid "Allow allocation of substitute parts"
msgstr "Zuordnung von Ersatzteilen erlauben"
-#: build/tasks.py:96
+#: build/tasks.py:100
msgid "Stock required for build order"
msgstr "Bestand für Bauauftrag erforderlich"
+#: build/tasks.py:118
+msgid "Overdue Build Order"
+msgstr ""
+
+#: build/tasks.py:123
+#, python-brace-format
+msgid "Build order {bo} is now overdue"
+msgstr ""
+
#: build/templates/build/build_base.html:39
#: order/templates/order/order_base.html:28
#: order/templates/order/sales_order_base.html:38
@@ -1244,13 +1252,13 @@ msgid "Stock has not been fully allocated to this Build Order"
msgstr "Bestand wurde Bauauftrag noch nicht vollständig zugewiesen"
#: build/templates/build/build_base.html:151
-#: build/templates/build/detail.html:131 order/models.py:922
+#: build/templates/build/detail.html:131 order/models.py:938
#: order/templates/order/order_base.html:162
#: order/templates/order/sales_order_base.html:164
#: report/templates/report/inventree_build_order_base.html:126
#: templates/js/translated/build.js:2550 templates/js/translated/order.js:1677
#: templates/js/translated/order.js:1987 templates/js/translated/order.js:2497
-#: templates/js/translated/order.js:3517 templates/js/translated/part.js:971
+#: templates/js/translated/order.js:3517 templates/js/translated/part.js:1015
msgid "Target Date"
msgstr "Zieldatum"
@@ -1277,13 +1285,14 @@ msgid "Completed"
msgstr "Fertig"
#: build/templates/build/build_base.html:176
-#: build/templates/build/detail.html:94 order/models.py:1100
-#: order/models.py:1185 order/models.py:1320
+#: build/templates/build/detail.html:94 order/models.py:1116
+#: order/models.py:1201 order/models.py:1336
#: order/templates/order/sales_order_base.html:9
#: order/templates/order/sales_order_base.html:28
#: report/templates/report/inventree_build_order_base.html:136
#: report/templates/report/inventree_so_report.html:77
#: stock/templates/stock/item_base.html:370
+#: templates/email/overdue_sales_order.html:15
#: templates/js/translated/order.js:2436
msgid "Sales Order"
msgstr "Auftrag"
@@ -1319,7 +1328,7 @@ msgstr "Ausgangs-Lager"
msgid "Stock can be taken from any available location."
msgstr "Bestand kann jedem verfügbaren Lagerort entnommen werden."
-#: build/templates/build/detail.html:49 order/models.py:1034
+#: build/templates/build/detail.html:49 order/models.py:1050
#: templates/js/translated/order.js:1321 templates/js/translated/order.js:2029
msgid "Destination"
msgstr "Ziel-Lager"
@@ -1336,8 +1345,8 @@ msgstr "Zugewiesene Teile"
#: stock/templates/stock/item_base.html:170
#: templates/js/translated/build.js:1179
#: templates/js/translated/model_renderers.js:112
-#: templates/js/translated/stock.js:971 templates/js/translated/stock.js:1776
-#: templates/js/translated/stock.js:2606
+#: templates/js/translated/stock.js:970 templates/js/translated/stock.js:1786
+#: templates/js/translated/stock.js:2616
#: templates/js/translated/table_filters.js:151
#: templates/js/translated/table_filters.js:242
msgid "Batch"
@@ -1716,7 +1725,7 @@ msgstr "Kategorie-Parametervorlage kopieren"
msgid "Copy category parameter templates when creating a part"
msgstr "Kategorie-Parameter Vorlagen kopieren wenn ein Teil angelegt wird"
-#: common/models.py:820 part/models.py:2372 report/models.py:157
+#: common/models.py:820 part/models.py:2360 report/models.py:157
#: templates/js/translated/table_filters.js:38
#: templates/js/translated/table_filters.js:444
msgid "Template"
@@ -1726,7 +1735,7 @@ msgstr "Vorlage"
msgid "Parts are templates by default"
msgstr "Teile sind standardmäßig Vorlagen"
-#: common/models.py:827 part/models.py:884 templates/js/translated/bom.js:1390
+#: common/models.py:827 part/models.py:884 templates/js/translated/bom.js:1384
#: templates/js/translated/table_filters.js:168
#: templates/js/translated/table_filters.js:460
msgid "Assembly"
@@ -1880,576 +1889,584 @@ msgid "Default page size for PDF reports"
msgstr "Standardseitenformat für PDF-Bericht"
#: common/models.py:968
-msgid "Test Reports"
-msgstr "Test-Berichte"
+msgid "Enable Test Reports"
+msgstr ""
#: common/models.py:969
msgid "Enable generation of test reports"
msgstr "Erstellung von Test-Berichten aktivieren"
#: common/models.py:975
+msgid "Attach Test Reports"
+msgstr ""
+
+#: common/models.py:976
+msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item"
+msgstr ""
+
+#: common/models.py:982
msgid "Batch Code Template"
msgstr "Losnummer Vorlage"
-#: common/models.py:976
+#: common/models.py:983
msgid "Template for generating default batch codes for stock items"
msgstr "Vorlage für die Generierung von Standard-Losnummern für Lagerbestände"
-#: common/models.py:981
+#: common/models.py:988
msgid "Stock Expiry"
msgstr "Bestands-Ablauf"
-#: common/models.py:982
+#: common/models.py:989
msgid "Enable stock expiry functionality"
msgstr "Ablaufen von Bestand ermöglichen"
-#: common/models.py:988
+#: common/models.py:995
msgid "Sell Expired Stock"
msgstr "Abgelaufenen Bestand verkaufen"
-#: common/models.py:989
+#: common/models.py:996
msgid "Allow sale of expired stock"
msgstr "Verkauf von abgelaufenem Bestand erlaubt"
-#: common/models.py:995
+#: common/models.py:1002
msgid "Stock Stale Time"
msgstr "Bestands-Stehzeit"
-#: common/models.py:996
+#: common/models.py:1003
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:998
+#: common/models.py:1005
msgid "days"
msgstr "Tage"
-#: common/models.py:1003
+#: common/models.py:1010
msgid "Build Expired Stock"
msgstr "Abgelaufenen Bestand verbauen"
-#: common/models.py:1004
+#: common/models.py:1011
msgid "Allow building with expired stock"
msgstr "Verbauen von abgelaufenen Bestand erlaubt"
-#: common/models.py:1010
+#: common/models.py:1017
msgid "Stock Ownership Control"
msgstr "Bestands-Eigentümerkontrolle"
-#: common/models.py:1011
+#: common/models.py:1018
msgid "Enable ownership control over stock locations and items"
msgstr "Eigentümerkontrolle für Lagerorte und Teile aktivieren"
-#: common/models.py:1017
+#: common/models.py:1024
msgid "Build Order Reference Prefix"
msgstr "Bauauftrag-Referenz Präfix"
-#: common/models.py:1018
+#: common/models.py:1025
msgid "Prefix value for build order reference"
msgstr "Präfix für Bauauftrag-Referenz"
-#: common/models.py:1023
+#: common/models.py:1030
msgid "Build Order Reference Regex"
msgstr "Bauauftrag-Referenz RegEx"
-#: common/models.py:1024
+#: common/models.py:1031
msgid "Regular expression pattern for matching build order reference"
msgstr "RegEx Muster für die Zuordnung von Bauauftrag-Referenzen"
-#: common/models.py:1028
+#: common/models.py:1035
msgid "Sales Order Reference Prefix"
msgstr "Auftrags-Referenz Präfix"
-#: common/models.py:1029
+#: common/models.py:1036
msgid "Prefix value for sales order reference"
msgstr "Präfix für Auftrags-Referenz"
-#: common/models.py:1034
+#: common/models.py:1041
msgid "Sales Order Default Shipment"
msgstr "Auftrag Standardsendung"
-#: common/models.py:1035
+#: common/models.py:1042
msgid "Enable creation of default shipment with sales orders"
msgstr "Erstelle eine Standardsendung für Aufträge"
-#: common/models.py:1041
+#: common/models.py:1048
msgid "Purchase Order Reference Prefix"
msgstr "Bestellungs-Referenz Präfix"
-#: common/models.py:1042
+#: common/models.py:1049
msgid "Prefix value for purchase order reference"
msgstr "Präfix für Bestellungs-Referenz"
-#: common/models.py:1048
+#: common/models.py:1055
msgid "Enable password forgot"
msgstr "Passwort vergessen aktivieren"
-#: common/models.py:1049
+#: common/models.py:1056
msgid "Enable password forgot function on the login pages"
msgstr "Passwort-vergessen-Funktion auf den Anmeldeseiten aktivieren"
-#: common/models.py:1055
+#: common/models.py:1062
msgid "Enable registration"
msgstr "Anmeldung erlauben"
-#: common/models.py:1056
+#: common/models.py:1063
msgid "Enable self-registration for users on the login pages"
msgstr "Selbstregistrierung für Benutzer auf den Anmeldeseiten aktivieren"
-#: common/models.py:1062
+#: common/models.py:1069
msgid "Enable SSO"
msgstr "SSO aktivieren"
-#: common/models.py:1063
+#: common/models.py:1070
msgid "Enable SSO on the login pages"
msgstr "SSO auf den Anmeldeseiten aktivieren"
-#: common/models.py:1069
+#: common/models.py:1076
msgid "Email required"
msgstr "Email-Adresse erforderlich"
-#: common/models.py:1070
+#: common/models.py:1077
msgid "Require user to supply mail on signup"
msgstr "Benutzer müssen bei der Registrierung eine E-Mail angeben"
-#: common/models.py:1076
+#: common/models.py:1083
msgid "Auto-fill SSO users"
msgstr "SSO-Benutzer automatisch ausfüllen"
-#: common/models.py:1077
+#: common/models.py:1084
msgid "Automatically fill out user-details from SSO account-data"
msgstr "Benutzer-Details automatisch aus SSO-Konto ausfüllen"
-#: common/models.py:1083
+#: common/models.py:1090
msgid "Mail twice"
msgstr "E-Mail zweimal"
-#: common/models.py:1084
+#: common/models.py:1091
msgid "On signup ask users twice for their mail"
msgstr "Bei der Registrierung den Benutzer zweimal nach der E-Mail-Adresse fragen"
-#: common/models.py:1090
+#: common/models.py:1097
msgid "Password twice"
msgstr "Passwort zweimal"
-#: common/models.py:1091
+#: common/models.py:1098
msgid "On signup ask users twice for their password"
msgstr "Bei der Registrierung den Benutzer zweimal nach dem Passwort fragen"
-#: common/models.py:1097
+#: common/models.py:1104
msgid "Group on signup"
msgstr "Gruppe bei Registrierung"
-#: common/models.py:1098
+#: common/models.py:1105
msgid "Group to which new users are assigned on registration"
msgstr "Gruppe der neue Benutzer bei der Registrierung zugewiesen werden"
-#: common/models.py:1104
+#: common/models.py:1111
msgid "Enforce MFA"
msgstr "MFA erzwingen"
-#: common/models.py:1105
+#: common/models.py:1112
msgid "Users must use multifactor security."
msgstr "Benutzer müssen Multifaktor-Authentifizierung verwenden."
-#: common/models.py:1111
+#: common/models.py:1118
msgid "Check plugins on startup"
msgstr "Plugins beim Start prüfen"
-#: common/models.py:1112
+#: common/models.py:1119
msgid "Check that all plugins are installed on startup - enable in container enviroments"
msgstr "Beim Start überprüfen, ob alle Plugins installiert sind - Für Container aktivieren"
-#: common/models.py:1120
+#: common/models.py:1127
msgid "Enable URL integration"
msgstr "URL-Integration aktivieren"
-#: common/models.py:1121
+#: common/models.py:1128
msgid "Enable plugins to add URL routes"
msgstr "Plugins zum Hinzufügen von URLs aktivieren"
-#: common/models.py:1128
+#: common/models.py:1135
msgid "Enable navigation integration"
msgstr "Navigations-Integration aktivieren"
-#: common/models.py:1129
+#: common/models.py:1136
msgid "Enable plugins to integrate into navigation"
msgstr "Plugins zur Integration in die Navigation aktivieren"
-#: common/models.py:1136
+#: common/models.py:1143
msgid "Enable app integration"
msgstr "App-Integration aktivieren"
-#: common/models.py:1137
+#: common/models.py:1144
msgid "Enable plugins to add apps"
msgstr "Plugins zum Hinzufügen von Apps aktivieren"
-#: common/models.py:1144
+#: common/models.py:1151
msgid "Enable schedule integration"
msgstr "Terminplan-Integration aktivieren"
-#: common/models.py:1145
+#: common/models.py:1152
msgid "Enable plugins to run scheduled tasks"
msgstr "Geplante Aufgaben aktivieren"
-#: common/models.py:1152
+#: common/models.py:1159
msgid "Enable event integration"
msgstr "Ereignis-Integration aktivieren"
-#: common/models.py:1153
+#: common/models.py:1160
msgid "Enable plugins to respond to internal events"
msgstr "Plugins ermöglichen auf interne Ereignisse zu reagieren"
-#: common/models.py:1170 common/models.py:1492
+#: common/models.py:1177 common/models.py:1499
msgid "Settings key (must be unique - case insensitive"
msgstr "Einstellungs-Schlüssel (muss einzigartig sein, Groß-/ Kleinschreibung wird nicht beachtet)"
-#: common/models.py:1192
+#: common/models.py:1199
msgid "Show subscribed parts"
msgstr "Abonnierte Teile anzeigen"
-#: common/models.py:1193
+#: common/models.py:1200
msgid "Show subscribed parts on the homepage"
msgstr "Zeige abonnierte Teile auf der Startseite"
-#: common/models.py:1199
+#: common/models.py:1206
msgid "Show subscribed categories"
msgstr "Abonnierte Kategorien anzeigen"
-#: common/models.py:1200
+#: common/models.py:1207
msgid "Show subscribed part categories on the homepage"
msgstr "Zeige abonnierte Teilkategorien auf der Startseite"
-#: common/models.py:1206
+#: common/models.py:1213
msgid "Show latest parts"
msgstr "Neueste Teile anzeigen"
-#: common/models.py:1207
+#: common/models.py:1214
msgid "Show latest parts on the homepage"
msgstr "Zeige neueste Teile auf der Startseite"
-#: common/models.py:1213
+#: common/models.py:1220
msgid "Recent Part Count"
msgstr "Aktuelle Teile-Stände"
-#: common/models.py:1214
+#: common/models.py:1221
msgid "Number of recent parts to display on index page"
msgstr "Anzahl der neusten Teile auf der Startseite"
-#: common/models.py:1220
+#: common/models.py:1227
msgid "Show unvalidated BOMs"
msgstr "Nicht validierte Stücklisten anzeigen"
-#: common/models.py:1221
+#: common/models.py:1228
msgid "Show BOMs that await validation on the homepage"
msgstr "Zeige Stücklisten, die noch nicht validiert sind, auf der Startseite"
-#: common/models.py:1227
+#: common/models.py:1234
msgid "Show recent stock changes"
msgstr "Neueste Bestandänderungen anzeigen"
-#: common/models.py:1228
+#: common/models.py:1235
msgid "Show recently changed stock items on the homepage"
msgstr "Zeige zuletzt geänderte Lagerbestände auf der Startseite"
-#: common/models.py:1234
+#: common/models.py:1241
msgid "Recent Stock Count"
msgstr "aktueller Bestand"
-#: common/models.py:1235
+#: common/models.py:1242
msgid "Number of recent stock items to display on index page"
msgstr "Anzahl des geänderten Bestands auf der Startseite"
-#: common/models.py:1241
+#: common/models.py:1248
msgid "Show low stock"
msgstr "Niedrigen Bestand anzeigen"
-#: common/models.py:1242
+#: common/models.py:1249
msgid "Show low stock items on the homepage"
msgstr "Zeige geringen Bestand auf der Startseite"
-#: common/models.py:1248
+#: common/models.py:1255
msgid "Show depleted stock"
msgstr "Lerren Bestand anzeigen"
-#: common/models.py:1249
+#: common/models.py:1256
msgid "Show depleted stock items on the homepage"
msgstr "Zeige aufgebrauchte Lagerartikel auf der Startseite"
-#: common/models.py:1255
+#: common/models.py:1262
msgid "Show needed stock"
msgstr "Benötigten Bestand anzeigen"
-#: common/models.py:1256
+#: common/models.py:1263
msgid "Show stock items needed for builds on the homepage"
msgstr "Zeige Bestand für Bauaufträge auf der Startseite"
-#: common/models.py:1262
+#: common/models.py:1269
msgid "Show expired stock"
msgstr "Abgelaufenen Bestand anzeigen"
-#: common/models.py:1263
+#: common/models.py:1270
msgid "Show expired stock items on the homepage"
msgstr "Zeige abgelaufene Lagerbestände auf der Startseite"
-#: common/models.py:1269
+#: common/models.py:1276
msgid "Show stale stock"
msgstr "Alten Bestand anzeigen"
-#: common/models.py:1270
+#: common/models.py:1277
msgid "Show stale stock items on the homepage"
msgstr "Zeige überfällige Lagerartikel auf der Startseite"
-#: common/models.py:1276
+#: common/models.py:1283
msgid "Show pending builds"
msgstr "Ausstehende Bauaufträge anzeigen"
-#: common/models.py:1277
+#: common/models.py:1284
msgid "Show pending builds on the homepage"
msgstr "Zeige ausstehende Bauaufträge auf der Startseite"
-#: common/models.py:1283
+#: common/models.py:1290
msgid "Show overdue builds"
msgstr "Zeige überfällige Bauaufträge"
-#: common/models.py:1284
+#: common/models.py:1291
msgid "Show overdue builds on the homepage"
msgstr "Zeige überfällige Bauaufträge auf der Startseite"
-#: common/models.py:1290
+#: common/models.py:1297
msgid "Show outstanding POs"
msgstr "Ausstehende POs anzeigen"
-#: common/models.py:1291
+#: common/models.py:1298
msgid "Show outstanding POs on the homepage"
msgstr "Zeige ausstehende POs auf der Startseite"
-#: common/models.py:1297
+#: common/models.py:1304
msgid "Show overdue POs"
msgstr "Überfällige POs anzeigen"
-#: common/models.py:1298
+#: common/models.py:1305
msgid "Show overdue POs on the homepage"
msgstr "Zeige überfällige POs auf der Startseite"
-#: common/models.py:1304
+#: common/models.py:1311
msgid "Show outstanding SOs"
msgstr "Ausstehende SOs anzeigen"
-#: common/models.py:1305
+#: common/models.py:1312
msgid "Show outstanding SOs on the homepage"
msgstr "Zeige ausstehende SOs auf der Startseite"
-#: common/models.py:1311
+#: common/models.py:1318
msgid "Show overdue SOs"
msgstr "Überfällige SOs anzeigen"
-#: common/models.py:1312
+#: common/models.py:1319
msgid "Show overdue SOs on the homepage"
msgstr "Zeige überfällige SOs auf der Startseite"
-#: common/models.py:1317
+#: common/models.py:1324
msgid "Enable label printing"
msgstr "Labeldruck aktivieren"
-#: common/models.py:1318
+#: common/models.py:1325
msgid "Enable label printing from the web interface"
msgstr "Labeldruck über die Website aktivieren"
-#: common/models.py:1324
+#: common/models.py:1331
msgid "Inline label display"
msgstr "Label inline anzeigen"
-#: common/models.py:1325
+#: common/models.py:1332
msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr "PDF-Labels im Browser anzeigen, anstatt als Datei herunterzuladen"
-#: common/models.py:1331
+#: common/models.py:1338
msgid "Inline report display"
msgstr "Berichte inline anzeigen"
-#: common/models.py:1332
+#: common/models.py:1339
msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr "PDF-Berichte im Browser anzeigen, anstatt als Datei herunterzuladen"
-#: common/models.py:1338
+#: common/models.py:1345
msgid "Search Parts"
msgstr "Teile suchen"
-#: common/models.py:1339
+#: common/models.py:1346
msgid "Display parts in search preview window"
msgstr "Teile in der Suchvorschau anzeigen"
-#: common/models.py:1345
+#: common/models.py:1352
msgid "Seach Supplier Parts"
msgstr ""
-#: common/models.py:1346
+#: common/models.py:1353
msgid "Display supplier parts in search preview window"
msgstr ""
-#: common/models.py:1352
+#: common/models.py:1359
msgid "Search Manufacturer Parts"
msgstr ""
-#: common/models.py:1353
+#: common/models.py:1360
msgid "Display manufacturer parts in search preview window"
msgstr ""
-#: common/models.py:1359
+#: common/models.py:1366
msgid "Hide Inactive Parts"
msgstr "Inaktive Teile ausblenden"
-#: common/models.py:1360
+#: common/models.py:1367
msgid "Excluded inactive parts from search preview window"
msgstr "Inaktive Teile in der Suchvorschau ausblenden"
-#: common/models.py:1366
+#: common/models.py:1373
msgid "Search Categories"
msgstr "Kategorien durchsuchen"
-#: common/models.py:1367
+#: common/models.py:1374
msgid "Display part categories in search preview window"
msgstr "Teilekategorien in der Suchvorschau anzeigen"
-#: common/models.py:1373
+#: common/models.py:1380
msgid "Search Stock"
msgstr "Bestand durchsuchen"
-#: common/models.py:1374
+#: common/models.py:1381
msgid "Display stock items in search preview window"
msgstr "Lagerartikel in Suchvorschau anzeigen"
-#: common/models.py:1380
+#: common/models.py:1387
msgid "Hide Unavailable Stock Items"
msgstr "Nicht verfügbare Artikel ausblenden"
-#: common/models.py:1381
+#: common/models.py:1388
msgid "Exclude stock items which are not available from the search preview window"
msgstr "Nicht verfügbare Lagerartikel aus der Suchvorschau ausschließen"
-#: common/models.py:1387
+#: common/models.py:1394
msgid "Search Locations"
msgstr "Lagerorte durchsuchen"
-#: common/models.py:1388
+#: common/models.py:1395
msgid "Display stock locations in search preview window"
msgstr "Lagerorte in Suchvorschau anzeigen"
-#: common/models.py:1394
+#: common/models.py:1401
msgid "Search Companies"
msgstr "Firmen durchsuchen"
-#: common/models.py:1395
+#: common/models.py:1402
msgid "Display companies in search preview window"
msgstr "Firmen in der Suchvorschau anzeigen"
-#: common/models.py:1401
+#: common/models.py:1408
msgid "Search Purchase Orders"
msgstr "Bestellungen durchsuchen"
-#: common/models.py:1402
+#: common/models.py:1409
msgid "Display purchase orders in search preview window"
msgstr "Bestellungen in der Suchvorschau anzeigen"
-#: common/models.py:1408
+#: common/models.py:1415
msgid "Exclude Inactive Purchase Orders"
msgstr "Inaktive Bestellungen ausblenden"
-#: common/models.py:1409
+#: common/models.py:1416
msgid "Exclude inactive purchase orders from search preview window"
msgstr "Inaktive Bestellungen in der Suchvorschau ausblenden"
-#: common/models.py:1415
+#: common/models.py:1422
msgid "Search Sales Orders"
msgstr "Aufträge durchsuchen"
-#: common/models.py:1416
+#: common/models.py:1423
msgid "Display sales orders in search preview window"
msgstr "Aufträge in der Suchvorschau anzeigen"
-#: common/models.py:1422
+#: common/models.py:1429
msgid "Exclude Inactive Sales Orders"
msgstr "Inaktive Aufträge ausblenden"
-#: common/models.py:1423
+#: common/models.py:1430
msgid "Exclude inactive sales orders from search preview window"
msgstr "Inaktive Aufträge in der Suchvorschau ausblenden"
-#: common/models.py:1429
+#: common/models.py:1436
msgid "Search Preview Results"
msgstr "Anzahl Suchergebnisse"
-#: common/models.py:1430
+#: common/models.py:1437
msgid "Number of results to show in each section of the search preview window"
msgstr "Anzahl der Ergebnisse, die in der Vorschau pro Sektion angezeigt werden sollen"
-#: common/models.py:1436
+#: common/models.py:1443
msgid "Show Quantity in Forms"
msgstr "zeige Bestand in Eingabemasken"
-#: common/models.py:1437
+#: common/models.py:1444
msgid "Display available part quantity in some forms"
msgstr "Zeige den verfügbaren Bestand in einigen Eingabemasken"
-#: common/models.py:1443
+#: common/models.py:1450
msgid "Escape Key Closes Forms"
msgstr "Esc-Taste schließt Formulare"
-#: common/models.py:1444
+#: common/models.py:1451
msgid "Use the escape key to close modal forms"
msgstr "Benutze die Esc-Taste, um Formulare zu schließen"
-#: common/models.py:1450
+#: common/models.py:1457
msgid "Fixed Navbar"
msgstr "Fixierter Navigationsleiste"
-#: common/models.py:1451
+#: common/models.py:1458
msgid "The navbar position is fixed to the top of the screen"
msgstr "Position der Navigationsleiste am oberen Bildschirmrand fixieren"
-#: common/models.py:1457
+#: common/models.py:1464
msgid "Date Format"
msgstr "Datumsformat"
-#: common/models.py:1458
+#: common/models.py:1465
msgid "Preferred format for displaying dates"
msgstr "Bevorzugtes Format für die Anzeige von Daten"
-#: common/models.py:1472 part/templates/part/detail.html:39
+#: common/models.py:1479 part/templates/part/detail.html:39
msgid "Part Scheduling"
msgstr "Teilzeitplanung"
-#: common/models.py:1473
+#: common/models.py:1480
msgid "Display part scheduling information"
msgstr "Zeige Zeitplanung für Teile"
-#: common/models.py:1537 company/forms.py:37
+#: common/models.py:1544 company/forms.py:37
msgid "Price break quantity"
msgstr "Preisstaffelungs Anzahl"
-#: common/models.py:1544 company/serializers.py:288
-#: company/templates/company/supplier_part.html:263 order/models.py:949
-#: templates/js/translated/part.js:998 templates/js/translated/part.js:1974
+#: common/models.py:1551 company/serializers.py:290
+#: company/templates/company/supplier_part.html:263 order/models.py:965
+#: templates/js/translated/part.js:1042 templates/js/translated/part.js:2070
msgid "Price"
msgstr "Preis"
-#: common/models.py:1545
+#: common/models.py:1552
msgid "Unit price at specified quantity"
msgstr "Stückpreis für die angegebene Anzahl"
-#: common/models.py:1705 common/models.py:1883
+#: common/models.py:1712 common/models.py:1890
msgid "Endpoint"
msgstr "Endpunkt"
-#: common/models.py:1706
+#: common/models.py:1713
msgid "Endpoint at which this webhook is received"
msgstr "Endpunkt, an dem dieser Webhook empfangen wird"
-#: common/models.py:1715
+#: common/models.py:1722
msgid "Name for this webhook"
msgstr "Name für diesen Webhook"
-#: common/models.py:1720 part/models.py:911 plugin/models.py:99
+#: common/models.py:1727 part/models.py:911 plugin/models.py:99
#: templates/js/translated/table_filters.js:34
#: templates/js/translated/table_filters.js:96
#: templates/js/translated/table_filters.js:308
@@ -2457,79 +2474,89 @@ msgstr "Name für diesen Webhook"
msgid "Active"
msgstr "Aktiv"
-#: common/models.py:1721
+#: common/models.py:1728
msgid "Is this webhook active"
msgstr "Ist dieser Webhook aktiv"
-#: common/models.py:1735
+#: common/models.py:1742
msgid "Token"
msgstr "Token"
-#: common/models.py:1736
+#: common/models.py:1743
msgid "Token for access"
msgstr "Token für Zugang"
-#: common/models.py:1743
+#: common/models.py:1750
msgid "Secret"
msgstr "Geheimnis"
-#: common/models.py:1744
+#: common/models.py:1751
msgid "Shared secret for HMAC"
msgstr "Shared Secret für HMAC"
-#: common/models.py:1850
+#: common/models.py:1857
msgid "Message ID"
msgstr "Nachrichten-ID"
-#: common/models.py:1851
+#: common/models.py:1858
msgid "Unique identifier for this message"
msgstr "Eindeutige Kennung für diese Nachricht"
-#: common/models.py:1859
+#: common/models.py:1866
msgid "Host"
msgstr "Host"
-#: common/models.py:1860
+#: common/models.py:1867
msgid "Host from which this message was received"
msgstr "Host von dem diese Nachricht empfangen wurde"
-#: common/models.py:1867
+#: common/models.py:1874
msgid "Header"
msgstr "Kopfzeile"
-#: common/models.py:1868
+#: common/models.py:1875
msgid "Header of this message"
msgstr "Header dieser Nachricht"
-#: common/models.py:1874
+#: common/models.py:1881
msgid "Body"
msgstr "Body"
-#: common/models.py:1875
+#: common/models.py:1882
msgid "Body of this message"
msgstr "Body dieser Nachricht"
-#: common/models.py:1884
+#: common/models.py:1891
msgid "Endpoint on which this message was received"
msgstr "Endpunkt, über den diese Nachricht empfangen wurde"
-#: common/models.py:1889
+#: common/models.py:1896
msgid "Worked on"
msgstr "Bearbeitet"
-#: common/models.py:1890
+#: common/models.py:1897
msgid "Was the work on this message finished?"
msgstr "Wurde die Arbeit an dieser Nachricht abgeschlossen?"
+#: common/notifications.py:292
+#, python-brace-format
+msgid "New {verbose_name}"
+msgstr ""
+
+#: common/notifications.py:294
+#, python-brace-format
+msgid "A new {verbose_name} has been created and ,assigned to you"
+msgstr ""
+
#: common/views.py:87 order/templates/order/purchase_order_detail.html:23
-#: order/views.py:102 part/views.py:191
+#: order/views.py:102 part/views.py:116
#: templates/patterns/wizard/upload.html:37
msgid "Upload File"
msgstr "Datei hochgeladen"
#: common/views.py:88 order/views.py:103
#: part/templates/part/import_wizard/ajax_match_fields.html:45
-#: part/views.py:192 templates/patterns/wizard/match_fields.html:51
+#: part/views.py:117 templates/patterns/wizard/match_fields.html:51
msgid "Match Fields"
msgstr "Übereinstimmende Felder"
@@ -2545,19 +2572,19 @@ msgstr "Felder zuteilen fehlgeschlagen"
msgid "Parts imported"
msgstr "Teile importiert"
-#: common/views.py:507 order/templates/order/order_wizard/match_parts.html:19
+#: common/views.py:511 order/templates/order/order_wizard/match_parts.html:19
#: part/templates/part/import_wizard/match_references.html:19
#: templates/patterns/wizard/match_fields.html:26
#: templates/patterns/wizard/upload.html:35
msgid "Previous Step"
msgstr "Vorheriger Schritt"
-#: company/forms.py:16 part/forms.py:21
+#: company/forms.py:16 part/forms.py:18
#: templates/InvenTree/settings/mixins/urls.html:14
msgid "URL"
msgstr "URL"
-#: company/forms.py:17 part/forms.py:22
+#: company/forms.py:17 part/forms.py:19
msgid "Image URL"
msgstr "Bild-URL"
@@ -2571,7 +2598,7 @@ msgstr "Firmenbeschreibung"
#: company/models.py:104 company/templates/company/company_base.html:100
#: templates/InvenTree/settings/plugin_settings.html:55
-#: templates/js/translated/company.js:405
+#: templates/js/translated/company.js:399
msgid "Website"
msgstr "Website"
@@ -2644,9 +2671,9 @@ msgstr "ist Hersteller"
msgid "Does this company manufacture parts?"
msgstr "Produziert diese Firma Teile?"
-#: company/models.py:144 company/serializers.py:294
-#: company/templates/company/company_base.html:106 part/serializers.py:137
-#: part/serializers.py:168 stock/serializers.py:162
+#: company/models.py:144 company/serializers.py:296
+#: company/templates/company/company_base.html:106 part/serializers.py:139
+#: part/serializers.py:170 stock/serializers.py:162
msgid "Currency"
msgstr "Währung"
@@ -2667,10 +2694,10 @@ msgstr "Teil auswählen"
#: company/templates/company/manufacturer_part.html:90
#: company/templates/company/supplier_part.html:103
#: stock/templates/stock/item_base.html:212
-#: templates/js/translated/company.js:389
-#: templates/js/translated/company.js:488
-#: templates/js/translated/company.js:632
-#: templates/js/translated/company.js:917 templates/js/translated/part.js:235
+#: templates/js/translated/company.js:383
+#: templates/js/translated/company.js:484
+#: templates/js/translated/company.js:617
+#: templates/js/translated/company.js:902 templates/js/translated/part.js:235
#: templates/js/translated/table_filters.js:411
msgid "Manufacturer"
msgstr "Hersteller"
@@ -2681,11 +2708,11 @@ msgstr "Hersteller auswählen"
#: company/models.py:266 company/templates/company/manufacturer_part.html:101
#: company/templates/company/supplier_part.html:111
-#: templates/js/translated/company.js:255
-#: templates/js/translated/company.js:487
-#: templates/js/translated/company.js:648
-#: templates/js/translated/company.js:935 templates/js/translated/order.js:1907
-#: templates/js/translated/part.js:246 templates/js/translated/part.js:956
+#: templates/js/translated/company.js:256
+#: templates/js/translated/company.js:483
+#: templates/js/translated/company.js:633
+#: templates/js/translated/company.js:920 templates/js/translated/order.js:1907
+#: templates/js/translated/part.js:246 templates/js/translated/part.js:1000
msgid "MPN"
msgstr "MPN"
@@ -2714,9 +2741,9 @@ msgstr "Parametername"
#: company/models.py:361
#: report/templates/report/inventree_test_report_base.html:95
-#: stock/models.py:2080 templates/js/translated/company.js:540
-#: templates/js/translated/company.js:763 templates/js/translated/part.js:776
-#: templates/js/translated/stock.js:1294
+#: stock/models.py:2084 templates/js/translated/company.js:531
+#: templates/js/translated/company.js:748 templates/js/translated/part.js:820
+#: templates/js/translated/stock.js:1304
msgid "Value"
msgstr "Wert"
@@ -2724,10 +2751,10 @@ msgstr "Wert"
msgid "Parameter value"
msgstr "Parameterwert"
-#: company/models.py:368 part/models.py:878 part/models.py:2339
+#: company/models.py:368 part/models.py:878 part/models.py:2327
#: part/templates/part/part_base.html:280
#: templates/InvenTree/settings/settings.html:351
-#: templates/js/translated/company.js:769 templates/js/translated/part.js:782
+#: templates/js/translated/company.js:754 templates/js/translated/part.js:826
msgid "Units"
msgstr "Einheiten"
@@ -2740,13 +2767,14 @@ msgid "Linked manufacturer part must reference the same base part"
msgstr "Verlinktes Herstellerteil muss dasselbe Basisteil referenzieren"
#: company/models.py:487 company/templates/company/company_base.html:81
-#: company/templates/company/supplier_part.html:87 order/models.py:303
+#: company/templates/company/supplier_part.html:87 order/models.py:308
#: order/templates/order/order_base.html:112 part/bom.py:237 part/bom.py:265
#: stock/templates/stock/item_base.html:229
-#: templates/js/translated/company.js:254
-#: templates/js/translated/company.js:393
-#: templates/js/translated/company.js:891 templates/js/translated/order.js:1643
-#: templates/js/translated/part.js:216 templates/js/translated/part.js:924
+#: templates/email/overdue_purchase_order.html:16
+#: templates/js/translated/company.js:255
+#: templates/js/translated/company.js:387
+#: templates/js/translated/company.js:876 templates/js/translated/order.js:1643
+#: templates/js/translated/part.js:216 templates/js/translated/part.js:968
#: templates/js/translated/table_filters.js:415
msgid "Supplier"
msgstr "Zulieferer"
@@ -2756,9 +2784,9 @@ msgid "Select supplier"
msgstr "Zulieferer auswählen"
#: company/models.py:493 company/templates/company/supplier_part.html:97
-#: part/bom.py:238 part/bom.py:266 templates/js/translated/company.js:253
+#: part/bom.py:238 part/bom.py:266 templates/js/translated/company.js:254
#: templates/js/translated/order.js:1894 templates/js/translated/part.js:227
-#: templates/js/translated/part.js:942
+#: templates/js/translated/part.js:986
msgid "SKU"
msgstr "SKU (Lagerbestandseinheit)"
@@ -2779,23 +2807,23 @@ msgid "Supplier part description"
msgstr "Zuliefererbeschreibung des Teils"
#: company/models.py:518 company/templates/company/supplier_part.html:125
-#: part/models.py:2573 part/templates/part/upload_bom.html:59
+#: part/models.py:2561 part/templates/part/upload_bom.html:59
#: report/templates/report/inventree_po_report.html:92
#: report/templates/report/inventree_so_report.html:93 stock/serializers.py:387
msgid "Note"
msgstr "Notiz"
-#: company/models.py:522 part/models.py:1688
+#: company/models.py:522 part/models.py:1683
msgid "base cost"
msgstr "Basiskosten"
-#: company/models.py:522 part/models.py:1688
+#: company/models.py:522 part/models.py:1683
msgid "Minimum charge (e.g. stocking fee)"
msgstr "Mindestpreis"
#: company/models.py:524 company/templates/company/supplier_part.html:118
#: stock/models.py:608 stock/templates/stock/item_base.html:245
-#: templates/js/translated/company.js:967 templates/js/translated/stock.js:1912
+#: templates/js/translated/company.js:952 templates/js/translated/stock.js:1922
msgid "Packaging"
msgstr "Verpackungen"
@@ -2803,7 +2831,7 @@ msgstr "Verpackungen"
msgid "Part packaging"
msgstr "Teile-Verpackungen"
-#: company/models.py:526 part/models.py:1690
+#: company/models.py:526 part/models.py:1685
msgid "multiple"
msgstr "Vielfache"
@@ -2825,7 +2853,7 @@ msgstr "Währungscode"
#: company/templates/company/company_base.html:8
#: company/templates/company/company_base.html:12
-#: templates/InvenTree/search.html:177 templates/js/translated/company.js:378
+#: templates/InvenTree/search.html:177 templates/js/translated/company.js:372
msgid "Company"
msgstr "Firma"
@@ -2843,7 +2871,7 @@ msgid "Edit company information"
msgstr "Firmeninformation bearbeiten"
#: company/templates/company/company_base.html:34
-#: templates/js/translated/company.js:321
+#: templates/js/translated/company.js:315
msgid "Edit Company"
msgstr "Firma bearbeiten"
@@ -2866,12 +2894,13 @@ msgstr "Neues Bild hochladen"
msgid "Download image from URL"
msgstr "Bild von URL herunterladen"
-#: company/templates/company/company_base.html:86 order/models.py:649
+#: company/templates/company/company_base.html:86 order/models.py:665
#: order/templates/order/sales_order_base.html:116 stock/models.py:627
-#: stock/models.py:628 stock/serializers.py:758
+#: stock/models.py:628 stock/serializers.py:745
#: stock/templates/stock/item_base.html:401
-#: templates/js/translated/company.js:385 templates/js/translated/order.js:2458
-#: templates/js/translated/stock.js:2431
+#: templates/email/overdue_sales_order.html:16
+#: templates/js/translated/company.js:379 templates/js/translated/order.js:2458
+#: templates/js/translated/stock.js:2441
#: templates/js/translated/table_filters.js:419
msgid "Customer"
msgstr "Kunde"
@@ -2999,7 +3028,7 @@ msgid "Supplier List"
msgstr "Zulieferer-Liste"
#: company/templates/company/manufacturer_part.html:15 company/views.py:45
-#: part/templates/part/prices.html:170 templates/InvenTree/search.html:179
+#: part/templates/part/prices.html:172 templates/InvenTree/search.html:179
#: templates/navbar.html:49
msgid "Manufacturers"
msgstr "Hersteller"
@@ -3012,12 +3041,12 @@ msgid "Order part"
msgstr "Teil bestellen"
#: company/templates/company/manufacturer_part.html:39
-#: templates/js/translated/company.js:680
+#: templates/js/translated/company.js:665
msgid "Edit manufacturer part"
msgstr "Herstellerteil bearbeiten"
#: company/templates/company/manufacturer_part.html:43
-#: templates/js/translated/company.js:681
+#: templates/js/translated/company.js:666
msgid "Delete manufacturer part"
msgstr "Herstellerteil löschen"
@@ -3032,7 +3061,7 @@ msgstr "Keine Herstellerdaten verfügbar"
#: company/templates/company/manufacturer_part.html:119
#: company/templates/company/supplier_part.html:15 company/views.py:39
-#: part/templates/part/part_sidebar.html:35 part/templates/part/prices.html:166
+#: part/templates/part/part_sidebar.html:35 part/templates/part/prices.html:168
#: templates/InvenTree/search.html:189 templates/navbar.html:48
msgid "Suppliers"
msgstr "Zulieferer"
@@ -3092,18 +3121,18 @@ msgstr "Zugewiesene Lagerartikel"
#: company/templates/company/supplier_part.html:7
#: company/templates/company/supplier_part.html:24 stock/models.py:592
#: stock/templates/stock/item_base.html:238
-#: templates/js/translated/company.js:907 templates/js/translated/order.js:884
-#: templates/js/translated/stock.js:1869
+#: templates/js/translated/company.js:892 templates/js/translated/order.js:884
+#: templates/js/translated/stock.js:1879
msgid "Supplier Part"
msgstr "Zuliefererteil"
#: company/templates/company/supplier_part.html:38
-#: templates/js/translated/company.js:980
+#: templates/js/translated/company.js:965
msgid "Edit supplier part"
msgstr "Zuliefererteil bearbeiten"
#: company/templates/company/supplier_part.html:42
-#: templates/js/translated/company.js:981
+#: templates/js/translated/company.js:966
msgid "Delete supplier part"
msgstr "Zuliefererteil entfernen"
@@ -3123,7 +3152,7 @@ msgstr "Neuen Lagerartikel hinzufügen"
#: company/templates/company/supplier_part.html:148
#: part/templates/part/detail.html:24 stock/templates/stock/location.html:177
-#: templates/js/translated/stock.js:380
+#: templates/js/translated/stock.js:379
msgid "New Stock Item"
msgstr "Neuer Lagerartikel"
@@ -3144,7 +3173,7 @@ msgstr "Preisinformationen ansehen"
#: company/templates/company/supplier_part.html:191
#: company/templates/company/supplier_part.html:305
-#: part/templates/part/prices.html:274 templates/js/translated/part.js:2046
+#: part/templates/part/prices.html:276 templates/js/translated/part.js:2142
msgid "Add Price Break"
msgstr "Preisstaffel hinzufügen"
@@ -3153,12 +3182,12 @@ msgid "No price break information found"
msgstr "Keine Informationen zur Preisstaffel gefunden"
#: company/templates/company/supplier_part.html:231
-#: templates/js/translated/part.js:2056
+#: templates/js/translated/part.js:2152
msgid "Delete Price Break"
msgstr "Preisstaffel löschen"
#: company/templates/company/supplier_part.html:245
-#: templates/js/translated/part.js:2070
+#: templates/js/translated/part.js:2166
msgid "Edit Price Break"
msgstr "Preisstaffel bearbeiten"
@@ -3180,9 +3209,9 @@ msgstr "Zuletzt aktualisiert"
#: stock/templates/stock/stock_app_base.html:10
#: templates/InvenTree/search.html:151
#: templates/InvenTree/settings/sidebar.html:43
-#: templates/js/translated/bom.js:554 templates/js/translated/part.js:678
-#: templates/js/translated/part.js:1226 templates/js/translated/part.js:1387
-#: templates/js/translated/stock.js:904 templates/js/translated/stock.js:1687
+#: templates/js/translated/bom.js:554 templates/js/translated/part.js:722
+#: templates/js/translated/part.js:1270 templates/js/translated/part.js:1431
+#: templates/js/translated/stock.js:903 templates/js/translated/stock.js:1697
#: templates/navbar.html:31
msgid "Stock"
msgstr "Bestand"
@@ -3209,7 +3238,7 @@ msgstr "Bepreisung"
#: stock/templates/stock/location.html:173
#: stock/templates/stock/location_sidebar.html:7
#: templates/InvenTree/search.html:153 templates/js/translated/search.js:223
-#: templates/js/translated/stock.js:2307 users/models.py:39
+#: templates/js/translated/stock.js:2317 users/models.py:39
msgid "Stock Items"
msgstr "Lagerartikel"
@@ -3238,20 +3267,20 @@ msgstr "Firmen"
msgid "New Company"
msgstr "Neue Firma"
-#: company/views.py:112 part/views.py:576
+#: company/views.py:112 part/views.py:501
msgid "Download Image"
msgstr "Bild herunterladen"
-#: company/views.py:139 part/views.py:606
+#: company/views.py:139 part/views.py:531
msgid "Image size exceeds maximum allowable size for download"
msgstr "Bildgröße überschreitet maximal-erlaubte Größe für Downloads"
-#: company/views.py:146 part/views.py:613
+#: company/views.py:146 part/views.py:538
#, python-brace-format
msgid "Invalid response: {code}"
msgstr "Ungültige Antwort {code}"
-#: company/views.py:155 part/views.py:622
+#: company/views.py:155 part/views.py:547
msgid "Supplied URL is not a valid image file"
msgstr "Angegebene URL ist kein gültiges Bild"
@@ -3320,313 +3349,314 @@ msgstr "Abfragefilter (kommagetrennte Liste mit Schlüssel=Wert-Paaren)"
msgid "Part query filters (comma-separated value of key=value pairs)"
msgstr "Teile-Abfragefilter (kommagetrennte Liste mit Schlüssel=Wert-Paaren)"
-#: order/models.py:133
+#: order/models.py:134
msgid "Order description"
msgstr "Bestellungs-Beschreibung"
-#: order/models.py:135 order/models.py:1236
+#: order/models.py:136 order/models.py:1252
msgid "Link to external page"
msgstr "Link auf externe Seite"
-#: order/models.py:143
+#: order/models.py:144
msgid "Created By"
msgstr "Erstellt von"
-#: order/models.py:150
+#: order/models.py:151
msgid "User or group responsible for this order"
msgstr "Nutzer oder Gruppe der/die für diesen Auftrag zuständig ist/sind"
-#: order/models.py:155
+#: order/models.py:156
msgid "Order notes"
msgstr "Bestell-Notizen"
-#: order/models.py:289 order/models.py:639
+#: order/models.py:294 order/models.py:655
msgid "Order reference"
msgstr "Bestell-Referenz"
-#: order/models.py:294 order/models.py:654
+#: order/models.py:299 order/models.py:670
msgid "Purchase order status"
msgstr "Bestellungs-Status"
-#: order/models.py:304
+#: order/models.py:309
msgid "Company from which the items are being ordered"
msgstr "Firma bei der die Teile bestellt werden"
-#: order/models.py:307 order/templates/order/order_base.html:124
+#: order/models.py:312 order/templates/order/order_base.html:124
#: templates/js/translated/order.js:1652
msgid "Supplier Reference"
msgstr "Zulieferer-Referenz"
-#: order/models.py:307
+#: order/models.py:312
msgid "Supplier order reference code"
msgstr "Zulieferer Bestellreferenz"
-#: order/models.py:314
+#: order/models.py:319
msgid "received by"
msgstr "Empfangen von"
-#: order/models.py:319
+#: order/models.py:324
msgid "Issue Date"
msgstr "Aufgabedatum"
-#: order/models.py:320
+#: order/models.py:325
msgid "Date order was issued"
msgstr "Datum an dem die Bestellung aufgegeben wurde"
-#: order/models.py:325
+#: order/models.py:330
msgid "Target Delivery Date"
msgstr "Ziel-Versanddatum"
-#: order/models.py:326
+#: order/models.py:331
msgid "Expected date for order delivery. Order will be overdue after this date."
msgstr "Geplantes Lieferdatum für Auftrag."
-#: order/models.py:332
+#: order/models.py:337
msgid "Date order was completed"
msgstr "Datum an dem der Auftrag fertigstellt wurde"
-#: order/models.py:368
+#: order/models.py:373
msgid "Part supplier must match PO supplier"
msgstr "Teile-Zulieferer muss dem Zulieferer der Bestellung entsprechen"
-#: order/models.py:512
+#: order/models.py:517
msgid "Quantity must be a positive number"
msgstr "Anzahl muss eine positive Zahl sein"
-#: order/models.py:650
+#: order/models.py:666
msgid "Company to which the items are being sold"
msgstr "Firma an die die Teile verkauft werden"
-#: order/models.py:656
+#: order/models.py:672
msgid "Customer Reference "
msgstr "Kundenreferenz"
-#: order/models.py:656
+#: order/models.py:672
msgid "Customer order reference code"
msgstr "Bestellreferenz"
-#: order/models.py:661
+#: order/models.py:677
msgid "Target date for order completion. Order will be overdue after this date."
msgstr "Zieldatum für Auftrags-Fertigstellung."
-#: order/models.py:664 order/models.py:1190
+#: order/models.py:680 order/models.py:1206
#: templates/js/translated/order.js:2505 templates/js/translated/order.js:2656
msgid "Shipment Date"
msgstr "Versanddatum"
-#: order/models.py:671
+#: order/models.py:687
msgid "shipped by"
msgstr "Versand von"
-#: order/models.py:726
+#: order/models.py:742
msgid "Order cannot be completed as no parts have been assigned"
msgstr "Auftrag kann nicht abgeschlossen werden, da keine Teile zugewiesen wurden"
-#: order/models.py:730
+#: order/models.py:746
msgid "Only a pending order can be marked as complete"
msgstr "Nur ein ausstehender Auftrag kann als abgeschlossen markiert werden"
-#: order/models.py:733
+#: order/models.py:749
msgid "Order cannot be completed as there are incomplete shipments"
msgstr "Auftrag kann nicht abgeschlossen werden, da unvollständige Sendungen vorhanden sind"
-#: order/models.py:736
+#: order/models.py:752
msgid "Order cannot be completed as there are incomplete line items"
msgstr "Auftrag kann nicht abgeschlossen werden, da es unvollständige Positionen gibt"
-#: order/models.py:910
+#: order/models.py:926
msgid "Item quantity"
msgstr "Anzahl"
-#: order/models.py:916
+#: order/models.py:932
msgid "Line item reference"
msgstr "Position - Referenz"
-#: order/models.py:918
+#: order/models.py:934
msgid "Line item notes"
msgstr "Position - Notizen"
-#: order/models.py:923
+#: order/models.py:939
msgid "Target shipping date for this line item"
msgstr "Lieferdatum für diese Position"
-#: order/models.py:941
+#: order/models.py:957
msgid "Context"
msgstr "Kontext"
-#: order/models.py:942
+#: order/models.py:958
msgid "Additional context for this line"
msgstr "Zusätzlicher Kontext für diese Zeile"
-#: order/models.py:950
+#: order/models.py:966
msgid "Unit price"
msgstr "Stückpreis"
-#: order/models.py:980
+#: order/models.py:996
msgid "Supplier part must match supplier"
msgstr "Lieferantenteil muss mit Lieferant übereinstimmen"
-#: order/models.py:988
+#: order/models.py:1004
msgid "deleted"
msgstr "gelöscht"
-#: order/models.py:994 order/models.py:1074 order/models.py:1099
-#: order/models.py:1184 order/models.py:1320
+#: order/models.py:1010 order/models.py:1090 order/models.py:1115
+#: order/models.py:1200 order/models.py:1336
#: templates/js/translated/order.js:3112
msgid "Order"
msgstr "Bestellung"
-#: order/models.py:995 order/models.py:1074
+#: order/models.py:1011 order/models.py:1090
#: order/templates/order/order_base.html:9
#: order/templates/order/order_base.html:18
#: report/templates/report/inventree_po_report.html:76
#: stock/templates/stock/item_base.html:184
+#: templates/email/overdue_purchase_order.html:15
#: templates/js/translated/order.js:885 templates/js/translated/order.js:1621
-#: templates/js/translated/part.js:899 templates/js/translated/stock.js:1846
-#: templates/js/translated/stock.js:2412
+#: templates/js/translated/part.js:943 templates/js/translated/stock.js:1856
+#: templates/js/translated/stock.js:2422
msgid "Purchase Order"
msgstr "Bestellung"
-#: order/models.py:1013
+#: order/models.py:1029
msgid "Supplier part"
msgstr "Zuliefererteil"
-#: order/models.py:1020 order/templates/order/order_base.html:169
+#: order/models.py:1036 order/templates/order/order_base.html:169
#: templates/js/translated/order.js:1318 templates/js/translated/order.js:2009
-#: templates/js/translated/part.js:993 templates/js/translated/part.js:1020
+#: templates/js/translated/part.js:1037 templates/js/translated/part.js:1064
#: templates/js/translated/table_filters.js:330
msgid "Received"
msgstr "Empfangen"
-#: order/models.py:1021
+#: order/models.py:1037
msgid "Number of items received"
msgstr "Empfangene Objekt-Anzahl"
-#: order/models.py:1028 part/templates/part/prices.html:179 stock/models.py:722
+#: order/models.py:1044 part/templates/part/prices.html:181 stock/models.py:722
#: stock/serializers.py:153 stock/templates/stock/item_base.html:191
-#: templates/js/translated/stock.js:1900
+#: templates/js/translated/stock.js:1910
msgid "Purchase Price"
msgstr "Preis"
-#: order/models.py:1029
+#: order/models.py:1045
msgid "Unit purchase price"
msgstr "Preis pro Einheit"
-#: order/models.py:1037
+#: order/models.py:1053
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:1109 part/templates/part/part_pricing.html:112
-#: part/templates/part/prices.html:119 part/templates/part/prices.html:288
+#: order/models.py:1125 part/templates/part/part_pricing.html:115
+#: part/templates/part/prices.html:121 part/templates/part/prices.html:290
msgid "Sale Price"
msgstr "Verkaufspreis"
-#: order/models.py:1110
+#: order/models.py:1126
msgid "Unit sale price"
msgstr "Stückverkaufspreis"
-#: order/models.py:1115
+#: order/models.py:1131
msgid "Shipped quantity"
msgstr "Versendete Menge"
-#: order/models.py:1191
+#: order/models.py:1207
msgid "Date of shipment"
msgstr "Versanddatum"
-#: order/models.py:1198
+#: order/models.py:1214
msgid "Checked By"
msgstr "Kontrolliert von"
-#: order/models.py:1199
+#: order/models.py:1215
msgid "User who checked this shipment"
msgstr "Benutzer, der diese Sendung kontrolliert hat"
-#: order/models.py:1207
+#: order/models.py:1223
msgid "Shipment number"
msgstr "Sendungsnummer"
-#: order/models.py:1214
+#: order/models.py:1230
msgid "Shipment notes"
msgstr "Versandhinweise"
-#: order/models.py:1221
+#: order/models.py:1237
msgid "Tracking Number"
msgstr "Sendungsverfolgungsnummer"
-#: order/models.py:1222
+#: order/models.py:1238
msgid "Shipment tracking information"
msgstr "Informationen zur Sendungsverfolgung"
-#: order/models.py:1229
+#: order/models.py:1245
msgid "Invoice Number"
msgstr "Rechnungsnummer"
-#: order/models.py:1230
+#: order/models.py:1246
msgid "Reference number for associated invoice"
msgstr "Referenznummer für zugehörige Rechnung"
-#: order/models.py:1248
+#: order/models.py:1264
msgid "Shipment has already been sent"
msgstr "Sendung wurde bereits versandt"
-#: order/models.py:1251
+#: order/models.py:1267
msgid "Shipment has no allocated stock items"
msgstr "Sendung hat keine zugewiesene Lagerartikel"
-#: order/models.py:1354 order/models.py:1356
+#: order/models.py:1370 order/models.py:1372
msgid "Stock item has not been assigned"
msgstr "Lagerartikel wurde nicht zugewiesen"
-#: order/models.py:1360
+#: order/models.py:1376
msgid "Cannot allocate stock item to a line with a different part"
msgstr "Kann Lagerartikel keiner Zeile mit einem anderen Teil hinzufügen"
-#: order/models.py:1362
+#: order/models.py:1378
msgid "Cannot allocate stock to a line without a part"
msgstr "Kann Lagerartikel keiner Zeile ohne Teil hinzufügen"
-#: order/models.py:1365
+#: order/models.py:1381
msgid "Allocation quantity cannot exceed stock quantity"
msgstr "Die zugeordnete Anzahl darf nicht die verfügbare Anzahl überschreiten"
-#: order/models.py:1369
+#: order/models.py:1385
msgid "StockItem is over-allocated"
msgstr "Zu viele Lagerartikel zugewiesen"
-#: order/models.py:1375 order/serializers.py:1045
+#: order/models.py:1391 order/serializers.py:1047
msgid "Quantity must be 1 for serialized stock item"
msgstr "Anzahl für serialisierte Lagerartikel muss 1 sein"
-#: order/models.py:1378
+#: order/models.py:1394
msgid "Sales order does not match shipment"
msgstr "Auftrag gehört nicht zu Sendung"
-#: order/models.py:1379
+#: order/models.py:1395
msgid "Shipment does not match sales order"
msgstr "Sendung gehört nicht zu Auftrag"
-#: order/models.py:1387
+#: order/models.py:1403
msgid "Line"
msgstr "Position"
-#: order/models.py:1395 order/serializers.py:1149 order/serializers.py:1273
+#: order/models.py:1411 order/serializers.py:1151 order/serializers.py:1275
#: templates/js/translated/model_renderers.js:301
msgid "Shipment"
msgstr "Sendung"
-#: order/models.py:1396
+#: order/models.py:1412
msgid "Sales order shipment reference"
msgstr "Sendungsnummer-Referenz"
-#: order/models.py:1408 templates/InvenTree/notifications/notifications.html:70
+#: order/models.py:1424 templates/InvenTree/notifications/notifications.html:70
msgid "Item"
msgstr "Position"
-#: order/models.py:1409
+#: order/models.py:1425
msgid "Select stock item to allocate"
msgstr "Lagerartikel für Zuordnung auswählen"
-#: order/models.py:1412
+#: order/models.py:1428
msgid "Enter stock allocation quantity"
msgstr "Anzahl für Bestandszuordnung eingeben"
@@ -3662,7 +3692,7 @@ msgstr "Lieferant muss mit der Bestellung übereinstimmen"
msgid "Purchase order must match supplier"
msgstr "Die Bestellung muss mit dem Lieferant übereinstimmen"
-#: order/serializers.py:406 order/serializers.py:1117
+#: order/serializers.py:406 order/serializers.py:1119
msgid "Line Item"
msgstr "Position"
@@ -3710,42 +3740,60 @@ msgstr "Ziel-Lagerort muss angegeben werden"
msgid "Supplied barcode values must be unique"
msgstr "Barcode muss eindeutig sein"
-#: order/serializers.py:866
+#: order/serializers.py:868
msgid "Sale price currency"
msgstr "Verkaufspreis-Währung"
-#: order/serializers.py:947
+#: order/serializers.py:949
msgid "No shipment details provided"
msgstr "Keine Sendungsdetails angegeben"
-#: order/serializers.py:1006 order/serializers.py:1126
+#: order/serializers.py:1008 order/serializers.py:1128
msgid "Line item is not associated with this order"
msgstr "Position ist nicht diesem Auftrag zugeordnet"
-#: order/serializers.py:1028
+#: order/serializers.py:1030
msgid "Quantity must be positive"
msgstr "Anzahl muss positiv sein"
-#: order/serializers.py:1139
+#: order/serializers.py:1141
msgid "Enter serial numbers to allocate"
msgstr "Seriennummern zum Zuweisen eingeben"
-#: order/serializers.py:1161 order/serializers.py:1281
+#: order/serializers.py:1163 order/serializers.py:1283
msgid "Shipment has already been shipped"
msgstr "Sendung wurde bereits versandt"
-#: order/serializers.py:1164 order/serializers.py:1284
+#: order/serializers.py:1166 order/serializers.py:1286
msgid "Shipment is not associated with this order"
msgstr "Sendung ist nicht diesem Auftrag zugeordnet"
-#: order/serializers.py:1214
+#: order/serializers.py:1216
msgid "No match found for the following serial numbers"
msgstr "Folgende Serienummern konnten nicht gefunden werden"
-#: order/serializers.py:1224
+#: order/serializers.py:1226
msgid "The following serial numbers are already allocated"
msgstr "Folgende Seriennummern sind bereits zugewiesen"
+#: order/tasks.py:26
+msgid "Overdue Purchase Order"
+msgstr ""
+
+#: order/tasks.py:31
+#, python-brace-format
+msgid "Purchase order {po} is now overdue"
+msgstr ""
+
+#: order/tasks.py:88
+msgid "Overdue Sales Order"
+msgstr ""
+
+#: order/tasks.py:93
+#, python-brace-format
+msgid "Sales order {so} is now overdue"
+msgstr ""
+
#: order/templates/order/order_base.html:33
msgid "Print purchase order report"
msgstr "Bestellbericht drucken"
@@ -3870,8 +3918,8 @@ msgstr "Zulieferer-Teil auswählen"
#: templates/js/translated/bom.js:77 templates/js/translated/build.js:427
#: templates/js/translated/build.js:579 templates/js/translated/build.js:1972
#: templates/js/translated/order.js:833 templates/js/translated/order.js:1265
-#: templates/js/translated/order.js:2731 templates/js/translated/stock.js:570
-#: templates/js/translated/stock.js:738
+#: templates/js/translated/order.js:2731 templates/js/translated/stock.js:569
+#: templates/js/translated/stock.js:737
#: templates/patterns/wizard/match_fields.html:70
msgid "Remove row"
msgstr "Zeile entfernen"
@@ -3990,7 +4038,7 @@ msgid "Pending Shipments"
msgstr "Ausstehende Sendungen"
#: order/templates/order/sales_order_detail.html:70
-#: templates/attachment_table.html:6 templates/js/translated/bom.js:1053
+#: templates/attachment_table.html:6 templates/js/translated/bom.js:1047
#: templates/js/translated/build.js:1880
msgid "Actions"
msgstr "Aktionen"
@@ -4021,47 +4069,47 @@ msgstr "Stückpreis für {part} auf {price} aktualisiert"
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr "{part} Stückpreis auf {price} und Menge auf {qty} aktualisiert"
-#: part/api.py:481
+#: part/api.py:482
msgid "Incoming Purchase Order"
msgstr "Eingehende Bestellung"
-#: part/api.py:501
+#: part/api.py:502
msgid "Outgoing Sales Order"
msgstr "Ausgehender Auftrag"
-#: part/api.py:519
+#: part/api.py:520
msgid "Stock produced by Build Order"
msgstr "Lagerartikel produziert von Bauauftrag"
-#: part/api.py:551
+#: part/api.py:552
msgid "Stock required for Build Order"
msgstr "Lagerartikel für Bauauftrag benötigt"
-#: part/api.py:637
+#: part/api.py:638
msgid "Valid"
msgstr "Gültig"
-#: part/api.py:638
+#: part/api.py:639
msgid "Validate entire Bill of Materials"
msgstr "Gesamte Stückliste validieren"
-#: part/api.py:644
+#: part/api.py:645
msgid "This option must be selected"
msgstr "Diese Option muss ausgewählt werden"
-#: part/api.py:1010
+#: part/api.py:1011
msgid "Must be greater than zero"
msgstr "Muss größer als 0 sein"
-#: part/api.py:1014
+#: part/api.py:1015
msgid "Must be a valid quantity"
msgstr "Muss eine gültige Nummer sein"
-#: part/api.py:1029
+#: part/api.py:1030
msgid "Specify location for initial part stock"
msgstr "Standort für anfänglichen Bestand angeben"
-#: part/api.py:1060 part/api.py:1064 part/api.py:1079 part/api.py:1083
+#: part/api.py:1061 part/api.py:1065 part/api.py:1080 part/api.py:1084
msgid "This field is required"
msgstr "Dieses Feld ist erforderlich"
@@ -4080,17 +4128,13 @@ msgid "Available Stock"
msgstr "Verfügbarer Bestand"
#: part/bom.py:130 part/templates/part/part_base.html:207
-#: templates/js/translated/part.js:517 templates/js/translated/part.js:537
-#: templates/js/translated/part.js:1229 templates/js/translated/part.js:1401
-#: templates/js/translated/part.js:1417
+#: templates/js/translated/part.js:561 templates/js/translated/part.js:581
+#: templates/js/translated/part.js:1273 templates/js/translated/part.js:1445
+#: templates/js/translated/part.js:1461
msgid "On Order"
msgstr "Bestellt"
-#: part/forms.py:59
-msgid "Select part category"
-msgstr "Teil-Kategorie wählen"
-
-#: part/forms.py:69
+#: part/forms.py:60
msgid "Input quantity for price calculation"
msgstr "Menge für die Preisberechnung"
@@ -4106,7 +4150,7 @@ msgstr "Standard Stichwörter"
msgid "Default keywords for parts in this category"
msgstr "Standard-Stichworte für Teile dieser Kategorie"
-#: part/models.py:115 part/models.py:2415 part/templates/part/category.html:15
+#: part/models.py:115 part/models.py:2403 part/templates/part/category.html:15
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr "Teil-Kategorie"
@@ -4123,7 +4167,7 @@ msgstr "Teil-Kategorien"
#: part/templates/part/category_sidebar.html:9
#: templates/InvenTree/index.html:85 templates/InvenTree/search.html:82
#: templates/InvenTree/settings/sidebar.html:39
-#: templates/js/translated/part.js:1768 templates/js/translated/search.js:144
+#: templates/js/translated/part.js:1864 templates/js/translated/search.js:144
#: templates/navbar.html:24 users/models.py:37
msgid "Parts"
msgstr "Teile"
@@ -4153,7 +4197,7 @@ msgstr "Die neuste Seriennummer ist"
msgid "Duplicate IPN not allowed in part settings"
msgstr "Doppelte IPN in den Teil-Einstellungen nicht erlaubt"
-#: part/models.py:738 part/models.py:2469
+#: part/models.py:738 part/models.py:2457
msgid "Part name"
msgstr "Name des Teils"
@@ -4186,12 +4230,11 @@ msgstr "Schlüsselwörter"
msgid "Part keywords to improve visibility in search results"
msgstr "Schlüsselworte um die Sichtbarkeit in Suchergebnissen zu verbessern"
-#: part/models.py:776 part/models.py:2171 part/models.py:2414
+#: part/models.py:776 part/models.py:2159 part/models.py:2402
#: part/templates/part/part_base.html:257
-#: part/templates/part/set_category.html:15
#: templates/InvenTree/notifications/notifications.html:65
#: templates/InvenTree/settings/settings.html:231
-#: templates/js/translated/part.js:1369
+#: templates/js/translated/part.js:1413 templates/js/translated/part.js:1639
msgid "Category"
msgstr "Kategorie"
@@ -4200,8 +4243,8 @@ msgid "Part category"
msgstr "Teile-Kategorie"
#: part/models.py:782 part/templates/part/part_base.html:266
-#: templates/js/translated/part.js:666 templates/js/translated/part.js:1322
-#: templates/js/translated/stock.js:1659
+#: templates/js/translated/part.js:710 templates/js/translated/part.js:1366
+#: templates/js/translated/stock.js:1669
msgid "IPN"
msgstr "IPN (Interne Produktnummer)"
@@ -4214,7 +4257,7 @@ msgid "Part revision or version number"
msgstr "Revisions- oder Versionsnummer"
#: part/models.py:790 part/templates/part/part_base.html:273
-#: report/models.py:170 templates/js/translated/part.js:670
+#: report/models.py:170 templates/js/translated/part.js:714
msgid "Revision"
msgstr "Version"
@@ -4302,317 +4345,321 @@ msgstr "BOM Kontrolldatum"
msgid "Creation User"
msgstr "Erstellungs-Nutzer"
-#: part/models.py:1690
+#: part/models.py:1685
msgid "Sell multiple"
msgstr "Mehrere verkaufen"
-#: part/models.py:2218
+#: part/models.py:2206
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:2235
+#: part/models.py:2223
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:2255 templates/js/translated/part.js:1819
-#: templates/js/translated/stock.js:1274
+#: part/models.py:2243 templates/js/translated/part.js:1915
+#: templates/js/translated/stock.js:1284
msgid "Test Name"
msgstr "Test-Name"
-#: part/models.py:2256
+#: part/models.py:2244
msgid "Enter a name for the test"
msgstr "Namen für diesen Test eingeben"
-#: part/models.py:2261
+#: part/models.py:2249
msgid "Test Description"
msgstr "Test-Beschreibung"
-#: part/models.py:2262
+#: part/models.py:2250
msgid "Enter description for this test"
msgstr "Beschreibung für diesen Test eingeben"
-#: part/models.py:2267 templates/js/translated/part.js:1828
+#: part/models.py:2255 templates/js/translated/part.js:1924
#: templates/js/translated/table_filters.js:294
msgid "Required"
msgstr "Benötigt"
-#: part/models.py:2268
+#: part/models.py:2256
msgid "Is this test required to pass?"
msgstr "Muss dieser Test erfolgreich sein?"
-#: part/models.py:2273 templates/js/translated/part.js:1836
+#: part/models.py:2261 templates/js/translated/part.js:1932
msgid "Requires Value"
msgstr "Erfordert Wert"
-#: part/models.py:2274
+#: part/models.py:2262
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:2279 templates/js/translated/part.js:1843
+#: part/models.py:2267 templates/js/translated/part.js:1939
msgid "Requires Attachment"
msgstr "Anhang muss eingegeben werden"
-#: part/models.py:2280
+#: part/models.py:2268
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:2288
+#: part/models.py:2276
#, python-brace-format
msgid "Illegal character in template name ({c})"
msgstr "Ungültiges Zeichen im Vorlagename ({c})"
-#: part/models.py:2324
+#: part/models.py:2312
msgid "Parameter template name must be unique"
msgstr "Vorlagen-Name des Parameters muss eindeutig sein"
-#: part/models.py:2332
+#: part/models.py:2320
msgid "Parameter Name"
msgstr "Name des Parameters"
-#: part/models.py:2339
+#: part/models.py:2327
msgid "Parameter Units"
msgstr "Einheit des Parameters"
-#: part/models.py:2370
+#: part/models.py:2358
msgid "Parent Part"
msgstr "Ausgangsteil"
-#: part/models.py:2372 part/models.py:2420 part/models.py:2421
+#: part/models.py:2360 part/models.py:2408 part/models.py:2409
#: templates/InvenTree/settings/settings.html:226
msgid "Parameter Template"
msgstr "Parameter Vorlage"
-#: part/models.py:2374
+#: part/models.py:2362
msgid "Data"
msgstr "Wert"
-#: part/models.py:2374
+#: part/models.py:2362
msgid "Parameter Value"
msgstr "Parameter Wert"
-#: part/models.py:2425 templates/InvenTree/settings/settings.html:235
+#: part/models.py:2413 templates/InvenTree/settings/settings.html:235
msgid "Default Value"
msgstr "Standard-Wert"
-#: part/models.py:2426
+#: part/models.py:2414
msgid "Default Parameter Value"
msgstr "Standard Parameter Wert"
-#: part/models.py:2461
+#: part/models.py:2449
msgid "Part ID or part name"
msgstr "Teilnummer oder Teilname"
-#: part/models.py:2464 templates/js/translated/model_renderers.js:200
+#: part/models.py:2452 templates/js/translated/model_renderers.js:200
msgid "Part ID"
msgstr "Teil-ID"
-#: part/models.py:2465
+#: part/models.py:2453
msgid "Unique part ID value"
msgstr "Eindeutige Teil-ID"
-#: part/models.py:2468
+#: part/models.py:2456
msgid "Part Name"
msgstr "Name des Teils"
-#: part/models.py:2472
+#: part/models.py:2460
msgid "Part IPN"
msgstr "Teil-ID"
-#: part/models.py:2473
+#: part/models.py:2461
msgid "Part IPN value"
msgstr "IPN-Wert des Teils"
-#: part/models.py:2476
+#: part/models.py:2464
msgid "Level"
msgstr "Stufe"
-#: part/models.py:2477
+#: part/models.py:2465
msgid "BOM level"
msgstr "Stücklistenebene"
-#: part/models.py:2546
+#: part/models.py:2534
msgid "Select parent part"
msgstr "Ausgangsteil auswählen"
-#: part/models.py:2554
+#: part/models.py:2542
msgid "Sub part"
msgstr "Untergeordnetes Teil"
-#: part/models.py:2555
+#: part/models.py:2543
msgid "Select part to be used in BOM"
msgstr "Teil für die Nutzung in der Stückliste auswählen"
-#: part/models.py:2561
+#: part/models.py:2549
msgid "BOM quantity for this BOM item"
msgstr "Stücklisten-Anzahl für dieses Stücklisten-Teil"
-#: part/models.py:2563 part/templates/part/upload_bom.html:58
-#: templates/js/translated/bom.js:877 templates/js/translated/bom.js:971
+#: part/models.py:2551 part/templates/part/upload_bom.html:58
+#: templates/js/translated/bom.js:871 templates/js/translated/bom.js:965
#: templates/js/translated/table_filters.js:92
msgid "Optional"
msgstr "Optional"
-#: part/models.py:2563
+#: part/models.py:2551
msgid "This BOM item is optional"
msgstr "Diese Stücklisten-Position ist optional"
-#: part/models.py:2566 part/templates/part/upload_bom.html:55
+#: part/models.py:2554 part/templates/part/upload_bom.html:55
msgid "Overage"
msgstr "Überschuss"
-#: part/models.py:2567
+#: part/models.py:2555
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr "Geschätzter Ausschuss (absolut oder prozentual)"
-#: part/models.py:2570
+#: part/models.py:2558
msgid "BOM item reference"
msgstr "Referenz der Postion auf der Stückliste"
-#: part/models.py:2573
+#: part/models.py:2561
msgid "BOM item notes"
msgstr "Notizen zur Stücklisten-Position"
-#: part/models.py:2575
+#: part/models.py:2563
msgid "Checksum"
msgstr "Prüfsumme"
-#: part/models.py:2575
+#: part/models.py:2563
msgid "BOM line checksum"
msgstr "Prüfsumme der Stückliste"
-#: part/models.py:2579 part/templates/part/upload_bom.html:57
-#: templates/js/translated/bom.js:988
+#: part/models.py:2567 part/templates/part/upload_bom.html:57
+#: templates/js/translated/bom.js:982
#: templates/js/translated/table_filters.js:68
#: templates/js/translated/table_filters.js:88
msgid "Inherited"
msgstr "Geerbt"
-#: part/models.py:2580
+#: part/models.py:2568
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:2585 part/templates/part/upload_bom.html:56
-#: templates/js/translated/bom.js:980
+#: part/models.py:2573 part/templates/part/upload_bom.html:56
+#: templates/js/translated/bom.js:974
msgid "Allow Variants"
msgstr "Varianten zulassen"
-#: part/models.py:2586
+#: part/models.py:2574
msgid "Stock items for variant parts can be used for this BOM item"
msgstr "Bestand von Varianten kann für diese Stücklisten-Position verwendet werden"
-#: part/models.py:2664 stock/models.py:460
+#: part/models.py:2652 stock/models.py:460
msgid "Quantity must be integer value for trackable parts"
msgstr "Menge muss eine Ganzzahl sein"
-#: part/models.py:2673 part/models.py:2675
+#: part/models.py:2661 part/models.py:2663
msgid "Sub part must be specified"
msgstr "Zuliefererteil muss festgelegt sein"
-#: part/models.py:2780
+#: part/models.py:2768
msgid "BOM Item Substitute"
msgstr "Stücklisten Ersatzteile"
-#: part/models.py:2801
+#: part/models.py:2789
msgid "Substitute part cannot be the same as the master part"
msgstr "Ersatzteil kann nicht identisch mit dem Hauptteil sein"
-#: part/models.py:2814
+#: part/models.py:2802
msgid "Parent BOM item"
msgstr "Übergeordnete Stücklisten Position"
-#: part/models.py:2822
+#: part/models.py:2810
msgid "Substitute part"
msgstr "Ersatzteil"
-#: part/models.py:2833
+#: part/models.py:2825
msgid "Part 1"
msgstr "Teil 1"
-#: part/models.py:2837
+#: part/models.py:2829
msgid "Part 2"
msgstr "Teil 2"
-#: part/models.py:2837
+#: part/models.py:2829
msgid "Select Related Part"
msgstr "verknüpftes Teil auswählen"
-#: part/models.py:2868
-msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique"
-msgstr "Fehler bei Verwandschaft: Ist das Teil mit sich selbst verwandt oder ist das die Verwandtschaft nicht eindeutig?"
+#: part/models.py:2847
+msgid "Part relationship cannot be created between a part and itself"
+msgstr ""
-#: part/serializers.py:138 part/serializers.py:169 stock/serializers.py:163
+#: part/models.py:2851
+msgid "Duplicate relationship already exists"
+msgstr ""
+
+#: part/serializers.py:140 part/serializers.py:171 stock/serializers.py:163
msgid "Purchase currency of this stock item"
msgstr "Kaufwährung dieses Lagerartikels"
-#: part/serializers.py:794
+#: part/serializers.py:796
msgid "Select part to copy BOM from"
msgstr "Bauteil auswählen, von dem Stückliste kopiert wird"
-#: part/serializers.py:802
+#: part/serializers.py:804
msgid "Remove Existing Data"
msgstr "Bestehende Daten entfernen"
-#: part/serializers.py:803
+#: part/serializers.py:805
msgid "Remove existing BOM items before copying"
msgstr "Bestehende Stücklisten-Positionen vor dem Kopieren entfernen"
-#: part/serializers.py:808
+#: part/serializers.py:810
msgid "Include Inherited"
msgstr "Vererbtes einschließen"
-#: part/serializers.py:809
+#: part/serializers.py:811
msgid "Include BOM items which are inherited from templated parts"
msgstr "Stücklisten-Positionen einbeziehen, die von Vorlage-Teilen geerbt werden"
-#: part/serializers.py:814
+#: part/serializers.py:816
msgid "Skip Invalid Rows"
msgstr "Ungültige Zeilen überspringen"
-#: part/serializers.py:815
+#: part/serializers.py:817
msgid "Enable this option to skip invalid rows"
msgstr "Aktiviere diese Option, um ungültige Zeilen zu überspringen"
-#: part/serializers.py:820
+#: part/serializers.py:822
msgid "Copy Substitute Parts"
msgstr "Ersatzteile kopieren"
-#: part/serializers.py:821
+#: part/serializers.py:823
msgid "Copy substitute parts when duplicate BOM items"
msgstr "Ersatzteile beim Duplizieren von Stücklisten-Positionen kopieren"
-#: part/serializers.py:861
+#: part/serializers.py:863
msgid "Clear Existing BOM"
msgstr "Bestehende Stückliste löschen"
-#: part/serializers.py:862
+#: part/serializers.py:864
msgid "Delete existing BOM items before uploading"
msgstr "Bestehende Stücklisten-Positionen vor dem Importieren entfernen"
-#: part/serializers.py:892
+#: part/serializers.py:894
msgid "No part column specified"
msgstr "Keine Bauteilspalte angegeben"
-#: part/serializers.py:935
+#: part/serializers.py:937
msgid "Multiple matching parts found"
msgstr "Mehrere übereinstimmende Teile gefunden"
-#: part/serializers.py:938
+#: part/serializers.py:940
msgid "No matching part found"
msgstr "Keine passenden Teile gefunden"
-#: part/serializers.py:941
+#: part/serializers.py:943
msgid "Part is not designated as a component"
msgstr "Teil ist nicht als Komponente angelegt"
-#: part/serializers.py:950
+#: part/serializers.py:952
msgid "Quantity not provided"
msgstr "Menge nicht angegeben"
-#: part/serializers.py:958
+#: part/serializers.py:960
msgid "Invalid quantity"
msgstr "Ungültige Menge"
-#: part/serializers.py:979
+#: part/serializers.py:981
msgid "At least one BOM item is required"
msgstr "Mindestens eine Stückliste-Position ist erforderlich"
@@ -5088,10 +5135,10 @@ msgid "Part is virtual (not a physical part)"
msgstr "Teil ist virtuell (kein physisches Teil)"
#: part/templates/part/part_base.html:143
-#: templates/js/translated/company.js:623
-#: templates/js/translated/company.js:882
+#: templates/js/translated/company.js:608
+#: templates/js/translated/company.js:867
#: templates/js/translated/model_renderers.js:192
-#: templates/js/translated/part.js:581 templates/js/translated/part.js:658
+#: templates/js/translated/part.js:625 templates/js/translated/part.js:702
msgid "Inactive"
msgstr "Inaktiv"
@@ -5120,13 +5167,13 @@ msgstr "Zu Bauaufträgen zugeordnet"
msgid "Allocated to Sales Orders"
msgstr "Zur Bestellung zugeordnet"
-#: part/templates/part/part_base.html:232 templates/js/translated/bom.js:1009
+#: part/templates/part/part_base.html:232 templates/js/translated/bom.js:1003
msgid "Can Build"
msgstr "Herstellbar"
-#: part/templates/part/part_base.html:238 templates/js/translated/part.js:520
-#: templates/js/translated/part.js:540 templates/js/translated/part.js:1233
-#: templates/js/translated/part.js:1405 templates/js/translated/part.js:1421
+#: part/templates/part/part_base.html:238 templates/js/translated/part.js:564
+#: templates/js/translated/part.js:584 templates/js/translated/part.js:1277
+#: templates/js/translated/part.js:1449 templates/js/translated/part.js:1465
msgid "Building"
msgstr "Im Bau"
@@ -5143,7 +5190,7 @@ msgstr "letzte Seriennummer"
msgid "Search for serial number"
msgstr "Nach Seriennummer suchen"
-#: part/templates/part/part_base.html:443 part/templates/part/prices.html:147
+#: part/templates/part/part_base.html:443 part/templates/part/prices.html:149
msgid "Calculate"
msgstr "Berechnen"
@@ -5161,54 +5208,55 @@ msgstr "Zulieferer-Preise"
#: part/templates/part/part_pricing.html:26
#: part/templates/part/part_pricing.html:52
-#: part/templates/part/part_pricing.html:100
-#: part/templates/part/part_pricing.html:115 part/templates/part/prices.html:28
-#: part/templates/part/prices.html:55 part/templates/part/prices.html:106
-#: part/templates/part/prices.html:123
+#: part/templates/part/part_pricing.html:103
+#: part/templates/part/part_pricing.html:118 part/templates/part/prices.html:28
+#: part/templates/part/prices.html:55 part/templates/part/prices.html:108
+#: part/templates/part/prices.html:125
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:104
-#: part/templates/part/part_pricing.html:119 part/templates/part/prices.html:35
-#: part/templates/part/prices.html:62 part/templates/part/prices.html:111
-#: part/templates/part/prices.html:128
+#: part/templates/part/part_pricing.html:107
+#: part/templates/part/part_pricing.html:122 part/templates/part/prices.html:35
+#: part/templates/part/prices.html:62 part/templates/part/prices.html:113
+#: part/templates/part/prices.html:130
msgid "Total Cost"
msgstr "Gesamtkosten"
#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:43
-#: templates/js/translated/bom.js:963
+#: templates/js/translated/bom.js:957
msgid "No supplier pricing available"
msgstr "Keine Zulieferer-Preise verfügbar"
#: part/templates/part/part_pricing.html:48 part/templates/part/prices.html:52
-#: part/templates/part/prices.html:246
+#: part/templates/part/prices.html:248
msgid "BOM Pricing"
msgstr "Stücklistenpreise"
-#: part/templates/part/part_pricing.html:65 part/templates/part/prices.html:72
+#: part/templates/part/part_pricing.html:66 part/templates/part/prices.html:72
msgid "Unit Purchase Price"
msgstr "Kaufpreis pro Einheit"
-#: part/templates/part/part_pricing.html:71 part/templates/part/prices.html:79
+#: part/templates/part/part_pricing.html:72 part/templates/part/prices.html:79
msgid "Total Purchase Price"
msgstr "Gesamter Kaufpreis"
-#: part/templates/part/part_pricing.html:81 part/templates/part/prices.html:89
+#: part/templates/part/part_pricing.html:82 part/templates/part/prices.html:89
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:88 part/templates/part/prices.html:96
+#: part/templates/part/part_pricing.html:91 part/templates/part/prices.html:98
msgid "No BOM pricing available"
msgstr "Keine Stücklisten-Preise verfügbar"
-#: part/templates/part/part_pricing.html:97 part/templates/part/prices.html:105
+#: part/templates/part/part_pricing.html:100
+#: part/templates/part/prices.html:107
msgid "Internal Price"
msgstr "Interner Preis"
-#: part/templates/part/part_pricing.html:128
-#: part/templates/part/prices.html:137
+#: part/templates/part/part_pricing.html:131
+#: part/templates/part/prices.html:139
msgid "No pricing information is available for this part."
msgstr "Keine Preise für dieses Teil verfügbar"
@@ -5232,45 +5280,6 @@ msgstr "Testvorlagen"
msgid "Select from existing images"
msgstr "Aus vorhandenen Bildern auswählen"
-#: part/templates/part/partial_delete.html:9
-#, python-format
-msgid "Part '%(full_name)s' cannot be deleted as it is still marked as active.\n"
-"
Disable the \"Active\" part attribute and re-try.\n"
-" "
-msgstr "Teil '%(full_name)s' kann nicht gelöscht werden, da er noch als aktivmarkiert ist.\n"
-"
Deaktivieren Sie das Attribut \"Aktiv\" und versuchen Sie es erneut.\n"
-" "
-
-#: part/templates/part/partial_delete.html:17
-#, 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?"
-
-#: part/templates/part/partial_delete.html:22
-#, python-format
-msgid "This part is used in BOMs for %(count)s other parts. If you delete this part, the BOMs for the following parts will be updated"
-msgstr "Dieser Teil wird in Stücklisten für %(count)s andere Teile verwendet. Wenn Sie dieses Teil löschen, werden die Stücklisten für die folgenden Teile aktualisiert"
-
-#: part/templates/part/partial_delete.html:32
-#, python-format
-msgid "There are %(count)s stock entries defined for this part. If you delete this part, the following stock entries will also be deleted:"
-msgstr "Es sind %(count)s Lagerartikel für diesen Teil definiert. Wenn Sie diesen Teil löschen, werden auch die folgenden Lagerartikel gelöscht:"
-
-#: part/templates/part/partial_delete.html:43
-#, python-format
-msgid "There are %(count)s manufacturers defined for this part. If you delete this part, the following manufacturer parts will also be deleted:"
-msgstr "Es sind %(count)s Hersteller für diesen Teil definiert. Wenn Sie diesen Teil löschen, werden auch die folgenden Herstellerteile gelöscht:"
-
-#: part/templates/part/partial_delete.html:54
-#, python-format
-msgid "There are %(count)s suppliers defined for this part. If you delete this part, the following supplier parts will also be deleted:"
-msgstr "Es sind %(count)s Zulieferer für diesen Teil definiert. Wenn Sie diesen Teil löschen, werden auch die folgenden Zuliefererteile gelöscht:"
-
-#: part/templates/part/partial_delete.html:67
-#, python-format
-msgid "There are %(count)s unique parts tracked for '%(full_name)s'. Deleting this part will permanently remove this tracking information."
-msgstr "Es gibt %(count)s einzigartige Teile, die für '%(full_name)s' verfolgt werden. Das Löschen dieses Teils wird diese Tracking-Informationen dauerhaft entfernen."
-
#: part/templates/part/prices.html:19
msgid "Pricing ranges"
msgstr "Preisspannen"
@@ -5287,66 +5296,58 @@ msgstr "Einkaufpreis anzeigen"
msgid "Show BOM cost"
msgstr "Stücklisten-Kosten"
-#: part/templates/part/prices.html:120
+#: part/templates/part/prices.html:122
msgid "Show sale cost"
msgstr "Verkaufskosten anzeigen"
-#: part/templates/part/prices.html:121
+#: part/templates/part/prices.html:123
msgid "Show sale price"
msgstr "Verkaufspreis anzeigen"
-#: part/templates/part/prices.html:143
+#: part/templates/part/prices.html:145
msgid "Calculation parameters"
msgstr "Berechnungsparameter"
-#: part/templates/part/prices.html:158 templates/js/translated/bom.js:957
+#: part/templates/part/prices.html:160 templates/js/translated/bom.js:951
msgid "Supplier Cost"
msgstr "Zuliefererkosten"
-#: part/templates/part/prices.html:159 part/templates/part/prices.html:180
-#: part/templates/part/prices.html:204 part/templates/part/prices.html:234
-#: part/templates/part/prices.html:260 part/templates/part/prices.html:289
+#: part/templates/part/prices.html:161 part/templates/part/prices.html:182
+#: part/templates/part/prices.html:206 part/templates/part/prices.html:236
+#: part/templates/part/prices.html:262 part/templates/part/prices.html:291
msgid "Jump to overview"
msgstr "Zur Übersicht gehen"
-#: part/templates/part/prices.html:184
+#: part/templates/part/prices.html:186
msgid "Stock Pricing"
msgstr "Bestandspreise"
-#: part/templates/part/prices.html:193
+#: part/templates/part/prices.html:195
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:203
+#: part/templates/part/prices.html:205
msgid "Internal Cost"
msgstr "Interne Kosten"
-#: part/templates/part/prices.html:218
+#: part/templates/part/prices.html:220
msgid "Add Internal Price Break"
msgstr "Interne Preisspanne hinzufügen"
-#: part/templates/part/prices.html:233
+#: part/templates/part/prices.html:235
msgid "BOM Cost"
msgstr "Stücklistenkosten"
-#: part/templates/part/prices.html:259
+#: part/templates/part/prices.html:261
msgid "Sale Cost"
msgstr "Verkaufskosten"
-#: part/templates/part/prices.html:300
+#: part/templates/part/prices.html:302
msgid "No sale pice history available for this part."
msgstr "Keine Verkaufsgeschichte für diesen Teil verfügbar."
-#: part/templates/part/set_category.html:9
-msgid "Set category for the following parts"
-msgstr "Kategorie für Teile setzen"
-
-#: part/templates/part/set_category.html:32
-msgid "Remove part"
-msgstr "Teil entfernen"
-
-#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:543
-#: templates/js/translated/part.js:1221 templates/js/translated/part.js:1425
+#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:587
+#: templates/js/translated/part.js:1265 templates/js/translated/part.js:1469
msgid "No Stock"
msgstr "Kein Bestand"
@@ -5409,56 +5410,39 @@ msgstr "Unbekannte Datenbank"
msgid "{title} v{version}"
msgstr "{title} v{version}"
-#: part/views.py:74
-msgid "Set Part Category"
-msgstr "Teil-Kategorie auswählen"
-
-#: part/views.py:122
-#, python-brace-format
-msgid "Set category for {n} parts"
-msgstr "Kategorie für {n} Teile setzen"
-
-#: part/views.py:193
+#: part/views.py:118
msgid "Match References"
msgstr "Referenzen zuteilen"
-#: part/views.py:494
+#: part/views.py:419
msgid "None"
msgstr "Kein(e)"
-#: part/views.py:556
+#: part/views.py:481
msgid "Part QR Code"
msgstr "Teil-QR-Code"
-#: part/views.py:650
+#: part/views.py:575
msgid "Select Part Image"
msgstr "Teilbild auswählen"
-#: part/views.py:676
+#: part/views.py:601
msgid "Updated part image"
msgstr "Teilbild aktualisiert"
-#: part/views.py:679
+#: part/views.py:604
msgid "Part image not found"
msgstr "Teilbild nicht gefunden"
-#: part/views.py:768
-msgid "Confirm Part Deletion"
-msgstr "Löschen des Teils bestätigen"
-
-#: part/views.py:776
-msgid "Part was deleted"
-msgstr "Teil wurde gelöscht"
-
-#: part/views.py:785
+#: part/views.py:693
msgid "Part Pricing"
msgstr "Teilbepreisung"
-#: part/views.py:976
+#: part/views.py:884
msgid "Delete Part Category"
msgstr "Teil-Kategorie löschen"
-#: part/views.py:983
+#: part/views.py:891
msgid "Part category was deleted"
msgstr "Teil-Kategorie wurde gelöscht"
@@ -5518,21 +5502,21 @@ msgstr "Barcode Lagerartikel zugeordnet"
msgid "Label printing failed"
msgstr "Labeldruck fehlgeschlagen"
-#: plugin/builtin/integration/core_notifications.py:28
+#: plugin/builtin/integration/core_notifications.py:29
msgid "InvenTree contributors"
msgstr "InvenTree Mitwirkende"
-#: plugin/builtin/integration/core_notifications.py:29
+#: plugin/builtin/integration/core_notifications.py:30
msgid "Integrated outgoing notificaton methods"
msgstr "Integrierte ausgehende Benachrichtigungsmethoden"
-#: plugin/builtin/integration/core_notifications.py:33
-#: plugin/builtin/integration/core_notifications.py:52
+#: plugin/builtin/integration/core_notifications.py:34
+#: plugin/builtin/integration/core_notifications.py:53
msgid "Enable email notifications"
msgstr "E-Mail-Benachrichtigungen aktivieren"
-#: plugin/builtin/integration/core_notifications.py:34
-#: plugin/builtin/integration/core_notifications.py:53
+#: plugin/builtin/integration/core_notifications.py:35
+#: plugin/builtin/integration/core_notifications.py:54
msgid "Allow sending of emails for event notifications"
msgstr "Das Senden von Benachrichtigungen als E-Mails erlauben"
@@ -5648,15 +5632,19 @@ msgstr "Installation nicht bestätigt"
msgid "Either packagename of URL must be provided"
msgstr "Entweder Paketname oder URL muss angegeben werden"
-#: report/api.py:166
+#: report/api.py:179
msgid "No valid objects provided to template"
msgstr "Keine korrekten Objekte für Vorlage gegeben"
-#: report/api.py:198 report/api.py:239
+#: report/api.py:215 report/api.py:256
#, python-brace-format
msgid "Template file '{template}' is missing or does not exist"
msgstr "Vorlagendatei '{template}' fehlt oder existiert nicht"
+#: report/api.py:359
+msgid "Test report"
+msgstr ""
+
#: report/models.py:152
msgid "Template name"
msgstr "Vorlagen Name"
@@ -5759,7 +5747,7 @@ msgstr "Lagerartikel Test-Bericht"
#: templates/js/translated/build.js:1173 templates/js/translated/build.js:1671
#: templates/js/translated/model_renderers.js:106
#: templates/js/translated/order.js:115 templates/js/translated/order.js:3229
-#: templates/js/translated/order.js:3318 templates/js/translated/stock.js:435
+#: templates/js/translated/order.js:3318 templates/js/translated/stock.js:434
msgid "Serial Number"
msgstr "Seriennummer"
@@ -5768,19 +5756,19 @@ msgid "Test Results"
msgstr "Testergebnisse"
#: report/templates/report/inventree_test_report_base.html:93
-#: stock/models.py:2068
+#: stock/models.py:2072
msgid "Test"
msgstr "Test"
#: report/templates/report/inventree_test_report_base.html:94
-#: stock/models.py:2074
+#: stock/models.py:2078
msgid "Result"
msgstr "Ergebnis"
#: report/templates/report/inventree_test_report_base.html:97
#: templates/InvenTree/settings/plugin.html:51
#: templates/InvenTree/settings/plugin_settings.html:38
-#: templates/js/translated/order.js:1669 templates/js/translated/stock.js:2340
+#: templates/js/translated/order.js:1669 templates/js/translated/stock.js:2350
msgid "Date"
msgstr "Datum"
@@ -5798,20 +5786,20 @@ msgid "Installed Items"
msgstr "Verbaute Objekte"
#: report/templates/report/inventree_test_report_base.html:137
-#: templates/js/translated/stock.js:555 templates/js/translated/stock.js:725
-#: templates/js/translated/stock.js:2589
+#: templates/js/translated/stock.js:554 templates/js/translated/stock.js:724
+#: templates/js/translated/stock.js:2599
msgid "Serial"
msgstr "Seriennummer"
-#: stock/api.py:504
+#: stock/api.py:505
msgid "Quantity is required"
msgstr "Menge ist erforderlich"
-#: stock/api.py:511
+#: stock/api.py:512
msgid "Valid part must be supplied"
msgstr "Gültiges Teil muss angegeben werden"
-#: stock/api.py:536
+#: stock/api.py:537
msgid "Serial numbers cannot be supplied for a non-trackable part"
msgstr "Seriennummern können für nicht verfolgbare Teile nicht angegeben werden"
@@ -5919,7 +5907,7 @@ msgid "Destination Sales Order"
msgstr "Ziel-Auftrag"
#: stock/models.py:690 stock/templates/stock/item_base.html:429
-#: templates/js/translated/stock.js:1816
+#: templates/js/translated/stock.js:1826
msgid "Expiry Date"
msgstr "Ablaufdatum"
@@ -5973,79 +5961,79 @@ msgstr "Anzahl stimmt nicht mit den Seriennummern überein"
msgid "Serial numbers already exist: {exists}"
msgstr "Seriennummern {exists} existieren bereits"
-#: stock/models.py:1321
+#: stock/models.py:1325
msgid "Stock item has been assigned to a sales order"
msgstr "Artikel wurde einem Kundenauftrag zugewiesen"
-#: stock/models.py:1324
+#: stock/models.py:1328
msgid "Stock item is installed in another item"
msgstr "Lagerartikel ist in anderem Element verbaut"
-#: stock/models.py:1327
+#: stock/models.py:1331
msgid "Stock item contains other items"
msgstr "Lagerartikel enthält andere Artikel"
-#: stock/models.py:1330
+#: stock/models.py:1334
msgid "Stock item has been assigned to a customer"
msgstr "Artikel wurde einem Kunden zugewiesen"
-#: stock/models.py:1333
+#: stock/models.py:1337
msgid "Stock item is currently in production"
msgstr "Lagerartikel wird aktuell produziert"
-#: stock/models.py:1336
+#: stock/models.py:1340
msgid "Serialized stock cannot be merged"
msgstr "Nachverfolgbare Lagerartikel können nicht zusammengeführt werden"
-#: stock/models.py:1343 stock/serializers.py:908
+#: stock/models.py:1347 stock/serializers.py:895
msgid "Duplicate stock items"
msgstr "Artikel duplizeren"
-#: stock/models.py:1347
+#: stock/models.py:1351
msgid "Stock items must refer to the same part"
msgstr "Lagerartikel müssen auf dasselbe Teil verweisen"
-#: stock/models.py:1351
+#: stock/models.py:1355
msgid "Stock items must refer to the same supplier part"
msgstr "Lagerartikel müssen auf dasselbe Lieferantenteil verweisen"
-#: stock/models.py:1355
+#: stock/models.py:1359
msgid "Stock status codes must match"
msgstr "Status-Codes müssen zusammenpassen"
-#: stock/models.py:1524
+#: stock/models.py:1528
msgid "StockItem cannot be moved as it is not in stock"
msgstr "Lagerartikel kann nicht bewegt werden, da kein Bestand vorhanden ist"
-#: stock/models.py:1986
+#: stock/models.py:1990
msgid "Entry notes"
msgstr "Eintrags-Notizen"
-#: stock/models.py:2044
+#: stock/models.py:2048
msgid "Value must be provided for this test"
msgstr "Wert muss für diesen Test angegeben werden"
-#: stock/models.py:2050
+#: stock/models.py:2054
msgid "Attachment must be uploaded for this test"
msgstr "Anhang muss für diesen Test hochgeladen werden"
-#: stock/models.py:2069
+#: stock/models.py:2073
msgid "Test name"
msgstr "Name des Tests"
-#: stock/models.py:2075
+#: stock/models.py:2079
msgid "Test result"
msgstr "Testergebnis"
-#: stock/models.py:2081
+#: stock/models.py:2085
msgid "Test output value"
msgstr "Test Ausgabe Wert"
-#: stock/models.py:2088
+#: stock/models.py:2092
msgid "Test result attachment"
msgstr "Test Ergebnis Anhang"
-#: stock/models.py:2094
+#: stock/models.py:2098
msgid "Test notes"
msgstr "Test Notizen"
@@ -6066,7 +6054,7 @@ msgstr "Anzahl darf nicht die verfügbare Menge überschreiten ({q})"
msgid "Enter serial numbers for new items"
msgstr "Seriennummern für neue Teile eingeben"
-#: stock/serializers.py:309 stock/serializers.py:865 stock/serializers.py:1098
+#: stock/serializers.py:309 stock/serializers.py:852 stock/serializers.py:1085
msgid "Destination stock location"
msgstr "Ziel-Bestand"
@@ -6106,63 +6094,63 @@ msgstr " Transaktionsnotizen hinzufügen (optional)"
msgid "Destination location for returned item"
msgstr ""
-#: stock/serializers.py:720
+#: stock/serializers.py:707
msgid "Part must be salable"
msgstr "Teil muss verkaufbar sein"
-#: stock/serializers.py:724
+#: stock/serializers.py:711
msgid "Item is allocated to a sales order"
msgstr "Artikel ist einem Kundenauftrag zugeordnet"
-#: stock/serializers.py:728
+#: stock/serializers.py:715
msgid "Item is allocated to a build order"
msgstr "Artikel ist einem Fertigungsauftrag zugeordnet"
-#: stock/serializers.py:759
+#: stock/serializers.py:746
msgid "Customer to assign stock items"
msgstr "Kunde zum Zuweisen von Lagerartikel"
-#: stock/serializers.py:765
+#: stock/serializers.py:752
msgid "Selected company is not a customer"
msgstr "Ausgewählte Firma ist kein Kunde"
-#: stock/serializers.py:773
+#: stock/serializers.py:760
msgid "Stock assignment notes"
msgstr "Notizen zur Lagerzuordnung"
-#: stock/serializers.py:783 stock/serializers.py:1014
+#: stock/serializers.py:770 stock/serializers.py:1001
msgid "A list of stock items must be provided"
msgstr "Eine Liste der Lagerbestände muss angegeben werden"
-#: stock/serializers.py:872
+#: stock/serializers.py:859
msgid "Stock merging notes"
msgstr "Notizen zur Lagerartikelzusammenführung"
-#: stock/serializers.py:877
+#: stock/serializers.py:864
msgid "Allow mismatched suppliers"
msgstr "Unterschiedliche Lieferanten erlauben"
-#: stock/serializers.py:878
+#: stock/serializers.py:865
msgid "Allow stock items with different supplier parts to be merged"
msgstr "Zusammenführen von Lagerartikeln mit unterschiedlichen Lieferanten erlauben"
-#: stock/serializers.py:883
+#: stock/serializers.py:870
msgid "Allow mismatched status"
msgstr "Unterschiedliche Status erlauben"
-#: stock/serializers.py:884
+#: stock/serializers.py:871
msgid "Allow stock items with different status codes to be merged"
msgstr "Zusammenführen von Lagerartikeln mit unterschiedlichen Status-Codes erlauben"
-#: stock/serializers.py:894
+#: stock/serializers.py:881
msgid "At least two stock items must be provided"
msgstr "Mindestens zwei Lagerartikel müssen angegeben werden"
-#: stock/serializers.py:976
+#: stock/serializers.py:963
msgid "StockItem primary key value"
msgstr "Primärschlüssel Lagerelement"
-#: stock/serializers.py:1004
+#: stock/serializers.py:991
msgid "Stock transaction notes"
msgstr "Bestandsbewegungsnotizen"
@@ -6187,7 +6175,7 @@ msgstr "Testdaten"
msgid "Test Report"
msgstr "Test-Bericht"
-#: stock/templates/stock/item.html:94
+#: stock/templates/stock/item.html:94 stock/templates/stock/item.html:298
msgid "Delete Test Data"
msgstr "Testdaten löschen"
@@ -6199,11 +6187,15 @@ msgstr "Testdaten hinzufügen"
msgid "Installed Stock Items"
msgstr "Installierte Lagerartikel"
-#: stock/templates/stock/item.html:151 templates/js/translated/stock.js:2733
+#: stock/templates/stock/item.html:151 templates/js/translated/stock.js:2743
msgid "Install Stock Item"
msgstr "Lagerartikel installieren"
-#: stock/templates/stock/item.html:292 templates/js/translated/stock.js:1455
+#: stock/templates/stock/item.html:290
+msgid "Delete all test results for this stock item"
+msgstr ""
+
+#: stock/templates/stock/item.html:323 templates/js/translated/stock.js:1465
msgid "Add Test Result"
msgstr "Testergebnis hinzufügen"
@@ -6390,7 +6382,7 @@ msgid "Stale"
msgstr "überfällig"
#: stock/templates/stock/item_base.html:442
-#: templates/js/translated/stock.js:1832
+#: templates/js/translated/stock.js:1842
msgid "Last Updated"
msgstr "Zuletzt aktualisiert"
@@ -6531,7 +6523,7 @@ msgstr "Zuweisungen"
msgid "Child Items"
msgstr "Untergeordnete Objekte"
-#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:182
+#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:144
msgid "Convert Stock Item"
msgstr "Lagerartikel umwandeln"
@@ -6552,31 +6544,19 @@ msgstr "Warnung"
msgid "This action cannot be easily undone"
msgstr "Diese Aktion kann nicht einfach rückgängig gemacht werden"
-#: stock/views.py:113
+#: stock/views.py:111
msgid "Stock Location QR code"
msgstr "QR-Code für diesen Lagerort"
-#: stock/views.py:131
-msgid "Delete All Test Data"
-msgstr "alle Testdaten löschen"
-
-#: stock/views.py:149
-msgid "Confirm test data deletion"
-msgstr "Löschen Testdaten bestätigen"
-
-#: stock/views.py:150
-msgid "Check the confirmation box"
-msgstr "Bestätigungsbox bestätigen"
-
-#: stock/views.py:165
+#: stock/views.py:127
msgid "Stock Item QR Code"
msgstr "Lagerartikel-QR-Code"
-#: stock/views.py:216
+#: stock/views.py:178
msgid "Delete Stock Location"
msgstr "Bestand-Lagerort löschen"
-#: stock/views.py:229
+#: stock/views.py:191
msgid "Delete Stock Item"
msgstr "Lagerartikel löschen"
@@ -7319,8 +7299,8 @@ msgstr "InvenTree-Versionsinformationen"
#: templates/about.html:11 templates/about.html:105
#: templates/js/translated/bom.js:133 templates/js/translated/bom.js:621
-#: templates/js/translated/modals.js:56 templates/js/translated/modals.js:595
-#: templates/js/translated/modals.js:689 templates/js/translated/modals.js:997
+#: templates/js/translated/modals.js:56 templates/js/translated/modals.js:601
+#: templates/js/translated/modals.js:695 templates/js/translated/modals.js:1003
#: templates/js/translated/order.js:928 templates/modals.html:15
#: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50
msgid "Close"
@@ -7392,6 +7372,10 @@ msgstr "E-Mail-Adresse bestätigen"
msgid "Please confirm that %(email)s is an email address for user %(user_display)s."
msgstr "Bitte bestätigen Sie, dass %(email)s eine E-Mail-Adresse für den Benutzer %(user_display)s ist."
+#: templates/account/email_confirm.html:20 templates/js/translated/forms.js:630
+msgid "Confirm"
+msgstr "Bestätigen"
+
#: templates/account/email_confirm.html:27
#, python-format
msgid "This email confirmation link expired or is invalid. Please issue a new email confirmation request."
@@ -7564,7 +7548,7 @@ msgstr "Anhang hinzufügen"
msgid "Delete selected attachments"
msgstr ""
-#: templates/attachment_table.html:12 templates/js/translated/attachment.js:110
+#: templates/attachment_table.html:12 templates/js/translated/attachment.js:112
msgid "Delete Attachments"
msgstr ""
@@ -7598,15 +7582,15 @@ msgid "The following parts are low on required stock"
msgstr "Bei den folgenden Teilen gibt es wenige Lagerartikel"
#: templates/email/build_order_required_stock.html:18
-#: templates/js/translated/bom.js:1425
+#: templates/js/translated/bom.js:1419
msgid "Required Quantity"
msgstr "Benötigte Menge"
#: templates/email/build_order_required_stock.html:19
#: templates/email/low_stock_notification.html:18
-#: templates/js/translated/bom.js:890 templates/js/translated/build.js:1787
-#: templates/js/translated/build.js:2650 templates/js/translated/part.js:527
-#: templates/js/translated/part.js:530
+#: templates/js/translated/bom.js:884 templates/js/translated/build.js:1787
+#: templates/js/translated/build.js:2650 templates/js/translated/part.js:571
+#: templates/js/translated/part.js:574
#: templates/js/translated/table_filters.js:178
msgid "Available"
msgstr "Verfügbar"
@@ -7624,6 +7608,13 @@ msgstr "Klicken Sie auf den folgenden Link, um diesen Teil anzuzeigen"
msgid "Minimum Quantity"
msgstr "Mindestmenge"
+#: templates/email/new_order_assigned.html:9
+#: templates/email/overdue_build_order.html:9
+#: templates/email/overdue_purchase_order.html:9
+#: templates/email/overdue_sales_order.html:9
+msgid "Click on the following link to view this order"
+msgstr ""
+
#: templates/image_download.html:8
msgid "Specify URL for downloading image"
msgstr "URL für Bild-Donwload angeben"
@@ -7640,91 +7631,91 @@ msgstr "Der angegebene Server muss erreichbar sein"
msgid "Remote image must not exceed maximum allowable file size"
msgstr "Das Bild darf nicht größer als die maximal-erlaubte Größe sein"
-#: templates/js/translated/api.js:235 templates/js/translated/modals.js:1067
+#: templates/js/translated/api.js:195 templates/js/translated/modals.js:1073
msgid "No Response"
msgstr "Keine Antwort"
-#: templates/js/translated/api.js:236 templates/js/translated/modals.js:1068
+#: templates/js/translated/api.js:196 templates/js/translated/modals.js:1074
msgid "No response from the InvenTree server"
msgstr "keine Antwort vom InvenTree Server"
-#: templates/js/translated/api.js:242
+#: templates/js/translated/api.js:202
msgid "Error 400: Bad request"
msgstr "Fehler 400: Fehlerhafte Anfrage"
-#: templates/js/translated/api.js:243
+#: templates/js/translated/api.js:203
msgid "API request returned error code 400"
msgstr "Fehler-Code 400 zurückgegeben"
-#: templates/js/translated/api.js:247 templates/js/translated/modals.js:1077
+#: templates/js/translated/api.js:207 templates/js/translated/modals.js:1083
msgid "Error 401: Not Authenticated"
msgstr "Fehler 401: Nicht Angemeldet"
-#: templates/js/translated/api.js:248 templates/js/translated/modals.js:1078
+#: templates/js/translated/api.js:208 templates/js/translated/modals.js:1084
msgid "Authentication credentials not supplied"
msgstr "Authentication Kredentials nicht angegeben"
-#: templates/js/translated/api.js:252 templates/js/translated/modals.js:1082
+#: templates/js/translated/api.js:212 templates/js/translated/modals.js:1088
msgid "Error 403: Permission Denied"
msgstr "Fehler 403: keine Berechtigung"
-#: templates/js/translated/api.js:253 templates/js/translated/modals.js:1083
+#: templates/js/translated/api.js:213 templates/js/translated/modals.js:1089
msgid "You do not have the required permissions to access this function"
msgstr "Fehlende Berechtigung für diese Aktion"
-#: templates/js/translated/api.js:257 templates/js/translated/modals.js:1087
+#: templates/js/translated/api.js:217 templates/js/translated/modals.js:1093
msgid "Error 404: Resource Not Found"
msgstr "Fehler 404: Ressource nicht gefunden"
-#: templates/js/translated/api.js:258 templates/js/translated/modals.js:1088
+#: templates/js/translated/api.js:218 templates/js/translated/modals.js:1094
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:262
+#: templates/js/translated/api.js:222
msgid "Error 405: Method Not Allowed"
msgstr "Fehler 405: Methode nicht erlaubt"
-#: templates/js/translated/api.js:263
+#: templates/js/translated/api.js:223
msgid "HTTP method not allowed at URL"
msgstr "HTTP-Methode für diese URL nicht erlaubt"
-#: templates/js/translated/api.js:267 templates/js/translated/modals.js:1092
+#: templates/js/translated/api.js:227 templates/js/translated/modals.js:1098
msgid "Error 408: Timeout"
msgstr "Fehler 408: Zeitüberschreitung"
-#: templates/js/translated/api.js:268 templates/js/translated/modals.js:1093
+#: templates/js/translated/api.js:228 templates/js/translated/modals.js:1099
msgid "Connection timeout while requesting data from server"
msgstr "Verbindungszeitüberschreitung bei der Datenanforderung"
-#: templates/js/translated/api.js:271
+#: templates/js/translated/api.js:231
msgid "Unhandled Error Code"
msgstr "Unbehandelter Fehler-Code"
-#: templates/js/translated/api.js:272
+#: templates/js/translated/api.js:232
msgid "Error code"
msgstr "Fehler-Code"
-#: templates/js/translated/attachment.js:96
+#: templates/js/translated/attachment.js:98
msgid "All selected attachments will be deleted"
msgstr ""
-#: templates/js/translated/attachment.js:156
+#: templates/js/translated/attachment.js:152
msgid "No attachments found"
msgstr "Keine Anhänge gefunden"
-#: templates/js/translated/attachment.js:180
+#: templates/js/translated/attachment.js:176
msgid "Edit Attachment"
msgstr "Anhang bearbeiten"
-#: templates/js/translated/attachment.js:246
+#: templates/js/translated/attachment.js:242
msgid "Upload Date"
msgstr "Hochladedatum"
-#: templates/js/translated/attachment.js:262
+#: templates/js/translated/attachment.js:264
msgid "Edit attachment"
msgstr "Anhang bearbeiten"
-#: templates/js/translated/attachment.js:269
+#: templates/js/translated/attachment.js:271
msgid "Delete attachment"
msgstr "Anhang löschen"
@@ -7757,7 +7748,7 @@ msgid "Unknown response from server"
msgstr "Unbekannte Antwort von Server erhalten"
#: templates/js/translated/barcode.js:182
-#: templates/js/translated/modals.js:1057
+#: templates/js/translated/modals.js:1063
msgid "Invalid server response"
msgstr "Ungültige Antwort von Server"
@@ -7785,7 +7776,7 @@ msgstr "Dadurch wird die Verknüpfung zwischen diesem Lagerartikel und dem Barco
msgid "Unlink"
msgstr "Entfernen"
-#: templates/js/translated/barcode.js:456 templates/js/translated/stock.js:999
+#: templates/js/translated/barcode.js:456 templates/js/translated/stock.js:998
msgid "Remove stock item"
msgstr "Lagerartikel entfernen"
@@ -7920,89 +7911,89 @@ msgstr "Ersatzteil hinzufügen"
msgid "Edit BOM Item Substitutes"
msgstr "Stücklisten Ersatzteile bearbeiten"
-#: templates/js/translated/bom.js:682
+#: templates/js/translated/bom.js:684
msgid "All selected BOM items will be deleted"
msgstr "Alle ausgewählte Stücklistenpositionen werden gelöscht"
-#: templates/js/translated/bom.js:697
+#: templates/js/translated/bom.js:699
msgid "Delete selected BOM items?"
msgstr "Ausgewählte Stücklistenpositionen löschen?"
-#: templates/js/translated/bom.js:824
+#: templates/js/translated/bom.js:818
msgid "Load BOM for subassembly"
msgstr "Stückliste für Bauteile laden"
-#: templates/js/translated/bom.js:834
+#: templates/js/translated/bom.js:828
msgid "Substitutes Available"
msgstr "Ersatzteile verfügbar"
-#: templates/js/translated/bom.js:838 templates/js/translated/build.js:1769
+#: templates/js/translated/bom.js:832 templates/js/translated/build.js:1769
msgid "Variant stock allowed"
msgstr "Varianten erlaubt"
-#: templates/js/translated/bom.js:906 templates/js/translated/build.js:1814
+#: templates/js/translated/bom.js:900 templates/js/translated/build.js:1814
#: templates/js/translated/order.js:3562
msgid "No Stock Available"
msgstr "Kein Lagerbestand verfügbar"
-#: templates/js/translated/bom.js:910 templates/js/translated/build.js:1818
+#: templates/js/translated/bom.js:904 templates/js/translated/build.js:1818
msgid "Includes variant and substitute stock"
msgstr "Beinhaltet Variante und Ersatzbestand"
-#: templates/js/translated/bom.js:912 templates/js/translated/build.js:1820
-#: templates/js/translated/part.js:690
+#: templates/js/translated/bom.js:906 templates/js/translated/build.js:1820
+#: templates/js/translated/part.js:734
msgid "Includes variant stock"
msgstr "Beinhaltet Variantenbestand"
-#: templates/js/translated/bom.js:914 templates/js/translated/build.js:1822
+#: templates/js/translated/bom.js:908 templates/js/translated/build.js:1822
msgid "Includes substitute stock"
msgstr "Enthält Ersatzbestand"
-#: templates/js/translated/bom.js:928
+#: templates/js/translated/bom.js:922
msgid "Substitutes"
msgstr "Ersatzteile"
-#: templates/js/translated/bom.js:943
+#: templates/js/translated/bom.js:937
msgid "Purchase Price Range"
msgstr "Kaufpreisspanne"
-#: templates/js/translated/bom.js:950
+#: templates/js/translated/bom.js:944
msgid "Purchase Price Average"
msgstr "Durchschnittlicher Kaufpreis"
-#: templates/js/translated/bom.js:999 templates/js/translated/bom.js:1090
+#: templates/js/translated/bom.js:993 templates/js/translated/bom.js:1084
msgid "View BOM"
msgstr "Stückliste anzeigen"
-#: templates/js/translated/bom.js:1061
+#: templates/js/translated/bom.js:1055
msgid "Validate BOM Item"
msgstr "Stücklisten-Position kontrollieren"
-#: templates/js/translated/bom.js:1063
+#: templates/js/translated/bom.js:1057
msgid "This line has been validated"
msgstr "Diese Position wurde kontrolliert"
-#: templates/js/translated/bom.js:1065
+#: templates/js/translated/bom.js:1059
msgid "Edit substitute parts"
msgstr "Ersatzteile bearbeiten"
-#: templates/js/translated/bom.js:1067 templates/js/translated/bom.js:1228
+#: templates/js/translated/bom.js:1061 templates/js/translated/bom.js:1222
msgid "Edit BOM Item"
msgstr "Stücklisten-Position bearbeiten"
-#: templates/js/translated/bom.js:1069
+#: templates/js/translated/bom.js:1063
msgid "Delete BOM Item"
msgstr "Stücklisten-Position löschen"
-#: templates/js/translated/bom.js:1164 templates/js/translated/build.js:1615
+#: templates/js/translated/bom.js:1158 templates/js/translated/build.js:1615
msgid "No BOM items found"
msgstr "Keine Stücklisten-Position(en) gefunden"
-#: templates/js/translated/bom.js:1408 templates/js/translated/build.js:1753
+#: templates/js/translated/bom.js:1402 templates/js/translated/build.js:1753
msgid "Required Part"
msgstr "benötigtes Teil"
-#: templates/js/translated/bom.js:1430
+#: templates/js/translated/bom.js:1424
msgid "Inherited from parent BOM"
msgstr "Geerbt von übergeordneter Stückliste"
@@ -8042,13 +8033,13 @@ msgstr "Bauauftrag ist unvollständig"
msgid "Complete Build Order"
msgstr "Bauauftrag fertigstellen"
-#: templates/js/translated/build.js:259 templates/js/translated/stock.js:91
-#: templates/js/translated/stock.js:181
+#: templates/js/translated/build.js:259 templates/js/translated/stock.js:90
+#: templates/js/translated/stock.js:180
msgid "Next available serial number"
msgstr "Nächste verfügbare Seriennummer"
-#: templates/js/translated/build.js:261 templates/js/translated/stock.js:93
-#: templates/js/translated/stock.js:183
+#: templates/js/translated/build.js:261 templates/js/translated/stock.js:92
+#: templates/js/translated/stock.js:182
msgid "Latest serial number"
msgstr "Letzte Seriennummer"
@@ -8261,9 +8252,9 @@ msgstr "Lagerartikel zuordnen"
msgid "No builds matching query"
msgstr "Keine Bauaufträge passen zur Anfrage"
-#: templates/js/translated/build.js:2448 templates/js/translated/part.js:1314
-#: templates/js/translated/part.js:1729 templates/js/translated/stock.js:1619
-#: templates/js/translated/stock.js:2277
+#: templates/js/translated/build.js:2448 templates/js/translated/part.js:1358
+#: templates/js/translated/part.js:1825 templates/js/translated/stock.js:1629
+#: templates/js/translated/stock.js:2287
msgid "Select"
msgstr "Auswählen"
@@ -8275,7 +8266,7 @@ msgstr "Bauauftrag ist überfällig"
msgid "Progress"
msgstr "Fortschritt"
-#: templates/js/translated/build.js:2532 templates/js/translated/stock.js:2519
+#: templates/js/translated/build.js:2532 templates/js/translated/stock.js:2529
msgid "No user information"
msgstr "Keine Benutzerinformation"
@@ -8287,107 +8278,107 @@ msgstr "Keine Information"
msgid "No parts allocated for"
msgstr "Keine Teile zugeordnet zu"
-#: templates/js/translated/company.js:66
+#: templates/js/translated/company.js:65
msgid "Add Manufacturer"
msgstr "Hersteller hinzufügen"
-#: templates/js/translated/company.js:79 templates/js/translated/company.js:169
+#: templates/js/translated/company.js:78 templates/js/translated/company.js:168
msgid "Add Manufacturer Part"
msgstr "Herstellerteil hinzufügen"
-#: templates/js/translated/company.js:100
+#: templates/js/translated/company.js:99
msgid "Edit Manufacturer Part"
msgstr "Herstellerteil ändern"
-#: templates/js/translated/company.js:157 templates/js/translated/order.js:506
+#: templates/js/translated/company.js:156 templates/js/translated/order.js:506
msgid "Add Supplier"
msgstr "Zulieferer hinzufügen"
-#: templates/js/translated/company.js:185
+#: templates/js/translated/company.js:184
msgid "Add Supplier Part"
msgstr "Zuliefererteil hinzufügen"
-#: templates/js/translated/company.js:200
+#: templates/js/translated/company.js:199
msgid "Edit Supplier Part"
msgstr "Zuliefererteil bearbeiten"
-#: templates/js/translated/company.js:248
+#: templates/js/translated/company.js:249
msgid "All selected supplier parts will be deleted"
msgstr "Alle ausgewählten Zulieferteile werden gelöscht"
-#: templates/js/translated/company.js:263
+#: templates/js/translated/company.js:264
msgid "Delete Supplier Parts"
msgstr "Zuliefererteil entfernen"
-#: templates/js/translated/company.js:342
+#: templates/js/translated/company.js:336
msgid "Add new Company"
msgstr "Neue Firma hinzufügen"
-#: templates/js/translated/company.js:419
+#: templates/js/translated/company.js:413
msgid "Parts Supplied"
msgstr "Teile geliefert"
-#: templates/js/translated/company.js:428
+#: templates/js/translated/company.js:422
msgid "Parts Manufactured"
msgstr "Hersteller-Teile"
-#: templates/js/translated/company.js:443
+#: templates/js/translated/company.js:437
msgid "No company information found"
msgstr "Keine Firmeninformation gefunden"
-#: templates/js/translated/company.js:482
+#: templates/js/translated/company.js:478
msgid "All selected manufacturer parts will be deleted"
msgstr "Alle ausgewählten Herstellerrteile werden gelöscht"
-#: templates/js/translated/company.js:496
+#: templates/js/translated/company.js:492
msgid "Delete Manufacturer Parts"
msgstr "Herstellerteile löschen"
-#: templates/js/translated/company.js:535
+#: templates/js/translated/company.js:526
msgid "All selected parameters will be deleted"
msgstr "Alle ausgewählten Parameter werden gelöscht"
-#: templates/js/translated/company.js:548
+#: templates/js/translated/company.js:539
msgid "Delete Parameters"
msgstr "Parameter löschen"
-#: templates/js/translated/company.js:595
+#: templates/js/translated/company.js:580
msgid "No manufacturer parts found"
msgstr "Keine Herstellerteile gefunden"
-#: templates/js/translated/company.js:615
-#: templates/js/translated/company.js:874 templates/js/translated/part.js:565
-#: templates/js/translated/part.js:650
+#: templates/js/translated/company.js:600
+#: templates/js/translated/company.js:859 templates/js/translated/part.js:609
+#: templates/js/translated/part.js:694
msgid "Template part"
msgstr "Vorlagenteil"
-#: templates/js/translated/company.js:619
-#: templates/js/translated/company.js:878 templates/js/translated/part.js:569
-#: templates/js/translated/part.js:654
+#: templates/js/translated/company.js:604
+#: templates/js/translated/company.js:863 templates/js/translated/part.js:613
+#: templates/js/translated/part.js:698
msgid "Assembled part"
msgstr "Baugruppe"
-#: templates/js/translated/company.js:747 templates/js/translated/part.js:757
+#: templates/js/translated/company.js:732 templates/js/translated/part.js:801
msgid "No parameters found"
msgstr "Keine Parameter gefunden"
-#: templates/js/translated/company.js:784 templates/js/translated/part.js:799
+#: templates/js/translated/company.js:769 templates/js/translated/part.js:843
msgid "Edit parameter"
msgstr "Parameter bearbeiten"
-#: templates/js/translated/company.js:785 templates/js/translated/part.js:800
+#: templates/js/translated/company.js:770 templates/js/translated/part.js:844
msgid "Delete parameter"
msgstr "Parameter löschen"
-#: templates/js/translated/company.js:804 templates/js/translated/part.js:817
+#: templates/js/translated/company.js:789 templates/js/translated/part.js:861
msgid "Edit Parameter"
msgstr "Parameter bearbeiten"
-#: templates/js/translated/company.js:815 templates/js/translated/part.js:829
+#: templates/js/translated/company.js:800 templates/js/translated/part.js:873
msgid "Delete Parameter"
msgstr "Parameter löschen"
-#: templates/js/translated/company.js:854
+#: templates/js/translated/company.js:839
msgid "No supplier parts found"
msgstr "Keine Zuliefererteile gefunden"
@@ -8450,36 +8441,36 @@ msgstr "Anzeigevorgang nicht erlaubt"
msgid "Keep this form open"
msgstr "Dieses Formular offen lassen"
-#: templates/js/translated/forms.js:756
+#: templates/js/translated/forms.js:757
msgid "Enter a valid number"
msgstr "Gib eine gültige Nummer ein"
-#: templates/js/translated/forms.js:1248 templates/modals.html:19
+#: templates/js/translated/forms.js:1249 templates/modals.html:19
#: templates/modals.html:43
msgid "Form errors exist"
msgstr "Fehler in Formular"
-#: templates/js/translated/forms.js:1681
+#: templates/js/translated/forms.js:1682
msgid "No results found"
msgstr "Keine Ergebnisse gefunden"
-#: templates/js/translated/forms.js:1896 templates/search.html:29
+#: templates/js/translated/forms.js:1897 templates/search.html:29
msgid "Searching"
msgstr "Suche"
-#: templates/js/translated/forms.js:2149
+#: templates/js/translated/forms.js:2150
msgid "Clear input"
msgstr "Eingabe leeren"
-#: templates/js/translated/forms.js:2615
+#: templates/js/translated/forms.js:2616
msgid "File Column"
msgstr "Dateispalte"
-#: templates/js/translated/forms.js:2615
+#: templates/js/translated/forms.js:2616
msgid "Field Name"
msgstr "Feldname"
-#: templates/js/translated/forms.js:2627
+#: templates/js/translated/forms.js:2628
msgid "Select Columns"
msgstr "Spalten auswählen"
@@ -8500,7 +8491,7 @@ msgid "Labels sent to printer"
msgstr "Label an den Drucker gesendet"
#: templates/js/translated/label.js:60 templates/js/translated/report.js:118
-#: templates/js/translated/stock.js:1023
+#: templates/js/translated/stock.js:1022
msgid "Select Stock Items"
msgstr "Lagerartikel auswählen"
@@ -8554,12 +8545,12 @@ msgid "Select Label Template"
msgstr "Label-Vorlage auswählen"
#: templates/js/translated/modals.js:82 templates/js/translated/modals.js:142
-#: templates/js/translated/modals.js:621
+#: templates/js/translated/modals.js:627
msgid "Cancel"
msgstr "Abbrechen"
#: templates/js/translated/modals.js:83 templates/js/translated/modals.js:141
-#: templates/js/translated/modals.js:688 templates/js/translated/modals.js:996
+#: templates/js/translated/modals.js:694 templates/js/translated/modals.js:1002
#: templates/modals.html:28 templates/modals.html:51
msgid "Submit"
msgstr "Abschicken"
@@ -8568,47 +8559,47 @@ msgstr "Abschicken"
msgid "Form Title"
msgstr "Formulartitel"
-#: templates/js/translated/modals.js:403
+#: templates/js/translated/modals.js:421
msgid "Waiting for server..."
msgstr "Warte auf Server..."
-#: templates/js/translated/modals.js:562
+#: templates/js/translated/modals.js:568
msgid "Show Error Information"
msgstr "Fehler-Informationen anzeigen"
-#: templates/js/translated/modals.js:620
+#: templates/js/translated/modals.js:626
msgid "Accept"
msgstr "Akzeptieren"
-#: templates/js/translated/modals.js:677
+#: templates/js/translated/modals.js:683
msgid "Loading Data"
msgstr "Lade Daten"
-#: templates/js/translated/modals.js:948
+#: templates/js/translated/modals.js:954
msgid "Invalid response from server"
msgstr "ungültige Antwort vom Server"
-#: templates/js/translated/modals.js:948
+#: templates/js/translated/modals.js:954
msgid "Form data missing from server response"
msgstr "Formulardaten fehlen bei Serverantwort"
-#: templates/js/translated/modals.js:960
+#: templates/js/translated/modals.js:966
msgid "Error posting form data"
msgstr "Formulardaten fehlerhaft"
-#: templates/js/translated/modals.js:1057
+#: templates/js/translated/modals.js:1063
msgid "JSON response missing form data"
msgstr "JSON Antwort enthält keine Formulardaten"
-#: templates/js/translated/modals.js:1072
+#: templates/js/translated/modals.js:1078
msgid "Error 400: Bad Request"
msgstr "Fehler 400: Ungültige Anfrage"
-#: templates/js/translated/modals.js:1073
+#: templates/js/translated/modals.js:1079
msgid "Server returned error code 400"
msgstr "Fehler 400 von Server erhalten"
-#: templates/js/translated/modals.js:1096
+#: templates/js/translated/modals.js:1102
msgid "Error requesting form data"
msgstr "Fehler bei Formulardaten-Anfrage"
@@ -8658,11 +8649,11 @@ msgstr "Als ungelesen markieren"
msgid "Mark as read"
msgstr "Als gelesen markieren"
-#: templates/js/translated/notification.js:259
+#: templates/js/translated/notification.js:260
msgid "No unread notifications"
msgstr "Keine ungelesenen Benachrichtigungen"
-#: templates/js/translated/notification.js:300 templates/notifications.html:10
+#: templates/js/translated/notification.js:302 templates/notifications.html:10
msgid "Notifications will load here"
msgstr "Benachrichtigungen erscheinen hier"
@@ -8806,7 +8797,7 @@ msgstr "Seriennummern hinzufügen"
msgid "Quantity to receive"
msgstr "Zu erhaltende Menge"
-#: templates/js/translated/order.js:1225 templates/js/translated/stock.js:2080
+#: templates/js/translated/order.js:1225 templates/js/translated/stock.js:2090
msgid "Stock Status"
msgstr "Status"
@@ -8830,7 +8821,7 @@ msgstr "Empfang der Teile bestätigen"
msgid "Receive Purchase Order Items"
msgstr "Bestellpositionen erhalten"
-#: templates/js/translated/order.js:1602 templates/js/translated/part.js:870
+#: templates/js/translated/order.js:1602 templates/js/translated/part.js:914
msgid "No purchase orders found"
msgstr "Keine Bestellungen gefunden"
@@ -8865,7 +8856,7 @@ msgstr "Summe"
#: templates/js/translated/order.js:1937 templates/js/translated/order.js:2139
#: templates/js/translated/order.js:3467 templates/js/translated/order.js:3978
-#: templates/js/translated/part.js:1948 templates/js/translated/part.js:2301
+#: templates/js/translated/part.js:2044 templates/js/translated/part.js:2397
msgid "Unit Price"
msgstr "Stück-Preis"
@@ -8875,11 +8866,11 @@ msgid "Total Price"
msgstr "Gesamtpreis"
#: templates/js/translated/order.js:1993 templates/js/translated/order.js:3525
-#: templates/js/translated/part.js:979
+#: templates/js/translated/part.js:1023
msgid "This line item is overdue"
msgstr "Diese Position ist überfällig"
-#: templates/js/translated/order.js:2052 templates/js/translated/part.js:1025
+#: templates/js/translated/order.js:2052 templates/js/translated/part.js:1069
msgid "Receive line item"
msgstr "Position empfangen"
@@ -9000,7 +8991,7 @@ msgid "Delete Stock Allocation"
msgstr "Bestands-Zuordnung löschen"
#: templates/js/translated/order.js:3243 templates/js/translated/order.js:3332
-#: templates/js/translated/stock.js:1535
+#: templates/js/translated/stock.js:1545
msgid "Shipped to customer"
msgstr "an Kunde versand"
@@ -9140,165 +9131,209 @@ msgstr "Teil bearbeitet"
msgid "Create Part Variant"
msgstr "Teil-Variante anlegen"
+#: templates/js/translated/part.js:405
+msgid "Active Part"
+msgstr ""
+
+#: templates/js/translated/part.js:406
+msgid "Part cannot be deleted as it is currently active"
+msgstr ""
+
+#: templates/js/translated/part.js:420
+msgid "Deleting this part cannot be reversed"
+msgstr ""
+
+#: templates/js/translated/part.js:422
+msgid "Any stock items for this part will be deleted"
+msgstr ""
+
#: templates/js/translated/part.js:423
+msgid "This part will be removed from any Bills of Material"
+msgstr ""
+
+#: templates/js/translated/part.js:424
+msgid "All manufacturer and supplier information for this part will be deleted"
+msgstr ""
+
+#: templates/js/translated/part.js:431
+msgid "Delete Part"
+msgstr ""
+
+#: templates/js/translated/part.js:467
msgid "You are subscribed to notifications for this item"
msgstr "Sie haben Benachrichtigungen für dieses Teil abonniert"
-#: templates/js/translated/part.js:425
+#: templates/js/translated/part.js:469
msgid "You have subscribed to notifications for this item"
msgstr "Sie haben Benachrichtigungen für dieses Teil abonniert"
-#: templates/js/translated/part.js:430
+#: templates/js/translated/part.js:474
msgid "Subscribe to notifications for this item"
msgstr "Benachrichtigungen für dieses Teil abonnieren"
-#: templates/js/translated/part.js:432
+#: templates/js/translated/part.js:476
msgid "You have unsubscribed to notifications for this item"
msgstr "Sie haben Benachrichtigungen für dieses Teil abgemeldet"
-#: templates/js/translated/part.js:449
+#: templates/js/translated/part.js:493
msgid "Validating the BOM will mark each line item as valid"
msgstr "Die Stückliste zu validieren markiert jede Zeile als gültig"
-#: templates/js/translated/part.js:459
+#: templates/js/translated/part.js:503
msgid "Validate Bill of Materials"
msgstr "Stückliste prüfen"
-#: templates/js/translated/part.js:462
+#: templates/js/translated/part.js:506
msgid "Validated Bill of Materials"
msgstr "überprüfte Stückliste"
-#: templates/js/translated/part.js:487
+#: templates/js/translated/part.js:531
msgid "Copy Bill of Materials"
msgstr "Stückliste kopieren"
-#: templates/js/translated/part.js:513 templates/js/translated/part.js:1397
+#: templates/js/translated/part.js:557 templates/js/translated/part.js:1441
#: templates/js/translated/table_filters.js:452
msgid "Low stock"
msgstr "Bestand niedrig"
-#: templates/js/translated/part.js:523 templates/js/translated/part.js:1409
+#: templates/js/translated/part.js:567 templates/js/translated/part.js:1453
msgid "No stock available"
msgstr "Kein Lagerbestand verfügbar"
-#: templates/js/translated/part.js:557 templates/js/translated/part.js:642
+#: templates/js/translated/part.js:601 templates/js/translated/part.js:686
msgid "Trackable part"
msgstr "Nachverfolgbares Teil"
-#: templates/js/translated/part.js:561 templates/js/translated/part.js:646
+#: templates/js/translated/part.js:605 templates/js/translated/part.js:690
msgid "Virtual part"
msgstr "virtuelles Teil"
-#: templates/js/translated/part.js:573
+#: templates/js/translated/part.js:617
msgid "Subscribed part"
msgstr "Abonnierter Teil"
-#: templates/js/translated/part.js:577
+#: templates/js/translated/part.js:621
msgid "Salable part"
msgstr "Verkäufliches Teil"
-#: templates/js/translated/part.js:705
+#: templates/js/translated/part.js:749
msgid "No variants found"
msgstr "Keine Varianten gefunden"
-#: templates/js/translated/part.js:1095
+#: templates/js/translated/part.js:1139
msgid "Delete part relationship"
msgstr "Teile-Beziehung löschen"
-#: templates/js/translated/part.js:1119
+#: templates/js/translated/part.js:1163
msgid "Delete Part Relationship"
msgstr "Teile-Beziehung löschen"
-#: templates/js/translated/part.js:1184 templates/js/translated/part.js:1480
+#: templates/js/translated/part.js:1228 templates/js/translated/part.js:1524
msgid "No parts found"
msgstr "Keine Teile gefunden"
-#: templates/js/translated/part.js:1223
+#: templates/js/translated/part.js:1267
msgid "Not available"
msgstr "Nicht verfügbar"
-#: templates/js/translated/part.js:1374
+#: templates/js/translated/part.js:1418
msgid "No category"
msgstr "Keine Kategorie"
-#: templates/js/translated/part.js:1504 templates/js/translated/part.js:1664
-#: templates/js/translated/stock.js:2238
+#: templates/js/translated/part.js:1548 templates/js/translated/part.js:1760
+#: templates/js/translated/stock.js:2248
msgid "Display as list"
msgstr "Listenansicht"
-#: templates/js/translated/part.js:1520
+#: templates/js/translated/part.js:1564
msgid "Display as grid"
msgstr "Rasteransicht"
-#: templates/js/translated/part.js:1683 templates/js/translated/stock.js:2257
+#: templates/js/translated/part.js:1630
+msgid "Set the part category for the selected parts"
+msgstr ""
+
+#: templates/js/translated/part.js:1635
+msgid "Set Part Category"
+msgstr "Teil-Kategorie auswählen"
+
+#: templates/js/translated/part.js:1640
+msgid "Select Part Category"
+msgstr ""
+
+#: templates/js/translated/part.js:1653
+msgid "Category is required"
+msgstr ""
+
+#: templates/js/translated/part.js:1779 templates/js/translated/stock.js:2267
msgid "Display as tree"
msgstr "Baumansicht"
-#: templates/js/translated/part.js:1747
+#: templates/js/translated/part.js:1843
msgid "Subscribed category"
msgstr "Abonnierte Kategorie"
-#: templates/js/translated/part.js:1761 templates/js/translated/stock.js:2301
+#: templates/js/translated/part.js:1857 templates/js/translated/stock.js:2311
msgid "Path"
msgstr "Pfad"
-#: templates/js/translated/part.js:1805
+#: templates/js/translated/part.js:1901
msgid "No test templates matching query"
msgstr "Keine zur Anfrage passenden Testvorlagen"
-#: templates/js/translated/part.js:1856 templates/js/translated/stock.js:1233
+#: templates/js/translated/part.js:1952 templates/js/translated/stock.js:1243
msgid "Edit test result"
msgstr "Testergebnis bearbeiten"
-#: templates/js/translated/part.js:1857 templates/js/translated/stock.js:1234
-#: templates/js/translated/stock.js:1493
+#: templates/js/translated/part.js:1953 templates/js/translated/stock.js:1244
+#: templates/js/translated/stock.js:1503
msgid "Delete test result"
msgstr "Testergebnis löschen"
-#: templates/js/translated/part.js:1863
+#: templates/js/translated/part.js:1959
msgid "This test is defined for a parent part"
msgstr "Dieses Testergebnis ist für ein Hauptteil"
-#: templates/js/translated/part.js:1885
+#: templates/js/translated/part.js:1981
msgid "Edit Test Result Template"
msgstr "Testergebnis-Vorlage bearbeiten"
-#: templates/js/translated/part.js:1899
+#: templates/js/translated/part.js:1995
msgid "Delete Test Result Template"
msgstr "Testergebnis-Vorlage löschen"
-#: templates/js/translated/part.js:1924
+#: templates/js/translated/part.js:2020
#, python-brace-format
msgid "No ${human_name} information found"
msgstr "Keine ${human_name} Informationen gefunden"
-#: templates/js/translated/part.js:1981
+#: templates/js/translated/part.js:2077
#, python-brace-format
msgid "Edit ${human_name}"
msgstr "${human_name} bearbeiten"
-#: templates/js/translated/part.js:1982
+#: templates/js/translated/part.js:2078
#, python-brace-format
msgid "Delete ${human_name}"
msgstr "${human_name} löschen"
-#: templates/js/translated/part.js:2096
+#: templates/js/translated/part.js:2192
msgid "Current Stock"
msgstr "Aktueller Lagerbestand"
-#: templates/js/translated/part.js:2129
+#: templates/js/translated/part.js:2225
msgid "No scheduling information available for this part"
msgstr "Keine Zeitplanung für dieses Teil vorhanden"
-#: templates/js/translated/part.js:2155
+#: templates/js/translated/part.js:2251
msgid "Scheduled Stock Quantities"
msgstr "Geplante Lagermengen"
-#: templates/js/translated/part.js:2225
+#: templates/js/translated/part.js:2321
msgid "Single Price"
msgstr "Einzelpreis"
-#: templates/js/translated/part.js:2244
+#: templates/js/translated/part.js:2340
msgid "Single Price Difference"
msgstr "Einzelpreisdifferenz"
@@ -9380,360 +9415,360 @@ msgstr "Ergebnisse minimieren"
msgid "Remove results"
msgstr "Ergebnisse entfernen"
-#: templates/js/translated/stock.js:73
+#: templates/js/translated/stock.js:72
msgid "Serialize Stock Item"
msgstr "Lagerartikel serialisieren"
-#: templates/js/translated/stock.js:101
+#: templates/js/translated/stock.js:100
msgid "Confirm Stock Serialization"
msgstr "Lager-Serialisierung bestätigen"
-#: templates/js/translated/stock.js:110
+#: templates/js/translated/stock.js:109
msgid "Parent stock location"
msgstr "Übergeordneter Lagerort"
-#: templates/js/translated/stock.js:139
+#: templates/js/translated/stock.js:138
msgid "Edit Stock Location"
msgstr "Lagerartikel-Ort bearbeiten"
-#: templates/js/translated/stock.js:154
+#: templates/js/translated/stock.js:153
msgid "New Stock Location"
msgstr "Neuer Lagerstandort"
-#: templates/js/translated/stock.js:194
+#: templates/js/translated/stock.js:193
msgid "This part cannot be serialized"
msgstr "Dieser Teil kann nicht serialisiert werden"
-#: templates/js/translated/stock.js:233
+#: templates/js/translated/stock.js:232
msgid "Enter initial quantity for this stock item"
msgstr "Ausgangsmenge für diesen Lagerartikel eingeben"
-#: templates/js/translated/stock.js:239
+#: templates/js/translated/stock.js:238
msgid "Enter serial numbers for new stock (or leave blank)"
msgstr "Seriennummern für neue Lagerartikel eingeben (oder leer lassen)"
-#: templates/js/translated/stock.js:304
+#: templates/js/translated/stock.js:303
msgid "Stock item duplicated"
msgstr "Lagerartikel dupliziert"
-#: templates/js/translated/stock.js:324
+#: templates/js/translated/stock.js:323
msgid "Duplicate Stock Item"
msgstr "Bestand duplizieren"
-#: templates/js/translated/stock.js:344
+#: templates/js/translated/stock.js:343
msgid "Edit Stock Item"
msgstr "Lagerartikel bearbeiten"
-#: templates/js/translated/stock.js:394
+#: templates/js/translated/stock.js:393
msgid "Created new stock item"
msgstr "Neuer Lagerartikel erstellt"
-#: templates/js/translated/stock.js:407
+#: templates/js/translated/stock.js:406
msgid "Created multiple stock items"
msgstr "Mehrere Lagerartikel erstellt"
-#: templates/js/translated/stock.js:432
+#: templates/js/translated/stock.js:431
msgid "Find Serial Number"
msgstr "Seriennummer finden"
-#: templates/js/translated/stock.js:436 templates/js/translated/stock.js:437
+#: templates/js/translated/stock.js:435 templates/js/translated/stock.js:436
msgid "Enter serial number"
msgstr "Seriennummer eingeben"
-#: templates/js/translated/stock.js:453
+#: templates/js/translated/stock.js:452
msgid "Enter a serial number"
msgstr "Eine Seriennummer eingeben"
-#: templates/js/translated/stock.js:473
+#: templates/js/translated/stock.js:472
msgid "No matching serial number"
msgstr "Keine passende Seriennummer"
-#: templates/js/translated/stock.js:482
+#: templates/js/translated/stock.js:481
msgid "More than one matching result found"
msgstr "Mehrere Ergebnisse gefunden"
-#: templates/js/translated/stock.js:605
+#: templates/js/translated/stock.js:604
msgid "Confirm stock assignment"
msgstr "Bestand Zuweisung bestätigen"
-#: templates/js/translated/stock.js:606
+#: templates/js/translated/stock.js:605
msgid "Assign Stock to Customer"
msgstr "Einem Kunden zuordnen"
-#: templates/js/translated/stock.js:683
+#: templates/js/translated/stock.js:682
msgid "Warning: Merge operation cannot be reversed"
msgstr "Achtung: Das Zusammenführen kann nicht rückgängig gemacht werden"
-#: templates/js/translated/stock.js:684
+#: templates/js/translated/stock.js:683
msgid "Some information will be lost when merging stock items"
msgstr "Einige Informationen gehen verloren, wenn Artikel zusammengeführt werden"
-#: templates/js/translated/stock.js:686
+#: templates/js/translated/stock.js:685
msgid "Stock transaction history will be deleted for merged items"
msgstr "Lagerartikelverlauf wird für zusammengeführte Lagerartikel gelöscht"
-#: templates/js/translated/stock.js:687
+#: templates/js/translated/stock.js:686
msgid "Supplier part information will be deleted for merged items"
msgstr "Lieferantenteil-Informationen werden für zusammengeführte Artikel gelöscht"
-#: templates/js/translated/stock.js:773
+#: templates/js/translated/stock.js:772
msgid "Confirm stock item merge"
msgstr "Zusammenführung der Artikel bestätigen"
-#: templates/js/translated/stock.js:774
+#: templates/js/translated/stock.js:773
msgid "Merge Stock Items"
msgstr "Artikel zusammenführen"
-#: templates/js/translated/stock.js:869
+#: templates/js/translated/stock.js:868
msgid "Transfer Stock"
msgstr "Bestand verschieben"
-#: templates/js/translated/stock.js:870
+#: templates/js/translated/stock.js:869
msgid "Move"
msgstr "Verschieben"
-#: templates/js/translated/stock.js:876
+#: templates/js/translated/stock.js:875
msgid "Count Stock"
msgstr "Bestand zählen"
-#: templates/js/translated/stock.js:877
+#: templates/js/translated/stock.js:876
msgid "Count"
msgstr "Anzahl"
-#: templates/js/translated/stock.js:881
+#: templates/js/translated/stock.js:880
msgid "Remove Stock"
msgstr "Bestand entfernen"
-#: templates/js/translated/stock.js:882
+#: templates/js/translated/stock.js:881
msgid "Take"
msgstr "Entfernen"
-#: templates/js/translated/stock.js:886
+#: templates/js/translated/stock.js:885
msgid "Add Stock"
msgstr "Bestand hinzufügen"
-#: templates/js/translated/stock.js:887 users/models.py:215
+#: templates/js/translated/stock.js:886 users/models.py:215
msgid "Add"
msgstr "Hinzufügen"
-#: templates/js/translated/stock.js:891
+#: templates/js/translated/stock.js:890
msgid "Delete Stock"
msgstr "Bestand löschen"
-#: templates/js/translated/stock.js:984
+#: templates/js/translated/stock.js:983
msgid "Quantity cannot be adjusted for serialized stock"
msgstr "Menge von serialisiertem Bestand kann nicht bearbeitet werden"
-#: templates/js/translated/stock.js:984
+#: templates/js/translated/stock.js:983
msgid "Specify stock quantity"
msgstr "Bestandsanzahl angeben"
-#: templates/js/translated/stock.js:1024
+#: templates/js/translated/stock.js:1023
msgid "You must select at least one available stock item"
msgstr "Sie müssen mindestens einen Lagerartikel auswählen"
-#: templates/js/translated/stock.js:1047
+#: templates/js/translated/stock.js:1046
msgid "Confirm stock adjustment"
msgstr "Bestands-Anpassung bestätigen"
-#: templates/js/translated/stock.js:1172
+#: templates/js/translated/stock.js:1182
msgid "PASS"
msgstr "ERFOLGREICH"
-#: templates/js/translated/stock.js:1174
+#: templates/js/translated/stock.js:1184
msgid "FAIL"
msgstr "FEHLGESCHLAGEN"
-#: templates/js/translated/stock.js:1179
+#: templates/js/translated/stock.js:1189
msgid "NO RESULT"
msgstr "KEIN ERGEBNIS"
-#: templates/js/translated/stock.js:1226
+#: templates/js/translated/stock.js:1236
msgid "Pass test"
msgstr "Test bestanden"
-#: templates/js/translated/stock.js:1229
+#: templates/js/translated/stock.js:1239
msgid "Add test result"
msgstr "Testergebnis hinzufügen"
-#: templates/js/translated/stock.js:1255
+#: templates/js/translated/stock.js:1265
msgid "No test results found"
msgstr "Keine Testergebnisse gefunden"
-#: templates/js/translated/stock.js:1311
+#: templates/js/translated/stock.js:1321
msgid "Test Date"
msgstr "Testdatum"
-#: templates/js/translated/stock.js:1476
+#: templates/js/translated/stock.js:1486
msgid "Edit Test Result"
msgstr "Testergebnis bearbeiten"
-#: templates/js/translated/stock.js:1498
+#: templates/js/translated/stock.js:1508
msgid "Delete Test Result"
msgstr "Testergebnis löschen"
-#: templates/js/translated/stock.js:1527
+#: templates/js/translated/stock.js:1537
msgid "In production"
msgstr "In Arbeit"
-#: templates/js/translated/stock.js:1531
+#: templates/js/translated/stock.js:1541
msgid "Installed in Stock Item"
msgstr "In Lagerartikel installiert"
-#: templates/js/translated/stock.js:1539
+#: templates/js/translated/stock.js:1549
msgid "Assigned to Sales Order"
msgstr "Auftrag zugewiesen"
-#: templates/js/translated/stock.js:1545
+#: templates/js/translated/stock.js:1555
msgid "No stock location set"
msgstr "Kein Lagerort gesetzt"
-#: templates/js/translated/stock.js:1712
+#: templates/js/translated/stock.js:1722
msgid "Stock item is in production"
msgstr "Lagerartikel wird produziert"
-#: templates/js/translated/stock.js:1717
+#: templates/js/translated/stock.js:1727
msgid "Stock item assigned to sales order"
msgstr "Lagerartikel wurde Auftrag zugewiesen"
-#: templates/js/translated/stock.js:1720
+#: templates/js/translated/stock.js:1730
msgid "Stock item assigned to customer"
msgstr "Lagerartikel wurde Kunden zugewiesen"
-#: templates/js/translated/stock.js:1723
+#: templates/js/translated/stock.js:1733
msgid "Serialized stock item has been allocated"
msgstr "Serialisierter Lagerartikel wurde zugewiesen"
-#: templates/js/translated/stock.js:1725
+#: templates/js/translated/stock.js:1735
msgid "Stock item has been fully allocated"
msgstr "Lagerartikel wurde vollständig zugewiesen"
-#: templates/js/translated/stock.js:1727
+#: templates/js/translated/stock.js:1737
msgid "Stock item has been partially allocated"
msgstr "Lagerartikel wurde teilweise zugewiesen"
-#: templates/js/translated/stock.js:1730
+#: templates/js/translated/stock.js:1740
msgid "Stock item has been installed in another item"
msgstr "Lagerartikel in anderem Element verbaut"
-#: templates/js/translated/stock.js:1734
+#: templates/js/translated/stock.js:1744
msgid "Stock item has expired"
msgstr "Lagerartikel ist abgelaufen"
-#: templates/js/translated/stock.js:1736
+#: templates/js/translated/stock.js:1746
msgid "Stock item will expire soon"
msgstr "Lagerartikel läuft demnächst ab"
-#: templates/js/translated/stock.js:1743
+#: templates/js/translated/stock.js:1753
msgid "Stock item has been rejected"
msgstr "Lagerartikel abgewiesen"
-#: templates/js/translated/stock.js:1745
+#: templates/js/translated/stock.js:1755
msgid "Stock item is lost"
msgstr "Lagerartikel verloren"
-#: templates/js/translated/stock.js:1747
+#: templates/js/translated/stock.js:1757
msgid "Stock item is destroyed"
msgstr "Lagerartikel zerstört"
-#: templates/js/translated/stock.js:1751
+#: templates/js/translated/stock.js:1761
#: templates/js/translated/table_filters.js:188
msgid "Depleted"
msgstr "gelöscht"
-#: templates/js/translated/stock.js:1802
+#: templates/js/translated/stock.js:1812
msgid "Stocktake"
msgstr "Inventur"
-#: templates/js/translated/stock.js:1884
+#: templates/js/translated/stock.js:1894
msgid "Supplier part not specified"
msgstr "Zuliefererteil nicht angegeben"
-#: templates/js/translated/stock.js:1922
+#: templates/js/translated/stock.js:1932
msgid "No stock items matching query"
msgstr "Keine zur Anfrage passenden Lagerartikel"
-#: templates/js/translated/stock.js:2095
+#: templates/js/translated/stock.js:2105
msgid "Set Stock Status"
msgstr "Status setzen"
-#: templates/js/translated/stock.js:2109
+#: templates/js/translated/stock.js:2119
msgid "Select Status Code"
msgstr "Status Code setzen"
-#: templates/js/translated/stock.js:2110
+#: templates/js/translated/stock.js:2120
msgid "Status code must be selected"
msgstr "Status Code muss ausgewählt werden"
-#: templates/js/translated/stock.js:2365
+#: templates/js/translated/stock.js:2375
msgid "Details"
msgstr "Details"
-#: templates/js/translated/stock.js:2381
+#: templates/js/translated/stock.js:2391
msgid "Part information unavailable"
msgstr "Artikelinformationen nicht verfügbar"
-#: templates/js/translated/stock.js:2403
+#: templates/js/translated/stock.js:2413
msgid "Location no longer exists"
msgstr "Standort nicht mehr vorhanden"
-#: templates/js/translated/stock.js:2422
+#: templates/js/translated/stock.js:2432
msgid "Purchase order no longer exists"
msgstr "Bestellung existiert nicht mehr"
-#: templates/js/translated/stock.js:2441
+#: templates/js/translated/stock.js:2451
msgid "Customer no longer exists"
msgstr "Kunde existiert nicht mehr"
-#: templates/js/translated/stock.js:2459
+#: templates/js/translated/stock.js:2469
msgid "Stock item no longer exists"
msgstr "Lagerartikel existiert nicht mehr"
-#: templates/js/translated/stock.js:2482
+#: templates/js/translated/stock.js:2492
msgid "Added"
msgstr "Hinzugefügt"
-#: templates/js/translated/stock.js:2490
+#: templates/js/translated/stock.js:2500
msgid "Removed"
msgstr "Entfernt"
-#: templates/js/translated/stock.js:2566
+#: templates/js/translated/stock.js:2576
msgid "No installed items"
msgstr "Keine installierten Elemente"
-#: templates/js/translated/stock.js:2617 templates/js/translated/stock.js:2653
+#: templates/js/translated/stock.js:2627 templates/js/translated/stock.js:2663
msgid "Uninstall Stock Item"
msgstr "Lagerartikel entfernen"
-#: templates/js/translated/stock.js:2666
+#: templates/js/translated/stock.js:2676
msgid "Select stock item to uninstall"
msgstr "Zu deinstallierende Lagerartikel auswählen"
-#: templates/js/translated/stock.js:2687
+#: templates/js/translated/stock.js:2697
msgid "Install another stock item into this item"
msgstr "Einen weiteren Lagerartikel in dieses Teil installiert"
-#: templates/js/translated/stock.js:2688
+#: templates/js/translated/stock.js:2698
msgid "Stock items can only be installed if they meet the following criteria"
msgstr "Lagerartikel können nur installiert werden wenn folgende Kriterien erfüllt werden"
-#: templates/js/translated/stock.js:2690
+#: templates/js/translated/stock.js:2700
msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
msgstr "Der Lagerartikel ist auf ein Teil verknüpft das in der Stückliste für diesen Lagerartikel ist"
-#: templates/js/translated/stock.js:2691
+#: templates/js/translated/stock.js:2701
msgid "The Stock Item is currently available in stock"
msgstr "Dieser Lagerartikel ist aktuell vorhanden"
-#: templates/js/translated/stock.js:2692
+#: templates/js/translated/stock.js:2702
msgid "The Stock Item is not already installed in another item"
msgstr "Der Lagerbestand ist nicht bereits in einem anderen Bestand installiert"
-#: templates/js/translated/stock.js:2693
+#: templates/js/translated/stock.js:2703
msgid "The Stock Item is tracked by either a batch code or serial number"
msgstr "Der Lagerbestand wird entweder mit einem Batch-Code oder mit Seriennummer verfolgt"
-#: templates/js/translated/stock.js:2706
+#: templates/js/translated/stock.js:2716
msgid "Select part to install"
msgstr "Teil zur Installation auswählen"
diff --git a/InvenTree/locale/el/LC_MESSAGES/django.po b/InvenTree/locale/el/LC_MESSAGES/django.po
index bfcbc62635..c5712f4d0e 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: 2022-06-05 14:26+0000\n"
-"PO-Revision-Date: 2022-06-05 14:34\n"
+"POT-Creation-Date: 2022-06-06 22:59+0000\n"
+"PO-Revision-Date: 2022-06-07 14:34\n"
"Last-Translator: \n"
"Language-Team: Greek\n"
"Language: el_GR\n"
@@ -17,7 +17,7 @@ msgstr ""
"X-Crowdin-File: /[inventree.InvenTree] l10/InvenTree/locale/en/LC_MESSAGES/django.po\n"
"X-Crowdin-File-ID: 154\n"
-#: InvenTree/api.py:46
+#: InvenTree/api.py:49
msgid "API endpoint not found"
msgstr ""
@@ -29,275 +29,273 @@ msgstr ""
msgid "Enter date"
msgstr ""
-#: InvenTree/forms.py:117 templates/account/email_confirm.html:20
-#: templates/js/translated/forms.js:630
-msgid "Confirm"
-msgstr ""
-
-#: InvenTree/forms.py:134
+#: InvenTree/forms.py:117
msgid "Confirm delete"
msgstr ""
-#: InvenTree/forms.py:135
+#: InvenTree/forms.py:118
msgid "Confirm item deletion"
msgstr ""
-#: InvenTree/forms.py:167
+#: InvenTree/forms.py:150
msgid "Enter password"
msgstr ""
-#: InvenTree/forms.py:168
+#: InvenTree/forms.py:151
msgid "Enter new password"
msgstr ""
-#: InvenTree/forms.py:175
+#: InvenTree/forms.py:158
msgid "Confirm password"
msgstr ""
-#: InvenTree/forms.py:176
+#: InvenTree/forms.py:159
msgid "Confirm new password"
msgstr ""
-#: InvenTree/forms.py:213
-msgid "Select Category"
-msgstr ""
-
-#: InvenTree/forms.py:234
+#: InvenTree/forms.py:184
msgid "Email (again)"
msgstr ""
-#: InvenTree/forms.py:238
+#: InvenTree/forms.py:188
msgid "Email address confirmation"
msgstr ""
-#: InvenTree/forms.py:259
+#: InvenTree/forms.py:209
msgid "You must type the same email each time."
msgstr ""
-#: InvenTree/helpers.py:402
+#: InvenTree/helpers.py:404
#, python-brace-format
msgid "Duplicate serial: {sn}"
msgstr ""
-#: InvenTree/helpers.py:409 order/models.py:365 order/models.py:517
+#: InvenTree/helpers.py:411 order/models.py:370 order/models.py:522
msgid "Invalid quantity provided"
msgstr ""
-#: InvenTree/helpers.py:412
+#: InvenTree/helpers.py:414
msgid "Empty serial number string"
msgstr ""
-#: InvenTree/helpers.py:444
+#: InvenTree/helpers.py:446
#, python-brace-format
msgid "Invalid group range: {g}"
msgstr ""
-#: InvenTree/helpers.py:447
+#: InvenTree/helpers.py:449
#, python-brace-format
msgid "Invalid group: {g}"
msgstr ""
-#: InvenTree/helpers.py:475
+#: InvenTree/helpers.py:477
#, python-brace-format
msgid "Invalid group sequence: {g}"
msgstr ""
-#: InvenTree/helpers.py:483
+#: InvenTree/helpers.py:485
#, python-brace-format
msgid "Invalid/no group {group}"
msgstr ""
-#: InvenTree/helpers.py:489
+#: InvenTree/helpers.py:491
msgid "No serial numbers found"
msgstr ""
-#: InvenTree/helpers.py:493
+#: InvenTree/helpers.py:495
#, python-brace-format
msgid "Number of unique serial numbers ({s}) must match quantity ({q})"
msgstr ""
-#: InvenTree/models.py:174
+#: InvenTree/models.py:178
msgid "Missing file"
msgstr ""
-#: InvenTree/models.py:175
+#: InvenTree/models.py:179
msgid "Missing external link"
msgstr ""
-#: InvenTree/models.py:187 stock/models.py:2087
-#: templates/js/translated/attachment.js:101
-#: templates/js/translated/attachment.js:198
+#: InvenTree/models.py:191 stock/models.py:2091
+#: templates/js/translated/attachment.js:103
+#: templates/js/translated/attachment.js:194
msgid "Attachment"
msgstr ""
-#: InvenTree/models.py:188
+#: InvenTree/models.py:192
msgid "Select file to attach"
msgstr ""
-#: InvenTree/models.py:194 company/models.py:123 company/models.py:272
-#: company/models.py:506 order/models.py:135 order/models.py:1235
+#: InvenTree/models.py:198 company/models.py:123 company/models.py:272
+#: company/models.py:506 order/models.py:136 order/models.py:1251
#: part/models.py:795
#: report/templates/report/inventree_build_order_base.html:165
-#: templates/js/translated/company.js:655
-#: templates/js/translated/company.js:946 templates/js/translated/order.js:2676
-#: templates/js/translated/part.js:1441
+#: templates/js/translated/company.js:640
+#: templates/js/translated/company.js:931 templates/js/translated/order.js:2676
+#: templates/js/translated/part.js:1485
msgid "Link"
msgstr ""
-#: InvenTree/models.py:195 build/models.py:320 part/models.py:796
+#: InvenTree/models.py:199 build/models.py:320 part/models.py:796
#: stock/models.py:642
msgid "Link to external URL"
msgstr ""
-#: InvenTree/models.py:198 templates/js/translated/attachment.js:102
-#: templates/js/translated/attachment.js:242
+#: InvenTree/models.py:202 templates/js/translated/attachment.js:104
+#: templates/js/translated/attachment.js:238
msgid "Comment"
msgstr ""
-#: InvenTree/models.py:198
+#: InvenTree/models.py:202
msgid "File comment"
msgstr ""
-#: InvenTree/models.py:204 InvenTree/models.py:205 common/models.py:1499
-#: common/models.py:1500 common/models.py:1728 common/models.py:1729
-#: common/models.py:1991 common/models.py:1992 part/models.py:2153
-#: part/models.py:2173 plugin/models.py:238 plugin/models.py:239
+#: InvenTree/models.py:208 InvenTree/models.py:209 common/models.py:1506
+#: common/models.py:1507 common/models.py:1735 common/models.py:1736
+#: common/models.py:1998 common/models.py:1999 part/models.py:2141
+#: part/models.py:2161 plugin/models.py:238 plugin/models.py:239
#: report/templates/report/inventree_test_report_base.html:96
-#: templates/js/translated/stock.js:2513
+#: templates/js/translated/stock.js:2523
msgid "User"
msgstr ""
-#: InvenTree/models.py:208
+#: InvenTree/models.py:212
msgid "upload date"
msgstr ""
-#: InvenTree/models.py:230
+#: InvenTree/models.py:234
msgid "Filename must not be empty"
msgstr ""
-#: InvenTree/models.py:253
+#: InvenTree/models.py:257
msgid "Invalid attachment directory"
msgstr ""
-#: InvenTree/models.py:263
+#: InvenTree/models.py:267
#, python-brace-format
msgid "Filename contains illegal character '{c}'"
msgstr ""
-#: InvenTree/models.py:266
+#: InvenTree/models.py:270
msgid "Filename missing extension"
msgstr ""
-#: InvenTree/models.py:273
+#: InvenTree/models.py:277
msgid "Attachment with this filename already exists"
msgstr ""
-#: InvenTree/models.py:280
+#: InvenTree/models.py:284
msgid "Error renaming file"
msgstr ""
-#: InvenTree/models.py:314
+#: InvenTree/models.py:318
msgid "Invalid choice"
msgstr ""
-#: InvenTree/models.py:333 InvenTree/models.py:334 common/models.py:1714
+#: InvenTree/models.py:337 InvenTree/models.py:338 common/models.py:1721
#: company/models.py:354 label/models.py:101 part/models.py:739
-#: part/models.py:2331 plugin/models.py:93 report/models.py:151
+#: part/models.py:2319 plugin/models.py:93 report/models.py:151
#: templates/InvenTree/notifications/notifications.html:84
#: templates/InvenTree/settings/mixins/urls.html:13
#: templates/InvenTree/settings/plugin.html:49
#: templates/InvenTree/settings/plugin.html:132
#: templates/InvenTree/settings/plugin_settings.html:23
#: templates/InvenTree/settings/settings.html:346
-#: templates/js/translated/company.js:539
-#: templates/js/translated/company.js:757 templates/js/translated/part.js:615
-#: templates/js/translated/part.js:767 templates/js/translated/part.js:1736
-#: templates/js/translated/stock.js:2283
+#: templates/js/translated/company.js:530
+#: templates/js/translated/company.js:742 templates/js/translated/part.js:659
+#: templates/js/translated/part.js:811 templates/js/translated/part.js:1832
+#: templates/js/translated/stock.js:2293
msgid "Name"
msgstr ""
-#: InvenTree/models.py:340 build/models.py:197
+#: InvenTree/models.py:344 build/models.py:197
#: build/templates/build/detail.html:24 company/models.py:278
#: company/models.py:512 company/templates/company/company_base.html:71
#: company/templates/company/manufacturer_part.html:75
#: company/templates/company/supplier_part.html:73 label/models.py:108
-#: order/models.py:133 part/models.py:762 part/templates/part/category.html:74
-#: part/templates/part/part_base.html:167
-#: part/templates/part/set_category.html:14 report/models.py:164
+#: order/models.py:134 part/models.py:762 part/templates/part/category.html:74
+#: part/templates/part/part_base.html:167 report/models.py:164
#: report/models.py:509 report/models.py:550
#: report/templates/report/inventree_build_order_base.html:118
#: stock/templates/stock/location.html:103
#: templates/InvenTree/settings/plugin_settings.html:33
-#: templates/js/translated/bom.js:553 templates/js/translated/bom.js:851
-#: templates/js/translated/build.js:2476 templates/js/translated/company.js:401
-#: templates/js/translated/company.js:666
-#: templates/js/translated/company.js:957 templates/js/translated/order.js:1656
+#: templates/js/translated/bom.js:553 templates/js/translated/bom.js:845
+#: templates/js/translated/build.js:2476 templates/js/translated/company.js:395
+#: templates/js/translated/company.js:651
+#: templates/js/translated/company.js:942 templates/js/translated/order.js:1656
#: templates/js/translated/order.js:1888 templates/js/translated/order.js:2476
-#: templates/js/translated/part.js:674 templates/js/translated/part.js:1082
-#: templates/js/translated/part.js:1355 templates/js/translated/part.js:1755
-#: templates/js/translated/part.js:1824 templates/js/translated/stock.js:1676
-#: templates/js/translated/stock.js:2295 templates/js/translated/stock.js:2350
+#: templates/js/translated/part.js:718 templates/js/translated/part.js:1126
+#: templates/js/translated/part.js:1399 templates/js/translated/part.js:1851
+#: templates/js/translated/part.js:1920 templates/js/translated/stock.js:1686
+#: templates/js/translated/stock.js:2305 templates/js/translated/stock.js:2360
msgid "Description"
msgstr ""
-#: InvenTree/models.py:341
+#: InvenTree/models.py:345
msgid "Description (optional)"
msgstr ""
-#: InvenTree/models.py:349
+#: InvenTree/models.py:353
msgid "parent"
msgstr ""
-#: InvenTree/serializers.py:52 part/models.py:2652
+#: InvenTree/models.py:466
+msgid "Server Error"
+msgstr ""
+
+#: InvenTree/models.py:467
+msgid "An error has been logged by the server."
+msgstr ""
+
+#: InvenTree/serializers.py:52 part/models.py:2640
msgid "Must be a valid number"
msgstr ""
-#: InvenTree/serializers.py:271
+#: InvenTree/serializers.py:263
msgid "Filename"
msgstr ""
-#: InvenTree/serializers.py:306
+#: InvenTree/serializers.py:298
msgid "Invalid value"
msgstr ""
-#: InvenTree/serializers.py:328
+#: InvenTree/serializers.py:320
msgid "Data File"
msgstr ""
-#: InvenTree/serializers.py:329
+#: InvenTree/serializers.py:321
msgid "Select data file for upload"
msgstr ""
-#: InvenTree/serializers.py:350
+#: InvenTree/serializers.py:342
msgid "Unsupported file type"
msgstr ""
-#: InvenTree/serializers.py:356
+#: InvenTree/serializers.py:348
msgid "File is too large"
msgstr ""
-#: InvenTree/serializers.py:377
+#: InvenTree/serializers.py:369
msgid "No columns found in file"
msgstr ""
-#: InvenTree/serializers.py:380
+#: InvenTree/serializers.py:372
msgid "No data rows found in file"
msgstr ""
-#: InvenTree/serializers.py:503
+#: InvenTree/serializers.py:495
msgid "No data rows provided"
msgstr ""
-#: InvenTree/serializers.py:506
+#: InvenTree/serializers.py:498
msgid "No data columns supplied"
msgstr ""
-#: InvenTree/serializers.py:583
+#: InvenTree/serializers.py:575
#, python-brace-format
msgid "Missing required column: '{name}'"
msgstr ""
-#: InvenTree/serializers.py:592
+#: InvenTree/serializers.py:584
#, python-brace-format
msgid "Duplicate column: '{col}'"
msgstr ""
@@ -440,7 +438,7 @@ msgstr ""
msgid "Returned"
msgstr ""
-#: InvenTree/status_codes.py:141 order/models.py:1114
+#: InvenTree/status_codes.py:141 order/models.py:1130
#: templates/js/translated/order.js:3264 templates/js/translated/order.js:3607
msgid "Shipped"
msgstr ""
@@ -525,7 +523,7 @@ msgstr ""
msgid "Split child item"
msgstr ""
-#: InvenTree/status_codes.py:281 templates/js/translated/stock.js:2020
+#: InvenTree/status_codes.py:281 templates/js/translated/stock.js:2030
msgid "Merged stock items"
msgstr ""
@@ -597,27 +595,27 @@ msgstr ""
msgid "Invalid value for overage"
msgstr ""
-#: InvenTree/views.py:522
+#: InvenTree/views.py:521
msgid "Delete Item"
msgstr ""
-#: InvenTree/views.py:571
+#: InvenTree/views.py:570
msgid "Check box to confirm item deletion"
msgstr ""
-#: InvenTree/views.py:586 templates/InvenTree/settings/user.html:22
+#: InvenTree/views.py:585 templates/InvenTree/settings/user.html:22
msgid "Edit User Information"
msgstr ""
-#: InvenTree/views.py:598 templates/InvenTree/settings/user.html:19
+#: InvenTree/views.py:597 templates/InvenTree/settings/user.html:19
msgid "Set Password"
msgstr ""
-#: InvenTree/views.py:618
+#: InvenTree/views.py:617
msgid "Password fields must match"
msgstr ""
-#: InvenTree/views.py:842 templates/navbar.html:152
+#: InvenTree/views.py:807 templates/navbar.html:152
msgid "System Information"
msgstr ""
@@ -628,6 +626,7 @@ msgstr ""
#: build/models.py:131 build/templates/build/build_base.html:9
#: build/templates/build/build_base.html:27
#: report/templates/report/inventree_build_order_base.html:106
+#: templates/email/overdue_build_order.html:15
#: templates/js/translated/build.js:727
msgid "Build Order"
msgstr ""
@@ -646,12 +645,12 @@ msgstr ""
msgid "Build Order Reference"
msgstr ""
-#: build/models.py:189 order/models.py:288 order/models.py:638
-#: order/models.py:916 part/models.py:2570
+#: build/models.py:189 order/models.py:293 order/models.py:654
+#: order/models.py:932 part/models.py:2558
#: part/templates/part/upload_bom.html:54
#: report/templates/report/inventree_po_report.html:91
#: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:688 templates/js/translated/bom.js:858
+#: templates/js/translated/bom.js:690 templates/js/translated/bom.js:852
#: templates/js/translated/build.js:1777 templates/js/translated/order.js:1919
#: templates/js/translated/order.js:2120 templates/js/translated/order.js:3448
#: templates/js/translated/order.js:3959
@@ -673,13 +672,12 @@ msgstr ""
#: build/models.py:215 build/templates/build/build_base.html:77
#: build/templates/build/detail.html:29 company/models.py:647
-#: order/models.py:1012 order/models.py:1103 part/models.py:336
-#: part/models.py:2099 part/models.py:2114 part/models.py:2133
-#: part/models.py:2151 part/models.py:2250 part/models.py:2370
-#: part/models.py:2460 part/models.py:2545 part/models.py:2821
-#: part/serializers.py:793 part/templates/part/part_app_base.html:8
+#: order/models.py:1028 order/models.py:1119 part/models.py:336
+#: part/models.py:2087 part/models.py:2102 part/models.py:2121
+#: part/models.py:2139 part/models.py:2238 part/models.py:2358
+#: part/models.py:2448 part/models.py:2533 part/models.py:2809
+#: part/serializers.py:795 part/templates/part/part_app_base.html:8
#: part/templates/part/part_pricing.html:12
-#: part/templates/part/set_category.html:13
#: part/templates/part/upload_bom.html:52
#: report/templates/report/inventree_build_order_base.html:110
#: report/templates/report/inventree_po_report.html:89
@@ -687,22 +685,23 @@ msgstr ""
#: templates/InvenTree/search.html:80
#: templates/email/build_order_required_stock.html:17
#: templates/email/low_stock_notification.html:16
+#: templates/email/overdue_build_order.html:16
#: templates/js/translated/barcode.js:435 templates/js/translated/bom.js:552
-#: templates/js/translated/bom.js:687 templates/js/translated/bom.js:805
+#: templates/js/translated/bom.js:689 templates/js/translated/bom.js:799
#: templates/js/translated/build.js:1153 templates/js/translated/build.js:1647
#: templates/js/translated/build.js:2083 templates/js/translated/build.js:2481
-#: templates/js/translated/company.js:252
-#: templates/js/translated/company.js:486
-#: templates/js/translated/company.js:607
-#: templates/js/translated/company.js:866 templates/js/translated/order.js:100
+#: templates/js/translated/company.js:253
+#: templates/js/translated/company.js:482
+#: templates/js/translated/company.js:592
+#: templates/js/translated/company.js:851 templates/js/translated/order.js:100
#: templates/js/translated/order.js:883 templates/js/translated/order.js:1315
#: templates/js/translated/order.js:1873 templates/js/translated/order.js:2819
#: templates/js/translated/order.js:3217 templates/js/translated/order.js:3432
-#: templates/js/translated/part.js:1067 templates/js/translated/part.js:1137
-#: templates/js/translated/part.js:1333 templates/js/translated/stock.js:531
-#: templates/js/translated/stock.js:696 templates/js/translated/stock.js:903
-#: templates/js/translated/stock.js:1633 templates/js/translated/stock.js:2376
-#: templates/js/translated/stock.js:2571 templates/js/translated/stock.js:2705
+#: templates/js/translated/part.js:1111 templates/js/translated/part.js:1181
+#: templates/js/translated/part.js:1377 templates/js/translated/stock.js:530
+#: templates/js/translated/stock.js:695 templates/js/translated/stock.js:902
+#: templates/js/translated/stock.js:1643 templates/js/translated/stock.js:2386
+#: templates/js/translated/stock.js:2581 templates/js/translated/stock.js:2715
msgid "Part"
msgstr ""
@@ -768,12 +767,12 @@ msgstr ""
msgid "Batch code for this build output"
msgstr ""
-#: build/models.py:282 order/models.py:137 part/models.py:932
+#: build/models.py:282 order/models.py:138 part/models.py:932
#: part/templates/part/part_base.html:305 templates/js/translated/order.js:2489
msgid "Creation Date"
msgstr ""
-#: build/models.py:286 order/models.py:660
+#: build/models.py:286 order/models.py:676
msgid "Target completion date"
msgstr ""
@@ -781,7 +780,7 @@ msgstr ""
msgid "Target date for build completion. Build will be overdue after this date."
msgstr ""
-#: build/models.py:290 order/models.py:331
+#: build/models.py:290 order/models.py:336
#: templates/js/translated/build.js:2558
msgid "Completion Date"
msgstr ""
@@ -799,7 +798,7 @@ msgid "User who issued this build order"
msgstr ""
#: build/models.py:313 build/templates/build/build_base.html:190
-#: build/templates/build/detail.html:115 order/models.py:151
+#: build/templates/build/detail.html:115 order/models.py:152
#: order/templates/order/order_base.html:176
#: order/templates/order/sales_order_base.html:183 part/models.py:936
#: report/templates/report/inventree_build_order_base.html:159
@@ -822,20 +821,20 @@ msgstr ""
#: build/models.py:324 build/serializers.py:374
#: build/templates/build/sidebar.html:21 company/models.py:134
#: company/models.py:519 company/templates/company/sidebar.html:25
-#: order/models.py:155 order/models.py:918 order/models.py:1213
+#: order/models.py:156 order/models.py:934 order/models.py:1229
#: order/templates/order/po_sidebar.html:11
#: order/templates/order/so_sidebar.html:17 part/models.py:921
#: part/templates/part/part_sidebar.html:59
#: report/templates/report/inventree_build_order_base.html:173
-#: stock/models.py:713 stock/models.py:1985 stock/models.py:2093
+#: stock/models.py:713 stock/models.py:1989 stock/models.py:2097
#: stock/serializers.py:315 stock/serializers.py:444 stock/serializers.py:486
-#: stock/serializers.py:772 stock/serializers.py:871 stock/serializers.py:1003
+#: stock/serializers.py:759 stock/serializers.py:858 stock/serializers.py:990
#: stock/templates/stock/stock_sidebar.html:25
-#: templates/js/translated/barcode.js:100 templates/js/translated/bom.js:1044
-#: templates/js/translated/company.js:962 templates/js/translated/order.js:2040
+#: templates/js/translated/barcode.js:100 templates/js/translated/bom.js:1038
+#: templates/js/translated/company.js:947 templates/js/translated/order.js:2040
#: templates/js/translated/order.js:2191 templates/js/translated/order.js:2687
#: templates/js/translated/order.js:3632 templates/js/translated/order.js:4030
-#: templates/js/translated/stock.js:1307 templates/js/translated/stock.js:1916
+#: templates/js/translated/stock.js:1317 templates/js/translated/stock.js:1926
msgid "Notes"
msgstr ""
@@ -855,44 +854,44 @@ msgstr ""
msgid "Build output does not match Build Order"
msgstr ""
-#: build/models.py:1108
+#: build/models.py:1111
msgid "Build item must specify a build output, as master part is marked as trackable"
msgstr ""
-#: build/models.py:1117
+#: build/models.py:1120
#, python-brace-format
msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})"
msgstr ""
-#: build/models.py:1127
+#: build/models.py:1130
msgid "Stock item is over-allocated"
msgstr ""
-#: build/models.py:1133 order/models.py:1372
+#: build/models.py:1136 order/models.py:1388
msgid "Allocation quantity must be greater than zero"
msgstr ""
-#: build/models.py:1139
+#: build/models.py:1142
msgid "Quantity must be 1 for serialized stock"
msgstr ""
-#: build/models.py:1196
+#: build/models.py:1199
msgid "Selected stock item not found in BOM"
msgstr ""
-#: build/models.py:1265 stock/templates/stock/item_base.html:177
+#: build/models.py:1268 stock/templates/stock/item_base.html:177
#: templates/InvenTree/search.html:137 templates/js/translated/build.js:2454
#: templates/navbar.html:38
msgid "Build"
msgstr ""
-#: build/models.py:1266
+#: build/models.py:1269
msgid "Build to allocate parts"
msgstr ""
-#: build/models.py:1282 build/serializers.py:603 order/serializers.py:994
-#: order/serializers.py:1015 stock/serializers.py:382 stock/serializers.py:703
-#: stock/serializers.py:829 stock/templates/stock/item_base.html:10
+#: build/models.py:1285 build/serializers.py:603 order/serializers.py:996
+#: order/serializers.py:1017 stock/serializers.py:382 stock/serializers.py:690
+#: stock/serializers.py:816 stock/templates/stock/item_base.html:10
#: stock/templates/stock/item_base.html:23
#: stock/templates/stock/item_base.html:199
#: templates/js/translated/build.js:738 templates/js/translated/build.js:743
@@ -900,22 +899,22 @@ msgstr ""
#: templates/js/translated/order.js:101 templates/js/translated/order.js:2820
#: templates/js/translated/order.js:3124 templates/js/translated/order.js:3129
#: templates/js/translated/order.js:3224 templates/js/translated/order.js:3314
-#: templates/js/translated/stock.js:532 templates/js/translated/stock.js:697
-#: templates/js/translated/stock.js:2449
+#: templates/js/translated/stock.js:531 templates/js/translated/stock.js:696
+#: templates/js/translated/stock.js:2459
msgid "Stock Item"
msgstr ""
-#: build/models.py:1283
+#: build/models.py:1286
msgid "Source stock item"
msgstr ""
-#: build/models.py:1295 build/serializers.py:183
+#: build/models.py:1298 build/serializers.py:183
#: build/templates/build/build_base.html:82
-#: build/templates/build/detail.html:34 common/models.py:1536
+#: build/templates/build/detail.html:34 common/models.py:1543
#: company/forms.py:36 company/templates/company/supplier_part.html:258
-#: order/models.py:909 order/models.py:1412 order/serializers.py:1134
-#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:68
-#: part/forms.py:83 part/forms.py:98 part/models.py:2561
+#: order/models.py:925 order/models.py:1428 order/serializers.py:1136
+#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:59
+#: part/forms.py:74 part/forms.py:89 part/models.py:2549
#: part/templates/part/detail.html:935 part/templates/part/detail.html:1021
#: part/templates/part/part_pricing.html:16
#: part/templates/part/upload_bom.html:53
@@ -926,8 +925,8 @@ msgstr ""
#: report/templates/report/inventree_test_report_base.html:139
#: stock/serializers.py:279 stock/templates/stock/item_base.html:292
#: stock/templates/stock/item_base.html:300
-#: templates/js/translated/barcode.js:437 templates/js/translated/bom.js:689
-#: templates/js/translated/bom.js:866 templates/js/translated/build.js:422
+#: templates/js/translated/barcode.js:437 templates/js/translated/bom.js:691
+#: templates/js/translated/bom.js:860 templates/js/translated/build.js:422
#: templates/js/translated/build.js:574 templates/js/translated/build.js:765
#: templates/js/translated/build.js:1175 templates/js/translated/build.js:1673
#: templates/js/translated/build.js:2086
@@ -937,23 +936,23 @@ msgstr ""
#: templates/js/translated/order.js:2821 templates/js/translated/order.js:3143
#: templates/js/translated/order.js:3231 templates/js/translated/order.js:3320
#: templates/js/translated/order.js:3454 templates/js/translated/order.js:3965
-#: templates/js/translated/part.js:967 templates/js/translated/part.js:1969
-#: templates/js/translated/part.js:2200 templates/js/translated/part.js:2234
-#: templates/js/translated/part.js:2312 templates/js/translated/stock.js:403
-#: templates/js/translated/stock.js:557 templates/js/translated/stock.js:727
-#: templates/js/translated/stock.js:2498 templates/js/translated/stock.js:2583
+#: templates/js/translated/part.js:1011 templates/js/translated/part.js:2065
+#: templates/js/translated/part.js:2296 templates/js/translated/part.js:2330
+#: templates/js/translated/part.js:2408 templates/js/translated/stock.js:402
+#: templates/js/translated/stock.js:556 templates/js/translated/stock.js:726
+#: templates/js/translated/stock.js:2508 templates/js/translated/stock.js:2593
msgid "Quantity"
msgstr ""
-#: build/models.py:1296
+#: build/models.py:1299
msgid "Stock quantity to allocate to build"
msgstr ""
-#: build/models.py:1304
+#: build/models.py:1307
msgid "Install into"
msgstr ""
-#: build/models.py:1305
+#: build/models.py:1308
msgid "Destination stock item"
msgstr ""
@@ -982,9 +981,9 @@ msgstr ""
msgid "Enter quantity for build output"
msgstr ""
-#: build/serializers.py:198 build/serializers.py:623 order/models.py:363
-#: order/serializers.py:280 order/serializers.py:435 part/serializers.py:512
-#: part/serializers.py:956 stock/models.py:470 stock/models.py:1239
+#: build/serializers.py:198 build/serializers.py:623 order/models.py:368
+#: order/serializers.py:280 order/serializers.py:435 part/serializers.py:514
+#: part/serializers.py:958 stock/models.py:470 stock/models.py:1239
#: stock/serializers.py:288
msgid "Quantity must be greater than zero"
msgstr ""
@@ -997,9 +996,9 @@ msgstr ""
msgid "Integer quantity required, as the bill of materials contains trackable parts"
msgstr ""
-#: build/serializers.py:222 order/serializers.py:448 order/serializers.py:1138
+#: build/serializers.py:222 order/serializers.py:448 order/serializers.py:1140
#: stock/serializers.py:297 templates/js/translated/order.js:1186
-#: templates/js/translated/stock.js:238 templates/js/translated/stock.js:404
+#: templates/js/translated/stock.js:237 templates/js/translated/stock.js:403
msgid "Serial Numbers"
msgstr ""
@@ -1015,7 +1014,7 @@ msgstr ""
msgid "Automatically allocate required items with matching serial numbers"
msgstr ""
-#: build/serializers.py:268 stock/api.py:552
+#: build/serializers.py:268 stock/api.py:553
msgid "The following serial numbers already exist"
msgstr ""
@@ -1025,16 +1024,16 @@ msgstr ""
#: build/serializers.py:356 order/serializers.py:421 order/serializers.py:525
#: stock/serializers.py:308 stock/serializers.py:439 stock/serializers.py:481
-#: stock/serializers.py:864 stock/serializers.py:1097
+#: stock/serializers.py:851 stock/serializers.py:1084
#: stock/templates/stock/item_base.html:390
#: templates/js/translated/barcode.js:436
#: templates/js/translated/barcode.js:618 templates/js/translated/build.js:750
#: templates/js/translated/build.js:1685 templates/js/translated/order.js:1213
#: templates/js/translated/order.js:3136 templates/js/translated/order.js:3239
#: templates/js/translated/order.js:3247 templates/js/translated/order.js:3328
-#: templates/js/translated/part.js:180 templates/js/translated/stock.js:533
-#: templates/js/translated/stock.js:698 templates/js/translated/stock.js:905
-#: templates/js/translated/stock.js:1787 templates/js/translated/stock.js:2390
+#: templates/js/translated/part.js:180 templates/js/translated/stock.js:532
+#: templates/js/translated/stock.js:697 templates/js/translated/stock.js:904
+#: templates/js/translated/stock.js:1797 templates/js/translated/stock.js:2400
msgid "Location"
msgstr ""
@@ -1043,12 +1042,12 @@ msgid "Location for completed build outputs"
msgstr ""
#: build/serializers.py:363 build/templates/build/build_base.html:142
-#: build/templates/build/detail.html:62 order/models.py:654
+#: build/templates/build/detail.html:62 order/models.py:670
#: order/serializers.py:458 stock/templates/stock/item_base.html:423
#: templates/js/translated/barcode.js:182 templates/js/translated/build.js:2510
#: templates/js/translated/order.js:1320 templates/js/translated/order.js:1660
-#: templates/js/translated/order.js:2481 templates/js/translated/stock.js:1762
-#: templates/js/translated/stock.js:2467 templates/js/translated/stock.js:2599
+#: templates/js/translated/order.js:2481 templates/js/translated/stock.js:1772
+#: templates/js/translated/stock.js:2477 templates/js/translated/stock.js:2609
msgid "Status"
msgstr ""
@@ -1108,8 +1107,8 @@ msgstr ""
msgid "No build outputs have been created for this build order"
msgstr ""
-#: build/serializers.py:535 build/serializers.py:580 part/models.py:2679
-#: part/models.py:2813
+#: build/serializers.py:535 build/serializers.py:580 part/models.py:2667
+#: part/models.py:2801
msgid "BOM Item"
msgstr ""
@@ -1125,11 +1124,11 @@ msgstr ""
msgid "bom_item.part must point to the same part as the build order"
msgstr ""
-#: build/serializers.py:609 stock/serializers.py:716
+#: build/serializers.py:609 stock/serializers.py:703
msgid "Item must be in stock"
msgstr ""
-#: build/serializers.py:667 order/serializers.py:1052
+#: build/serializers.py:667 order/serializers.py:1054
#, python-brace-format
msgid "Available quantity ({q}) exceeded"
msgstr ""
@@ -1146,7 +1145,7 @@ msgstr ""
msgid "This stock item has already been allocated to this build output"
msgstr ""
-#: build/serializers.py:708 order/serializers.py:1298
+#: build/serializers.py:708 order/serializers.py:1300
msgid "Allocation items must be provided"
msgstr ""
@@ -1178,10 +1177,19 @@ msgstr ""
msgid "Allow allocation of substitute parts"
msgstr ""
-#: build/tasks.py:96
+#: build/tasks.py:100
msgid "Stock required for build order"
msgstr ""
+#: build/tasks.py:118
+msgid "Overdue Build Order"
+msgstr ""
+
+#: build/tasks.py:123
+#, python-brace-format
+msgid "Build order {bo} is now overdue"
+msgstr ""
+
#: build/templates/build/build_base.html:39
#: order/templates/order/order_base.html:28
#: order/templates/order/sales_order_base.html:38
@@ -1244,13 +1252,13 @@ msgid "Stock has not been fully allocated to this Build Order"
msgstr ""
#: build/templates/build/build_base.html:151
-#: build/templates/build/detail.html:131 order/models.py:922
+#: build/templates/build/detail.html:131 order/models.py:938
#: order/templates/order/order_base.html:162
#: order/templates/order/sales_order_base.html:164
#: report/templates/report/inventree_build_order_base.html:126
#: templates/js/translated/build.js:2550 templates/js/translated/order.js:1677
#: templates/js/translated/order.js:1987 templates/js/translated/order.js:2497
-#: templates/js/translated/order.js:3517 templates/js/translated/part.js:971
+#: templates/js/translated/order.js:3517 templates/js/translated/part.js:1015
msgid "Target Date"
msgstr ""
@@ -1277,13 +1285,14 @@ msgid "Completed"
msgstr ""
#: build/templates/build/build_base.html:176
-#: build/templates/build/detail.html:94 order/models.py:1100
-#: order/models.py:1185 order/models.py:1320
+#: build/templates/build/detail.html:94 order/models.py:1116
+#: order/models.py:1201 order/models.py:1336
#: order/templates/order/sales_order_base.html:9
#: order/templates/order/sales_order_base.html:28
#: report/templates/report/inventree_build_order_base.html:136
#: report/templates/report/inventree_so_report.html:77
#: stock/templates/stock/item_base.html:370
+#: templates/email/overdue_sales_order.html:15
#: templates/js/translated/order.js:2436
msgid "Sales Order"
msgstr ""
@@ -1319,7 +1328,7 @@ msgstr ""
msgid "Stock can be taken from any available location."
msgstr ""
-#: build/templates/build/detail.html:49 order/models.py:1034
+#: build/templates/build/detail.html:49 order/models.py:1050
#: templates/js/translated/order.js:1321 templates/js/translated/order.js:2029
msgid "Destination"
msgstr ""
@@ -1336,8 +1345,8 @@ msgstr ""
#: stock/templates/stock/item_base.html:170
#: templates/js/translated/build.js:1179
#: templates/js/translated/model_renderers.js:112
-#: templates/js/translated/stock.js:971 templates/js/translated/stock.js:1776
-#: templates/js/translated/stock.js:2606
+#: templates/js/translated/stock.js:970 templates/js/translated/stock.js:1786
+#: templates/js/translated/stock.js:2616
#: templates/js/translated/table_filters.js:151
#: templates/js/translated/table_filters.js:242
msgid "Batch"
@@ -1716,7 +1725,7 @@ msgstr ""
msgid "Copy category parameter templates when creating a part"
msgstr ""
-#: common/models.py:820 part/models.py:2372 report/models.py:157
+#: common/models.py:820 part/models.py:2360 report/models.py:157
#: templates/js/translated/table_filters.js:38
#: templates/js/translated/table_filters.js:444
msgid "Template"
@@ -1726,7 +1735,7 @@ msgstr ""
msgid "Parts are templates by default"
msgstr ""
-#: common/models.py:827 part/models.py:884 templates/js/translated/bom.js:1390
+#: common/models.py:827 part/models.py:884 templates/js/translated/bom.js:1384
#: templates/js/translated/table_filters.js:168
#: templates/js/translated/table_filters.js:460
msgid "Assembly"
@@ -1880,7 +1889,7 @@ msgid "Default page size for PDF reports"
msgstr ""
#: common/models.py:968
-msgid "Test Reports"
+msgid "Enable Test Reports"
msgstr ""
#: common/models.py:969
@@ -1888,568 +1897,576 @@ msgid "Enable generation of test reports"
msgstr ""
#: common/models.py:975
-msgid "Batch Code Template"
+msgid "Attach Test Reports"
msgstr ""
#: common/models.py:976
-msgid "Template for generating default batch codes for stock items"
-msgstr ""
-
-#: common/models.py:981
-msgid "Stock Expiry"
+msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item"
msgstr ""
#: common/models.py:982
-msgid "Enable stock expiry functionality"
+msgid "Batch Code Template"
+msgstr ""
+
+#: common/models.py:983
+msgid "Template for generating default batch codes for stock items"
msgstr ""
#: common/models.py:988
-msgid "Sell Expired Stock"
+msgid "Stock Expiry"
msgstr ""
#: common/models.py:989
-msgid "Allow sale of expired stock"
+msgid "Enable stock expiry functionality"
msgstr ""
#: common/models.py:995
-msgid "Stock Stale Time"
+msgid "Sell Expired Stock"
msgstr ""
#: common/models.py:996
-msgid "Number of days stock items are considered stale before expiring"
+msgid "Allow sale of expired stock"
msgstr ""
-#: common/models.py:998
-msgid "days"
+#: common/models.py:1002
+msgid "Stock Stale Time"
msgstr ""
#: common/models.py:1003
-msgid "Build Expired Stock"
+msgid "Number of days stock items are considered stale before expiring"
msgstr ""
-#: common/models.py:1004
-msgid "Allow building with expired stock"
+#: common/models.py:1005
+msgid "days"
msgstr ""
#: common/models.py:1010
-msgid "Stock Ownership Control"
+msgid "Build Expired Stock"
msgstr ""
#: common/models.py:1011
-msgid "Enable ownership control over stock locations and items"
+msgid "Allow building with expired stock"
msgstr ""
#: common/models.py:1017
-msgid "Build Order Reference Prefix"
+msgid "Stock Ownership Control"
msgstr ""
#: common/models.py:1018
-msgid "Prefix value for build order reference"
-msgstr ""
-
-#: common/models.py:1023
-msgid "Build Order Reference Regex"
+msgid "Enable ownership control over stock locations and items"
msgstr ""
#: common/models.py:1024
+msgid "Build Order Reference Prefix"
+msgstr ""
+
+#: common/models.py:1025
+msgid "Prefix value for build order reference"
+msgstr ""
+
+#: common/models.py:1030
+msgid "Build Order Reference Regex"
+msgstr ""
+
+#: common/models.py:1031
msgid "Regular expression pattern for matching build order reference"
msgstr ""
-#: common/models.py:1028
+#: common/models.py:1035
msgid "Sales Order Reference Prefix"
msgstr ""
-#: common/models.py:1029
+#: common/models.py:1036
msgid "Prefix value for sales order reference"
msgstr ""
-#: common/models.py:1034
+#: common/models.py:1041
msgid "Sales Order Default Shipment"
msgstr ""
-#: common/models.py:1035
+#: common/models.py:1042
msgid "Enable creation of default shipment with sales orders"
msgstr ""
-#: common/models.py:1041
+#: common/models.py:1048
msgid "Purchase Order Reference Prefix"
msgstr ""
-#: common/models.py:1042
+#: common/models.py:1049
msgid "Prefix value for purchase order reference"
msgstr ""
-#: common/models.py:1048
+#: common/models.py:1055
msgid "Enable password forgot"
msgstr ""
-#: common/models.py:1049
+#: common/models.py:1056
msgid "Enable password forgot function on the login pages"
msgstr ""
-#: common/models.py:1055
+#: common/models.py:1062
msgid "Enable registration"
msgstr ""
-#: common/models.py:1056
+#: common/models.py:1063
msgid "Enable self-registration for users on the login pages"
msgstr ""
-#: common/models.py:1062
+#: common/models.py:1069
msgid "Enable SSO"
msgstr ""
-#: common/models.py:1063
+#: common/models.py:1070
msgid "Enable SSO on the login pages"
msgstr ""
-#: common/models.py:1069
+#: common/models.py:1076
msgid "Email required"
msgstr ""
-#: common/models.py:1070
+#: common/models.py:1077
msgid "Require user to supply mail on signup"
msgstr ""
-#: common/models.py:1076
+#: common/models.py:1083
msgid "Auto-fill SSO users"
msgstr ""
-#: common/models.py:1077
+#: common/models.py:1084
msgid "Automatically fill out user-details from SSO account-data"
msgstr ""
-#: common/models.py:1083
+#: common/models.py:1090
msgid "Mail twice"
msgstr ""
-#: common/models.py:1084
+#: common/models.py:1091
msgid "On signup ask users twice for their mail"
msgstr ""
-#: common/models.py:1090
+#: common/models.py:1097
msgid "Password twice"
msgstr ""
-#: common/models.py:1091
+#: common/models.py:1098
msgid "On signup ask users twice for their password"
msgstr ""
-#: common/models.py:1097
+#: common/models.py:1104
msgid "Group on signup"
msgstr ""
-#: common/models.py:1098
+#: common/models.py:1105
msgid "Group to which new users are assigned on registration"
msgstr ""
-#: common/models.py:1104
+#: common/models.py:1111
msgid "Enforce MFA"
msgstr ""
-#: common/models.py:1105
+#: common/models.py:1112
msgid "Users must use multifactor security."
msgstr ""
-#: common/models.py:1111
+#: common/models.py:1118
msgid "Check plugins on startup"
msgstr ""
-#: common/models.py:1112
+#: common/models.py:1119
msgid "Check that all plugins are installed on startup - enable in container enviroments"
msgstr ""
-#: common/models.py:1120
+#: common/models.py:1127
msgid "Enable URL integration"
msgstr ""
-#: common/models.py:1121
+#: common/models.py:1128
msgid "Enable plugins to add URL routes"
msgstr ""
-#: common/models.py:1128
+#: common/models.py:1135
msgid "Enable navigation integration"
msgstr ""
-#: common/models.py:1129
+#: common/models.py:1136
msgid "Enable plugins to integrate into navigation"
msgstr ""
-#: common/models.py:1136
+#: common/models.py:1143
msgid "Enable app integration"
msgstr ""
-#: common/models.py:1137
+#: common/models.py:1144
msgid "Enable plugins to add apps"
msgstr ""
-#: common/models.py:1144
+#: common/models.py:1151
msgid "Enable schedule integration"
msgstr ""
-#: common/models.py:1145
+#: common/models.py:1152
msgid "Enable plugins to run scheduled tasks"
msgstr ""
-#: common/models.py:1152
+#: common/models.py:1159
msgid "Enable event integration"
msgstr ""
-#: common/models.py:1153
+#: common/models.py:1160
msgid "Enable plugins to respond to internal events"
msgstr ""
-#: common/models.py:1170 common/models.py:1492
+#: common/models.py:1177 common/models.py:1499
msgid "Settings key (must be unique - case insensitive"
msgstr ""
-#: common/models.py:1192
+#: common/models.py:1199
msgid "Show subscribed parts"
msgstr ""
-#: common/models.py:1193
+#: common/models.py:1200
msgid "Show subscribed parts on the homepage"
msgstr ""
-#: common/models.py:1199
+#: common/models.py:1206
msgid "Show subscribed categories"
msgstr ""
-#: common/models.py:1200
+#: common/models.py:1207
msgid "Show subscribed part categories on the homepage"
msgstr ""
-#: common/models.py:1206
+#: common/models.py:1213
msgid "Show latest parts"
msgstr ""
-#: common/models.py:1207
+#: common/models.py:1214
msgid "Show latest parts on the homepage"
msgstr ""
-#: common/models.py:1213
+#: common/models.py:1220
msgid "Recent Part Count"
msgstr ""
-#: common/models.py:1214
+#: common/models.py:1221
msgid "Number of recent parts to display on index page"
msgstr ""
-#: common/models.py:1220
+#: common/models.py:1227
msgid "Show unvalidated BOMs"
msgstr ""
-#: common/models.py:1221
+#: common/models.py:1228
msgid "Show BOMs that await validation on the homepage"
msgstr ""
-#: common/models.py:1227
+#: common/models.py:1234
msgid "Show recent stock changes"
msgstr ""
-#: common/models.py:1228
+#: common/models.py:1235
msgid "Show recently changed stock items on the homepage"
msgstr ""
-#: common/models.py:1234
+#: common/models.py:1241
msgid "Recent Stock Count"
msgstr ""
-#: common/models.py:1235
+#: common/models.py:1242
msgid "Number of recent stock items to display on index page"
msgstr ""
-#: common/models.py:1241
+#: common/models.py:1248
msgid "Show low stock"
msgstr ""
-#: common/models.py:1242
+#: common/models.py:1249
msgid "Show low stock items on the homepage"
msgstr ""
-#: common/models.py:1248
+#: common/models.py:1255
msgid "Show depleted stock"
msgstr ""
-#: common/models.py:1249
+#: common/models.py:1256
msgid "Show depleted stock items on the homepage"
msgstr ""
-#: common/models.py:1255
+#: common/models.py:1262
msgid "Show needed stock"
msgstr ""
-#: common/models.py:1256
+#: common/models.py:1263
msgid "Show stock items needed for builds on the homepage"
msgstr ""
-#: common/models.py:1262
+#: common/models.py:1269
msgid "Show expired stock"
msgstr ""
-#: common/models.py:1263
+#: common/models.py:1270
msgid "Show expired stock items on the homepage"
msgstr ""
-#: common/models.py:1269
+#: common/models.py:1276
msgid "Show stale stock"
msgstr ""
-#: common/models.py:1270
+#: common/models.py:1277
msgid "Show stale stock items on the homepage"
msgstr ""
-#: common/models.py:1276
+#: common/models.py:1283
msgid "Show pending builds"
msgstr ""
-#: common/models.py:1277
+#: common/models.py:1284
msgid "Show pending builds on the homepage"
msgstr ""
-#: common/models.py:1283
+#: common/models.py:1290
msgid "Show overdue builds"
msgstr ""
-#: common/models.py:1284
+#: common/models.py:1291
msgid "Show overdue builds on the homepage"
msgstr ""
-#: common/models.py:1290
+#: common/models.py:1297
msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:1291
+#: common/models.py:1298
msgid "Show outstanding POs on the homepage"
msgstr ""
-#: common/models.py:1297
+#: common/models.py:1304
msgid "Show overdue POs"
msgstr ""
-#: common/models.py:1298
+#: common/models.py:1305
msgid "Show overdue POs on the homepage"
msgstr ""
-#: common/models.py:1304
+#: common/models.py:1311
msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:1305
+#: common/models.py:1312
msgid "Show outstanding SOs on the homepage"
msgstr ""
-#: common/models.py:1311
+#: common/models.py:1318
msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:1312
+#: common/models.py:1319
msgid "Show overdue SOs on the homepage"
msgstr ""
-#: common/models.py:1317
+#: common/models.py:1324
msgid "Enable label printing"
msgstr ""
-#: common/models.py:1318
+#: common/models.py:1325
msgid "Enable label printing from the web interface"
msgstr ""
-#: common/models.py:1324
+#: common/models.py:1331
msgid "Inline label display"
msgstr ""
-#: common/models.py:1325
+#: common/models.py:1332
msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:1331
+#: common/models.py:1338
msgid "Inline report display"
msgstr ""
-#: common/models.py:1332
+#: common/models.py:1339
msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:1338
+#: common/models.py:1345
msgid "Search Parts"
msgstr ""
-#: common/models.py:1339
+#: common/models.py:1346
msgid "Display parts in search preview window"
msgstr ""
-#: common/models.py:1345
+#: common/models.py:1352
msgid "Seach Supplier Parts"
msgstr ""
-#: common/models.py:1346
+#: common/models.py:1353
msgid "Display supplier parts in search preview window"
msgstr ""
-#: common/models.py:1352
+#: common/models.py:1359
msgid "Search Manufacturer Parts"
msgstr ""
-#: common/models.py:1353
+#: common/models.py:1360
msgid "Display manufacturer parts in search preview window"
msgstr ""
-#: common/models.py:1359
+#: common/models.py:1366
msgid "Hide Inactive Parts"
msgstr ""
-#: common/models.py:1360
+#: common/models.py:1367
msgid "Excluded inactive parts from search preview window"
msgstr ""
-#: common/models.py:1366
+#: common/models.py:1373
msgid "Search Categories"
msgstr ""
-#: common/models.py:1367
+#: common/models.py:1374
msgid "Display part categories in search preview window"
msgstr ""
-#: common/models.py:1373
+#: common/models.py:1380
msgid "Search Stock"
msgstr ""
-#: common/models.py:1374
+#: common/models.py:1381
msgid "Display stock items in search preview window"
msgstr ""
-#: common/models.py:1380
+#: common/models.py:1387
msgid "Hide Unavailable Stock Items"
msgstr ""
-#: common/models.py:1381
+#: common/models.py:1388
msgid "Exclude stock items which are not available from the search preview window"
msgstr ""
-#: common/models.py:1387
+#: common/models.py:1394
msgid "Search Locations"
msgstr ""
-#: common/models.py:1388
+#: common/models.py:1395
msgid "Display stock locations in search preview window"
msgstr ""
-#: common/models.py:1394
+#: common/models.py:1401
msgid "Search Companies"
msgstr ""
-#: common/models.py:1395
+#: common/models.py:1402
msgid "Display companies in search preview window"
msgstr ""
-#: common/models.py:1401
+#: common/models.py:1408
msgid "Search Purchase Orders"
msgstr ""
-#: common/models.py:1402
+#: common/models.py:1409
msgid "Display purchase orders in search preview window"
msgstr ""
-#: common/models.py:1408
+#: common/models.py:1415
msgid "Exclude Inactive Purchase Orders"
msgstr ""
-#: common/models.py:1409
+#: common/models.py:1416
msgid "Exclude inactive purchase orders from search preview window"
msgstr ""
-#: common/models.py:1415
+#: common/models.py:1422
msgid "Search Sales Orders"
msgstr ""
-#: common/models.py:1416
+#: common/models.py:1423
msgid "Display sales orders in search preview window"
msgstr ""
-#: common/models.py:1422
+#: common/models.py:1429
msgid "Exclude Inactive Sales Orders"
msgstr ""
-#: common/models.py:1423
+#: common/models.py:1430
msgid "Exclude inactive sales orders from search preview window"
msgstr ""
-#: common/models.py:1429
+#: common/models.py:1436
msgid "Search Preview Results"
msgstr ""
-#: common/models.py:1430
+#: common/models.py:1437
msgid "Number of results to show in each section of the search preview window"
msgstr ""
-#: common/models.py:1436
+#: common/models.py:1443
msgid "Show Quantity in Forms"
msgstr ""
-#: common/models.py:1437
+#: common/models.py:1444
msgid "Display available part quantity in some forms"
msgstr ""
-#: common/models.py:1443
+#: common/models.py:1450
msgid "Escape Key Closes Forms"
msgstr ""
-#: common/models.py:1444
+#: common/models.py:1451
msgid "Use the escape key to close modal forms"
msgstr ""
-#: common/models.py:1450
+#: common/models.py:1457
msgid "Fixed Navbar"
msgstr ""
-#: common/models.py:1451
+#: common/models.py:1458
msgid "The navbar position is fixed to the top of the screen"
msgstr ""
-#: common/models.py:1457
+#: common/models.py:1464
msgid "Date Format"
msgstr ""
-#: common/models.py:1458
+#: common/models.py:1465
msgid "Preferred format for displaying dates"
msgstr ""
-#: common/models.py:1472 part/templates/part/detail.html:39
+#: common/models.py:1479 part/templates/part/detail.html:39
msgid "Part Scheduling"
msgstr ""
-#: common/models.py:1473
+#: common/models.py:1480
msgid "Display part scheduling information"
msgstr ""
-#: common/models.py:1537 company/forms.py:37
+#: common/models.py:1544 company/forms.py:37
msgid "Price break quantity"
msgstr ""
-#: common/models.py:1544 company/serializers.py:288
-#: company/templates/company/supplier_part.html:263 order/models.py:949
-#: templates/js/translated/part.js:998 templates/js/translated/part.js:1974
+#: common/models.py:1551 company/serializers.py:290
+#: company/templates/company/supplier_part.html:263 order/models.py:965
+#: templates/js/translated/part.js:1042 templates/js/translated/part.js:2070
msgid "Price"
msgstr ""
-#: common/models.py:1545
+#: common/models.py:1552
msgid "Unit price at specified quantity"
msgstr ""
-#: common/models.py:1705 common/models.py:1883
+#: common/models.py:1712 common/models.py:1890
msgid "Endpoint"
msgstr ""
-#: common/models.py:1706
+#: common/models.py:1713
msgid "Endpoint at which this webhook is received"
msgstr ""
-#: common/models.py:1715
+#: common/models.py:1722
msgid "Name for this webhook"
msgstr ""
-#: common/models.py:1720 part/models.py:911 plugin/models.py:99
+#: common/models.py:1727 part/models.py:911 plugin/models.py:99
#: templates/js/translated/table_filters.js:34
#: templates/js/translated/table_filters.js:96
#: templates/js/translated/table_filters.js:308
@@ -2457,79 +2474,89 @@ msgstr ""
msgid "Active"
msgstr ""
-#: common/models.py:1721
+#: common/models.py:1728
msgid "Is this webhook active"
msgstr ""
-#: common/models.py:1735
+#: common/models.py:1742
msgid "Token"
msgstr ""
-#: common/models.py:1736
+#: common/models.py:1743
msgid "Token for access"
msgstr ""
-#: common/models.py:1743
+#: common/models.py:1750
msgid "Secret"
msgstr ""
-#: common/models.py:1744
+#: common/models.py:1751
msgid "Shared secret for HMAC"
msgstr ""
-#: common/models.py:1850
+#: common/models.py:1857
msgid "Message ID"
msgstr ""
-#: common/models.py:1851
+#: common/models.py:1858
msgid "Unique identifier for this message"
msgstr ""
-#: common/models.py:1859
+#: common/models.py:1866
msgid "Host"
msgstr ""
-#: common/models.py:1860
+#: common/models.py:1867
msgid "Host from which this message was received"
msgstr ""
-#: common/models.py:1867
+#: common/models.py:1874
msgid "Header"
msgstr ""
-#: common/models.py:1868
+#: common/models.py:1875
msgid "Header of this message"
msgstr ""
-#: common/models.py:1874
+#: common/models.py:1881
msgid "Body"
msgstr ""
-#: common/models.py:1875
+#: common/models.py:1882
msgid "Body of this message"
msgstr ""
-#: common/models.py:1884
+#: common/models.py:1891
msgid "Endpoint on which this message was received"
msgstr ""
-#: common/models.py:1889
+#: common/models.py:1896
msgid "Worked on"
msgstr ""
-#: common/models.py:1890
+#: common/models.py:1897
msgid "Was the work on this message finished?"
msgstr ""
+#: common/notifications.py:292
+#, python-brace-format
+msgid "New {verbose_name}"
+msgstr ""
+
+#: common/notifications.py:294
+#, python-brace-format
+msgid "A new {verbose_name} has been created and ,assigned to you"
+msgstr ""
+
#: common/views.py:87 order/templates/order/purchase_order_detail.html:23
-#: order/views.py:102 part/views.py:191
+#: order/views.py:102 part/views.py:116
#: templates/patterns/wizard/upload.html:37
msgid "Upload File"
msgstr ""
#: common/views.py:88 order/views.py:103
#: part/templates/part/import_wizard/ajax_match_fields.html:45
-#: part/views.py:192 templates/patterns/wizard/match_fields.html:51
+#: part/views.py:117 templates/patterns/wizard/match_fields.html:51
msgid "Match Fields"
msgstr ""
@@ -2545,19 +2572,19 @@ msgstr ""
msgid "Parts imported"
msgstr ""
-#: common/views.py:507 order/templates/order/order_wizard/match_parts.html:19
+#: common/views.py:511 order/templates/order/order_wizard/match_parts.html:19
#: part/templates/part/import_wizard/match_references.html:19
#: templates/patterns/wizard/match_fields.html:26
#: templates/patterns/wizard/upload.html:35
msgid "Previous Step"
msgstr ""
-#: company/forms.py:16 part/forms.py:21
+#: company/forms.py:16 part/forms.py:18
#: templates/InvenTree/settings/mixins/urls.html:14
msgid "URL"
msgstr ""
-#: company/forms.py:17 part/forms.py:22
+#: company/forms.py:17 part/forms.py:19
msgid "Image URL"
msgstr ""
@@ -2571,7 +2598,7 @@ msgstr ""
#: company/models.py:104 company/templates/company/company_base.html:100
#: templates/InvenTree/settings/plugin_settings.html:55
-#: templates/js/translated/company.js:405
+#: templates/js/translated/company.js:399
msgid "Website"
msgstr ""
@@ -2644,9 +2671,9 @@ msgstr ""
msgid "Does this company manufacture parts?"
msgstr ""
-#: company/models.py:144 company/serializers.py:294
-#: company/templates/company/company_base.html:106 part/serializers.py:137
-#: part/serializers.py:168 stock/serializers.py:162
+#: company/models.py:144 company/serializers.py:296
+#: company/templates/company/company_base.html:106 part/serializers.py:139
+#: part/serializers.py:170 stock/serializers.py:162
msgid "Currency"
msgstr ""
@@ -2667,10 +2694,10 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:90
#: company/templates/company/supplier_part.html:103
#: stock/templates/stock/item_base.html:212
-#: templates/js/translated/company.js:389
-#: templates/js/translated/company.js:488
-#: templates/js/translated/company.js:632
-#: templates/js/translated/company.js:917 templates/js/translated/part.js:235
+#: templates/js/translated/company.js:383
+#: templates/js/translated/company.js:484
+#: templates/js/translated/company.js:617
+#: templates/js/translated/company.js:902 templates/js/translated/part.js:235
#: templates/js/translated/table_filters.js:411
msgid "Manufacturer"
msgstr ""
@@ -2681,11 +2708,11 @@ msgstr ""
#: company/models.py:266 company/templates/company/manufacturer_part.html:101
#: company/templates/company/supplier_part.html:111
-#: templates/js/translated/company.js:255
-#: templates/js/translated/company.js:487
-#: templates/js/translated/company.js:648
-#: templates/js/translated/company.js:935 templates/js/translated/order.js:1907
-#: templates/js/translated/part.js:246 templates/js/translated/part.js:956
+#: templates/js/translated/company.js:256
+#: templates/js/translated/company.js:483
+#: templates/js/translated/company.js:633
+#: templates/js/translated/company.js:920 templates/js/translated/order.js:1907
+#: templates/js/translated/part.js:246 templates/js/translated/part.js:1000
msgid "MPN"
msgstr ""
@@ -2714,9 +2741,9 @@ msgstr ""
#: company/models.py:361
#: report/templates/report/inventree_test_report_base.html:95
-#: stock/models.py:2080 templates/js/translated/company.js:540
-#: templates/js/translated/company.js:763 templates/js/translated/part.js:776
-#: templates/js/translated/stock.js:1294
+#: stock/models.py:2084 templates/js/translated/company.js:531
+#: templates/js/translated/company.js:748 templates/js/translated/part.js:820
+#: templates/js/translated/stock.js:1304
msgid "Value"
msgstr ""
@@ -2724,10 +2751,10 @@ msgstr ""
msgid "Parameter value"
msgstr ""
-#: company/models.py:368 part/models.py:878 part/models.py:2339
+#: company/models.py:368 part/models.py:878 part/models.py:2327
#: part/templates/part/part_base.html:280
#: templates/InvenTree/settings/settings.html:351
-#: templates/js/translated/company.js:769 templates/js/translated/part.js:782
+#: templates/js/translated/company.js:754 templates/js/translated/part.js:826
msgid "Units"
msgstr ""
@@ -2740,13 +2767,14 @@ msgid "Linked manufacturer part must reference the same base part"
msgstr ""
#: company/models.py:487 company/templates/company/company_base.html:81
-#: company/templates/company/supplier_part.html:87 order/models.py:303
+#: company/templates/company/supplier_part.html:87 order/models.py:308
#: order/templates/order/order_base.html:112 part/bom.py:237 part/bom.py:265
#: stock/templates/stock/item_base.html:229
-#: templates/js/translated/company.js:254
-#: templates/js/translated/company.js:393
-#: templates/js/translated/company.js:891 templates/js/translated/order.js:1643
-#: templates/js/translated/part.js:216 templates/js/translated/part.js:924
+#: templates/email/overdue_purchase_order.html:16
+#: templates/js/translated/company.js:255
+#: templates/js/translated/company.js:387
+#: templates/js/translated/company.js:876 templates/js/translated/order.js:1643
+#: templates/js/translated/part.js:216 templates/js/translated/part.js:968
#: templates/js/translated/table_filters.js:415
msgid "Supplier"
msgstr ""
@@ -2756,9 +2784,9 @@ msgid "Select supplier"
msgstr ""
#: company/models.py:493 company/templates/company/supplier_part.html:97
-#: part/bom.py:238 part/bom.py:266 templates/js/translated/company.js:253
+#: part/bom.py:238 part/bom.py:266 templates/js/translated/company.js:254
#: templates/js/translated/order.js:1894 templates/js/translated/part.js:227
-#: templates/js/translated/part.js:942
+#: templates/js/translated/part.js:986
msgid "SKU"
msgstr ""
@@ -2779,23 +2807,23 @@ msgid "Supplier part description"
msgstr ""
#: company/models.py:518 company/templates/company/supplier_part.html:125
-#: part/models.py:2573 part/templates/part/upload_bom.html:59
+#: part/models.py:2561 part/templates/part/upload_bom.html:59
#: report/templates/report/inventree_po_report.html:92
#: report/templates/report/inventree_so_report.html:93 stock/serializers.py:387
msgid "Note"
msgstr ""
-#: company/models.py:522 part/models.py:1688
+#: company/models.py:522 part/models.py:1683
msgid "base cost"
msgstr ""
-#: company/models.py:522 part/models.py:1688
+#: company/models.py:522 part/models.py:1683
msgid "Minimum charge (e.g. stocking fee)"
msgstr ""
#: company/models.py:524 company/templates/company/supplier_part.html:118
#: stock/models.py:608 stock/templates/stock/item_base.html:245
-#: templates/js/translated/company.js:967 templates/js/translated/stock.js:1912
+#: templates/js/translated/company.js:952 templates/js/translated/stock.js:1922
msgid "Packaging"
msgstr ""
@@ -2803,7 +2831,7 @@ msgstr ""
msgid "Part packaging"
msgstr ""
-#: company/models.py:526 part/models.py:1690
+#: company/models.py:526 part/models.py:1685
msgid "multiple"
msgstr ""
@@ -2825,7 +2853,7 @@ msgstr ""
#: company/templates/company/company_base.html:8
#: company/templates/company/company_base.html:12
-#: templates/InvenTree/search.html:177 templates/js/translated/company.js:378
+#: templates/InvenTree/search.html:177 templates/js/translated/company.js:372
msgid "Company"
msgstr ""
@@ -2843,7 +2871,7 @@ msgid "Edit company information"
msgstr ""
#: company/templates/company/company_base.html:34
-#: templates/js/translated/company.js:321
+#: templates/js/translated/company.js:315
msgid "Edit Company"
msgstr ""
@@ -2866,12 +2894,13 @@ msgstr ""
msgid "Download image from URL"
msgstr ""
-#: company/templates/company/company_base.html:86 order/models.py:649
+#: company/templates/company/company_base.html:86 order/models.py:665
#: order/templates/order/sales_order_base.html:116 stock/models.py:627
-#: stock/models.py:628 stock/serializers.py:758
+#: stock/models.py:628 stock/serializers.py:745
#: stock/templates/stock/item_base.html:401
-#: templates/js/translated/company.js:385 templates/js/translated/order.js:2458
-#: templates/js/translated/stock.js:2431
+#: templates/email/overdue_sales_order.html:16
+#: templates/js/translated/company.js:379 templates/js/translated/order.js:2458
+#: templates/js/translated/stock.js:2441
#: templates/js/translated/table_filters.js:419
msgid "Customer"
msgstr ""
@@ -2999,7 +3028,7 @@ msgid "Supplier List"
msgstr ""
#: company/templates/company/manufacturer_part.html:15 company/views.py:45
-#: part/templates/part/prices.html:170 templates/InvenTree/search.html:179
+#: part/templates/part/prices.html:172 templates/InvenTree/search.html:179
#: templates/navbar.html:49
msgid "Manufacturers"
msgstr ""
@@ -3012,12 +3041,12 @@ msgid "Order part"
msgstr ""
#: company/templates/company/manufacturer_part.html:39
-#: templates/js/translated/company.js:680
+#: templates/js/translated/company.js:665
msgid "Edit manufacturer part"
msgstr ""
#: company/templates/company/manufacturer_part.html:43
-#: templates/js/translated/company.js:681
+#: templates/js/translated/company.js:666
msgid "Delete manufacturer part"
msgstr ""
@@ -3032,7 +3061,7 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:119
#: company/templates/company/supplier_part.html:15 company/views.py:39
-#: part/templates/part/part_sidebar.html:35 part/templates/part/prices.html:166
+#: part/templates/part/part_sidebar.html:35 part/templates/part/prices.html:168
#: templates/InvenTree/search.html:189 templates/navbar.html:48
msgid "Suppliers"
msgstr ""
@@ -3092,18 +3121,18 @@ msgstr ""
#: company/templates/company/supplier_part.html:7
#: company/templates/company/supplier_part.html:24 stock/models.py:592
#: stock/templates/stock/item_base.html:238
-#: templates/js/translated/company.js:907 templates/js/translated/order.js:884
-#: templates/js/translated/stock.js:1869
+#: templates/js/translated/company.js:892 templates/js/translated/order.js:884
+#: templates/js/translated/stock.js:1879
msgid "Supplier Part"
msgstr ""
#: company/templates/company/supplier_part.html:38
-#: templates/js/translated/company.js:980
+#: templates/js/translated/company.js:965
msgid "Edit supplier part"
msgstr ""
#: company/templates/company/supplier_part.html:42
-#: templates/js/translated/company.js:981
+#: templates/js/translated/company.js:966
msgid "Delete supplier part"
msgstr ""
@@ -3123,7 +3152,7 @@ msgstr ""
#: company/templates/company/supplier_part.html:148
#: part/templates/part/detail.html:24 stock/templates/stock/location.html:177
-#: templates/js/translated/stock.js:380
+#: templates/js/translated/stock.js:379
msgid "New Stock Item"
msgstr ""
@@ -3144,7 +3173,7 @@ msgstr ""
#: company/templates/company/supplier_part.html:191
#: company/templates/company/supplier_part.html:305
-#: part/templates/part/prices.html:274 templates/js/translated/part.js:2046
+#: part/templates/part/prices.html:276 templates/js/translated/part.js:2142
msgid "Add Price Break"
msgstr ""
@@ -3153,12 +3182,12 @@ msgid "No price break information found"
msgstr ""
#: company/templates/company/supplier_part.html:231
-#: templates/js/translated/part.js:2056
+#: templates/js/translated/part.js:2152
msgid "Delete Price Break"
msgstr ""
#: company/templates/company/supplier_part.html:245
-#: templates/js/translated/part.js:2070
+#: templates/js/translated/part.js:2166
msgid "Edit Price Break"
msgstr ""
@@ -3180,9 +3209,9 @@ msgstr ""
#: stock/templates/stock/stock_app_base.html:10
#: templates/InvenTree/search.html:151
#: templates/InvenTree/settings/sidebar.html:43
-#: templates/js/translated/bom.js:554 templates/js/translated/part.js:678
-#: templates/js/translated/part.js:1226 templates/js/translated/part.js:1387
-#: templates/js/translated/stock.js:904 templates/js/translated/stock.js:1687
+#: templates/js/translated/bom.js:554 templates/js/translated/part.js:722
+#: templates/js/translated/part.js:1270 templates/js/translated/part.js:1431
+#: templates/js/translated/stock.js:903 templates/js/translated/stock.js:1697
#: templates/navbar.html:31
msgid "Stock"
msgstr ""
@@ -3209,7 +3238,7 @@ msgstr ""
#: stock/templates/stock/location.html:173
#: stock/templates/stock/location_sidebar.html:7
#: templates/InvenTree/search.html:153 templates/js/translated/search.js:223
-#: templates/js/translated/stock.js:2307 users/models.py:39
+#: templates/js/translated/stock.js:2317 users/models.py:39
msgid "Stock Items"
msgstr ""
@@ -3238,20 +3267,20 @@ msgstr ""
msgid "New Company"
msgstr ""
-#: company/views.py:112 part/views.py:576
+#: company/views.py:112 part/views.py:501
msgid "Download Image"
msgstr ""
-#: company/views.py:139 part/views.py:606
+#: company/views.py:139 part/views.py:531
msgid "Image size exceeds maximum allowable size for download"
msgstr ""
-#: company/views.py:146 part/views.py:613
+#: company/views.py:146 part/views.py:538
#, python-brace-format
msgid "Invalid response: {code}"
msgstr ""
-#: company/views.py:155 part/views.py:622
+#: company/views.py:155 part/views.py:547
msgid "Supplied URL is not a valid image file"
msgstr ""
@@ -3320,313 +3349,314 @@ msgstr ""
msgid "Part query filters (comma-separated value of key=value pairs)"
msgstr ""
-#: order/models.py:133
+#: order/models.py:134
msgid "Order description"
msgstr ""
-#: order/models.py:135 order/models.py:1236
+#: order/models.py:136 order/models.py:1252
msgid "Link to external page"
msgstr ""
-#: order/models.py:143
+#: order/models.py:144
msgid "Created By"
msgstr ""
-#: order/models.py:150
+#: order/models.py:151
msgid "User or group responsible for this order"
msgstr ""
-#: order/models.py:155
+#: order/models.py:156
msgid "Order notes"
msgstr ""
-#: order/models.py:289 order/models.py:639
+#: order/models.py:294 order/models.py:655
msgid "Order reference"
msgstr ""
-#: order/models.py:294 order/models.py:654
+#: order/models.py:299 order/models.py:670
msgid "Purchase order status"
msgstr ""
-#: order/models.py:304
+#: order/models.py:309
msgid "Company from which the items are being ordered"
msgstr ""
-#: order/models.py:307 order/templates/order/order_base.html:124
+#: order/models.py:312 order/templates/order/order_base.html:124
#: templates/js/translated/order.js:1652
msgid "Supplier Reference"
msgstr ""
-#: order/models.py:307
+#: order/models.py:312
msgid "Supplier order reference code"
msgstr ""
-#: order/models.py:314
+#: order/models.py:319
msgid "received by"
msgstr ""
-#: order/models.py:319
+#: order/models.py:324
msgid "Issue Date"
msgstr ""
-#: order/models.py:320
+#: order/models.py:325
msgid "Date order was issued"
msgstr ""
-#: order/models.py:325
+#: order/models.py:330
msgid "Target Delivery Date"
msgstr ""
-#: order/models.py:326
+#: order/models.py:331
msgid "Expected date for order delivery. Order will be overdue after this date."
msgstr ""
-#: order/models.py:332
+#: order/models.py:337
msgid "Date order was completed"
msgstr ""
-#: order/models.py:368
+#: order/models.py:373
msgid "Part supplier must match PO supplier"
msgstr ""
-#: order/models.py:512
+#: order/models.py:517
msgid "Quantity must be a positive number"
msgstr ""
-#: order/models.py:650
+#: order/models.py:666
msgid "Company to which the items are being sold"
msgstr ""
-#: order/models.py:656
+#: order/models.py:672
msgid "Customer Reference "
msgstr ""
-#: order/models.py:656
+#: order/models.py:672
msgid "Customer order reference code"
msgstr ""
-#: order/models.py:661
+#: order/models.py:677
msgid "Target date for order completion. Order will be overdue after this date."
msgstr ""
-#: order/models.py:664 order/models.py:1190
+#: order/models.py:680 order/models.py:1206
#: templates/js/translated/order.js:2505 templates/js/translated/order.js:2656
msgid "Shipment Date"
msgstr ""
-#: order/models.py:671
+#: order/models.py:687
msgid "shipped by"
msgstr ""
-#: order/models.py:726
+#: order/models.py:742
msgid "Order cannot be completed as no parts have been assigned"
msgstr ""
-#: order/models.py:730
+#: order/models.py:746
msgid "Only a pending order can be marked as complete"
msgstr ""
-#: order/models.py:733
+#: order/models.py:749
msgid "Order cannot be completed as there are incomplete shipments"
msgstr ""
-#: order/models.py:736
+#: order/models.py:752
msgid "Order cannot be completed as there are incomplete line items"
msgstr ""
-#: order/models.py:910
+#: order/models.py:926
msgid "Item quantity"
msgstr ""
-#: order/models.py:916
+#: order/models.py:932
msgid "Line item reference"
msgstr ""
-#: order/models.py:918
+#: order/models.py:934
msgid "Line item notes"
msgstr ""
-#: order/models.py:923
+#: order/models.py:939
msgid "Target shipping date for this line item"
msgstr ""
-#: order/models.py:941
+#: order/models.py:957
msgid "Context"
msgstr ""
-#: order/models.py:942
+#: order/models.py:958
msgid "Additional context for this line"
msgstr ""
-#: order/models.py:950
+#: order/models.py:966
msgid "Unit price"
msgstr ""
-#: order/models.py:980
+#: order/models.py:996
msgid "Supplier part must match supplier"
msgstr ""
-#: order/models.py:988
+#: order/models.py:1004
msgid "deleted"
msgstr ""
-#: order/models.py:994 order/models.py:1074 order/models.py:1099
-#: order/models.py:1184 order/models.py:1320
+#: order/models.py:1010 order/models.py:1090 order/models.py:1115
+#: order/models.py:1200 order/models.py:1336
#: templates/js/translated/order.js:3112
msgid "Order"
msgstr ""
-#: order/models.py:995 order/models.py:1074
+#: order/models.py:1011 order/models.py:1090
#: order/templates/order/order_base.html:9
#: order/templates/order/order_base.html:18
#: report/templates/report/inventree_po_report.html:76
#: stock/templates/stock/item_base.html:184
+#: templates/email/overdue_purchase_order.html:15
#: templates/js/translated/order.js:885 templates/js/translated/order.js:1621
-#: templates/js/translated/part.js:899 templates/js/translated/stock.js:1846
-#: templates/js/translated/stock.js:2412
+#: templates/js/translated/part.js:943 templates/js/translated/stock.js:1856
+#: templates/js/translated/stock.js:2422
msgid "Purchase Order"
msgstr ""
-#: order/models.py:1013
+#: order/models.py:1029
msgid "Supplier part"
msgstr ""
-#: order/models.py:1020 order/templates/order/order_base.html:169
+#: order/models.py:1036 order/templates/order/order_base.html:169
#: templates/js/translated/order.js:1318 templates/js/translated/order.js:2009
-#: templates/js/translated/part.js:993 templates/js/translated/part.js:1020
+#: templates/js/translated/part.js:1037 templates/js/translated/part.js:1064
#: templates/js/translated/table_filters.js:330
msgid "Received"
msgstr ""
-#: order/models.py:1021
+#: order/models.py:1037
msgid "Number of items received"
msgstr ""
-#: order/models.py:1028 part/templates/part/prices.html:179 stock/models.py:722
+#: order/models.py:1044 part/templates/part/prices.html:181 stock/models.py:722
#: stock/serializers.py:153 stock/templates/stock/item_base.html:191
-#: templates/js/translated/stock.js:1900
+#: templates/js/translated/stock.js:1910
msgid "Purchase Price"
msgstr ""
-#: order/models.py:1029
+#: order/models.py:1045
msgid "Unit purchase price"
msgstr ""
-#: order/models.py:1037
+#: order/models.py:1053
msgid "Where does the Purchaser want this item to be stored?"
msgstr ""
-#: order/models.py:1109 part/templates/part/part_pricing.html:112
-#: part/templates/part/prices.html:119 part/templates/part/prices.html:288
+#: order/models.py:1125 part/templates/part/part_pricing.html:115
+#: part/templates/part/prices.html:121 part/templates/part/prices.html:290
msgid "Sale Price"
msgstr ""
-#: order/models.py:1110
+#: order/models.py:1126
msgid "Unit sale price"
msgstr ""
-#: order/models.py:1115
+#: order/models.py:1131
msgid "Shipped quantity"
msgstr ""
-#: order/models.py:1191
+#: order/models.py:1207
msgid "Date of shipment"
msgstr ""
-#: order/models.py:1198
+#: order/models.py:1214
msgid "Checked By"
msgstr ""
-#: order/models.py:1199
+#: order/models.py:1215
msgid "User who checked this shipment"
msgstr ""
-#: order/models.py:1207
+#: order/models.py:1223
msgid "Shipment number"
msgstr ""
-#: order/models.py:1214
+#: order/models.py:1230
msgid "Shipment notes"
msgstr ""
-#: order/models.py:1221
+#: order/models.py:1237
msgid "Tracking Number"
msgstr ""
-#: order/models.py:1222
+#: order/models.py:1238
msgid "Shipment tracking information"
msgstr ""
-#: order/models.py:1229
+#: order/models.py:1245
msgid "Invoice Number"
msgstr ""
-#: order/models.py:1230
+#: order/models.py:1246
msgid "Reference number for associated invoice"
msgstr ""
-#: order/models.py:1248
+#: order/models.py:1264
msgid "Shipment has already been sent"
msgstr ""
-#: order/models.py:1251
+#: order/models.py:1267
msgid "Shipment has no allocated stock items"
msgstr ""
-#: order/models.py:1354 order/models.py:1356
+#: order/models.py:1370 order/models.py:1372
msgid "Stock item has not been assigned"
msgstr ""
-#: order/models.py:1360
+#: order/models.py:1376
msgid "Cannot allocate stock item to a line with a different part"
msgstr ""
-#: order/models.py:1362
+#: order/models.py:1378
msgid "Cannot allocate stock to a line without a part"
msgstr ""
-#: order/models.py:1365
+#: order/models.py:1381
msgid "Allocation quantity cannot exceed stock quantity"
msgstr ""
-#: order/models.py:1369
+#: order/models.py:1385
msgid "StockItem is over-allocated"
msgstr ""
-#: order/models.py:1375 order/serializers.py:1045
+#: order/models.py:1391 order/serializers.py:1047
msgid "Quantity must be 1 for serialized stock item"
msgstr ""
-#: order/models.py:1378
+#: order/models.py:1394
msgid "Sales order does not match shipment"
msgstr ""
-#: order/models.py:1379
+#: order/models.py:1395
msgid "Shipment does not match sales order"
msgstr ""
-#: order/models.py:1387
+#: order/models.py:1403
msgid "Line"
msgstr ""
-#: order/models.py:1395 order/serializers.py:1149 order/serializers.py:1273
+#: order/models.py:1411 order/serializers.py:1151 order/serializers.py:1275
#: templates/js/translated/model_renderers.js:301
msgid "Shipment"
msgstr ""
-#: order/models.py:1396
+#: order/models.py:1412
msgid "Sales order shipment reference"
msgstr ""
-#: order/models.py:1408 templates/InvenTree/notifications/notifications.html:70
+#: order/models.py:1424 templates/InvenTree/notifications/notifications.html:70
msgid "Item"
msgstr ""
-#: order/models.py:1409
+#: order/models.py:1425
msgid "Select stock item to allocate"
msgstr ""
-#: order/models.py:1412
+#: order/models.py:1428
msgid "Enter stock allocation quantity"
msgstr ""
@@ -3662,7 +3692,7 @@ msgstr ""
msgid "Purchase order must match supplier"
msgstr ""
-#: order/serializers.py:406 order/serializers.py:1117
+#: order/serializers.py:406 order/serializers.py:1119
msgid "Line Item"
msgstr ""
@@ -3710,42 +3740,60 @@ msgstr ""
msgid "Supplied barcode values must be unique"
msgstr ""
-#: order/serializers.py:866
+#: order/serializers.py:868
msgid "Sale price currency"
msgstr ""
-#: order/serializers.py:947
+#: order/serializers.py:949
msgid "No shipment details provided"
msgstr ""
-#: order/serializers.py:1006 order/serializers.py:1126
+#: order/serializers.py:1008 order/serializers.py:1128
msgid "Line item is not associated with this order"
msgstr ""
-#: order/serializers.py:1028
+#: order/serializers.py:1030
msgid "Quantity must be positive"
msgstr ""
-#: order/serializers.py:1139
+#: order/serializers.py:1141
msgid "Enter serial numbers to allocate"
msgstr ""
-#: order/serializers.py:1161 order/serializers.py:1281
+#: order/serializers.py:1163 order/serializers.py:1283
msgid "Shipment has already been shipped"
msgstr ""
-#: order/serializers.py:1164 order/serializers.py:1284
+#: order/serializers.py:1166 order/serializers.py:1286
msgid "Shipment is not associated with this order"
msgstr ""
-#: order/serializers.py:1214
+#: order/serializers.py:1216
msgid "No match found for the following serial numbers"
msgstr ""
-#: order/serializers.py:1224
+#: order/serializers.py:1226
msgid "The following serial numbers are already allocated"
msgstr ""
+#: order/tasks.py:26
+msgid "Overdue Purchase Order"
+msgstr ""
+
+#: order/tasks.py:31
+#, python-brace-format
+msgid "Purchase order {po} is now overdue"
+msgstr ""
+
+#: order/tasks.py:88
+msgid "Overdue Sales Order"
+msgstr ""
+
+#: order/tasks.py:93
+#, python-brace-format
+msgid "Sales order {so} is now overdue"
+msgstr ""
+
#: order/templates/order/order_base.html:33
msgid "Print purchase order report"
msgstr ""
@@ -3870,8 +3918,8 @@ msgstr ""
#: templates/js/translated/bom.js:77 templates/js/translated/build.js:427
#: templates/js/translated/build.js:579 templates/js/translated/build.js:1972
#: templates/js/translated/order.js:833 templates/js/translated/order.js:1265
-#: templates/js/translated/order.js:2731 templates/js/translated/stock.js:570
-#: templates/js/translated/stock.js:738
+#: templates/js/translated/order.js:2731 templates/js/translated/stock.js:569
+#: templates/js/translated/stock.js:737
#: templates/patterns/wizard/match_fields.html:70
msgid "Remove row"
msgstr ""
@@ -3990,7 +4038,7 @@ msgid "Pending Shipments"
msgstr ""
#: order/templates/order/sales_order_detail.html:70
-#: templates/attachment_table.html:6 templates/js/translated/bom.js:1053
+#: templates/attachment_table.html:6 templates/js/translated/bom.js:1047
#: templates/js/translated/build.js:1880
msgid "Actions"
msgstr ""
@@ -4021,47 +4069,47 @@ msgstr ""
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr ""
-#: part/api.py:481
+#: part/api.py:482
msgid "Incoming Purchase Order"
msgstr ""
-#: part/api.py:501
+#: part/api.py:502
msgid "Outgoing Sales Order"
msgstr ""
-#: part/api.py:519
+#: part/api.py:520
msgid "Stock produced by Build Order"
msgstr ""
-#: part/api.py:551
+#: part/api.py:552
msgid "Stock required for Build Order"
msgstr ""
-#: part/api.py:637
+#: part/api.py:638
msgid "Valid"
msgstr ""
-#: part/api.py:638
+#: part/api.py:639
msgid "Validate entire Bill of Materials"
msgstr ""
-#: part/api.py:644
+#: part/api.py:645
msgid "This option must be selected"
msgstr ""
-#: part/api.py:1010
+#: part/api.py:1011
msgid "Must be greater than zero"
msgstr ""
-#: part/api.py:1014
+#: part/api.py:1015
msgid "Must be a valid quantity"
msgstr ""
-#: part/api.py:1029
+#: part/api.py:1030
msgid "Specify location for initial part stock"
msgstr ""
-#: part/api.py:1060 part/api.py:1064 part/api.py:1079 part/api.py:1083
+#: part/api.py:1061 part/api.py:1065 part/api.py:1080 part/api.py:1084
msgid "This field is required"
msgstr ""
@@ -4080,17 +4128,13 @@ msgid "Available Stock"
msgstr ""
#: part/bom.py:130 part/templates/part/part_base.html:207
-#: templates/js/translated/part.js:517 templates/js/translated/part.js:537
-#: templates/js/translated/part.js:1229 templates/js/translated/part.js:1401
-#: templates/js/translated/part.js:1417
+#: templates/js/translated/part.js:561 templates/js/translated/part.js:581
+#: templates/js/translated/part.js:1273 templates/js/translated/part.js:1445
+#: templates/js/translated/part.js:1461
msgid "On Order"
msgstr ""
-#: part/forms.py:59
-msgid "Select part category"
-msgstr ""
-
-#: part/forms.py:69
+#: part/forms.py:60
msgid "Input quantity for price calculation"
msgstr ""
@@ -4106,7 +4150,7 @@ msgstr ""
msgid "Default keywords for parts in this category"
msgstr ""
-#: part/models.py:115 part/models.py:2415 part/templates/part/category.html:15
+#: part/models.py:115 part/models.py:2403 part/templates/part/category.html:15
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr ""
@@ -4123,7 +4167,7 @@ msgstr ""
#: part/templates/part/category_sidebar.html:9
#: templates/InvenTree/index.html:85 templates/InvenTree/search.html:82
#: templates/InvenTree/settings/sidebar.html:39
-#: templates/js/translated/part.js:1768 templates/js/translated/search.js:144
+#: templates/js/translated/part.js:1864 templates/js/translated/search.js:144
#: templates/navbar.html:24 users/models.py:37
msgid "Parts"
msgstr ""
@@ -4153,7 +4197,7 @@ msgstr ""
msgid "Duplicate IPN not allowed in part settings"
msgstr ""
-#: part/models.py:738 part/models.py:2469
+#: part/models.py:738 part/models.py:2457
msgid "Part name"
msgstr ""
@@ -4186,12 +4230,11 @@ msgstr ""
msgid "Part keywords to improve visibility in search results"
msgstr ""
-#: part/models.py:776 part/models.py:2171 part/models.py:2414
+#: part/models.py:776 part/models.py:2159 part/models.py:2402
#: part/templates/part/part_base.html:257
-#: part/templates/part/set_category.html:15
#: templates/InvenTree/notifications/notifications.html:65
#: templates/InvenTree/settings/settings.html:231
-#: templates/js/translated/part.js:1369
+#: templates/js/translated/part.js:1413 templates/js/translated/part.js:1639
msgid "Category"
msgstr ""
@@ -4200,8 +4243,8 @@ msgid "Part category"
msgstr ""
#: part/models.py:782 part/templates/part/part_base.html:266
-#: templates/js/translated/part.js:666 templates/js/translated/part.js:1322
-#: templates/js/translated/stock.js:1659
+#: templates/js/translated/part.js:710 templates/js/translated/part.js:1366
+#: templates/js/translated/stock.js:1669
msgid "IPN"
msgstr ""
@@ -4214,7 +4257,7 @@ msgid "Part revision or version number"
msgstr ""
#: part/models.py:790 part/templates/part/part_base.html:273
-#: report/models.py:170 templates/js/translated/part.js:670
+#: report/models.py:170 templates/js/translated/part.js:714
msgid "Revision"
msgstr ""
@@ -4302,317 +4345,321 @@ msgstr ""
msgid "Creation User"
msgstr ""
-#: part/models.py:1690
+#: part/models.py:1685
msgid "Sell multiple"
msgstr ""
-#: part/models.py:2218
+#: part/models.py:2206
msgid "Test templates can only be created for trackable parts"
msgstr ""
-#: part/models.py:2235
+#: part/models.py:2223
msgid "Test with this name already exists for this part"
msgstr ""
-#: part/models.py:2255 templates/js/translated/part.js:1819
-#: templates/js/translated/stock.js:1274
+#: part/models.py:2243 templates/js/translated/part.js:1915
+#: templates/js/translated/stock.js:1284
msgid "Test Name"
msgstr ""
-#: part/models.py:2256
+#: part/models.py:2244
msgid "Enter a name for the test"
msgstr ""
-#: part/models.py:2261
+#: part/models.py:2249
msgid "Test Description"
msgstr ""
-#: part/models.py:2262
+#: part/models.py:2250
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:2267 templates/js/translated/part.js:1828
+#: part/models.py:2255 templates/js/translated/part.js:1924
#: templates/js/translated/table_filters.js:294
msgid "Required"
msgstr ""
-#: part/models.py:2268
+#: part/models.py:2256
msgid "Is this test required to pass?"
msgstr ""
-#: part/models.py:2273 templates/js/translated/part.js:1836
+#: part/models.py:2261 templates/js/translated/part.js:1932
msgid "Requires Value"
msgstr ""
-#: part/models.py:2274
+#: part/models.py:2262
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:2279 templates/js/translated/part.js:1843
+#: part/models.py:2267 templates/js/translated/part.js:1939
msgid "Requires Attachment"
msgstr ""
-#: part/models.py:2280
+#: part/models.py:2268
msgid "Does this test require a file attachment when adding a test result?"
msgstr ""
-#: part/models.py:2288
+#: part/models.py:2276
#, python-brace-format
msgid "Illegal character in template name ({c})"
msgstr ""
-#: part/models.py:2324
+#: part/models.py:2312
msgid "Parameter template name must be unique"
msgstr ""
-#: part/models.py:2332
+#: part/models.py:2320
msgid "Parameter Name"
msgstr ""
-#: part/models.py:2339
+#: part/models.py:2327
msgid "Parameter Units"
msgstr ""
-#: part/models.py:2370
+#: part/models.py:2358
msgid "Parent Part"
msgstr ""
-#: part/models.py:2372 part/models.py:2420 part/models.py:2421
+#: part/models.py:2360 part/models.py:2408 part/models.py:2409
#: templates/InvenTree/settings/settings.html:226
msgid "Parameter Template"
msgstr ""
-#: part/models.py:2374
+#: part/models.py:2362
msgid "Data"
msgstr ""
-#: part/models.py:2374
+#: part/models.py:2362
msgid "Parameter Value"
msgstr ""
-#: part/models.py:2425 templates/InvenTree/settings/settings.html:235
+#: part/models.py:2413 templates/InvenTree/settings/settings.html:235
msgid "Default Value"
msgstr ""
-#: part/models.py:2426
+#: part/models.py:2414
msgid "Default Parameter Value"
msgstr ""
-#: part/models.py:2461
+#: part/models.py:2449
msgid "Part ID or part name"
msgstr ""
-#: part/models.py:2464 templates/js/translated/model_renderers.js:200
+#: part/models.py:2452 templates/js/translated/model_renderers.js:200
msgid "Part ID"
msgstr ""
-#: part/models.py:2465
+#: part/models.py:2453
msgid "Unique part ID value"
msgstr ""
-#: part/models.py:2468
+#: part/models.py:2456
msgid "Part Name"
msgstr ""
-#: part/models.py:2472
+#: part/models.py:2460
msgid "Part IPN"
msgstr ""
-#: part/models.py:2473
+#: part/models.py:2461
msgid "Part IPN value"
msgstr ""
-#: part/models.py:2476
+#: part/models.py:2464
msgid "Level"
msgstr ""
-#: part/models.py:2477
+#: part/models.py:2465
msgid "BOM level"
msgstr ""
-#: part/models.py:2546
+#: part/models.py:2534
msgid "Select parent part"
msgstr ""
-#: part/models.py:2554
+#: part/models.py:2542
msgid "Sub part"
msgstr ""
-#: part/models.py:2555
+#: part/models.py:2543
msgid "Select part to be used in BOM"
msgstr ""
-#: part/models.py:2561
+#: part/models.py:2549
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:2563 part/templates/part/upload_bom.html:58
-#: templates/js/translated/bom.js:877 templates/js/translated/bom.js:971
+#: part/models.py:2551 part/templates/part/upload_bom.html:58
+#: templates/js/translated/bom.js:871 templates/js/translated/bom.js:965
#: templates/js/translated/table_filters.js:92
msgid "Optional"
msgstr ""
-#: part/models.py:2563
+#: part/models.py:2551
msgid "This BOM item is optional"
msgstr ""
-#: part/models.py:2566 part/templates/part/upload_bom.html:55
+#: part/models.py:2554 part/templates/part/upload_bom.html:55
msgid "Overage"
msgstr ""
-#: part/models.py:2567
+#: part/models.py:2555
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr ""
-#: part/models.py:2570
+#: part/models.py:2558
msgid "BOM item reference"
msgstr ""
-#: part/models.py:2573
+#: part/models.py:2561
msgid "BOM item notes"
msgstr ""
-#: part/models.py:2575
+#: part/models.py:2563
msgid "Checksum"
msgstr ""
-#: part/models.py:2575
+#: part/models.py:2563
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:2579 part/templates/part/upload_bom.html:57
-#: templates/js/translated/bom.js:988
+#: part/models.py:2567 part/templates/part/upload_bom.html:57
+#: templates/js/translated/bom.js:982
#: templates/js/translated/table_filters.js:68
#: templates/js/translated/table_filters.js:88
msgid "Inherited"
msgstr ""
-#: part/models.py:2580
+#: part/models.py:2568
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr ""
-#: part/models.py:2585 part/templates/part/upload_bom.html:56
-#: templates/js/translated/bom.js:980
+#: part/models.py:2573 part/templates/part/upload_bom.html:56
+#: templates/js/translated/bom.js:974
msgid "Allow Variants"
msgstr ""
-#: part/models.py:2586
+#: part/models.py:2574
msgid "Stock items for variant parts can be used for this BOM item"
msgstr ""
-#: part/models.py:2664 stock/models.py:460
+#: part/models.py:2652 stock/models.py:460
msgid "Quantity must be integer value for trackable parts"
msgstr ""
-#: part/models.py:2673 part/models.py:2675
+#: part/models.py:2661 part/models.py:2663
msgid "Sub part must be specified"
msgstr ""
-#: part/models.py:2780
+#: part/models.py:2768
msgid "BOM Item Substitute"
msgstr ""
-#: part/models.py:2801
+#: part/models.py:2789
msgid "Substitute part cannot be the same as the master part"
msgstr ""
-#: part/models.py:2814
+#: part/models.py:2802
msgid "Parent BOM item"
msgstr ""
-#: part/models.py:2822
+#: part/models.py:2810
msgid "Substitute part"
msgstr ""
-#: part/models.py:2833
+#: part/models.py:2825
msgid "Part 1"
msgstr ""
-#: part/models.py:2837
+#: part/models.py:2829
msgid "Part 2"
msgstr ""
-#: part/models.py:2837
+#: part/models.py:2829
msgid "Select Related Part"
msgstr ""
-#: part/models.py:2868
-msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique"
+#: part/models.py:2847
+msgid "Part relationship cannot be created between a part and itself"
msgstr ""
-#: part/serializers.py:138 part/serializers.py:169 stock/serializers.py:163
+#: part/models.py:2851
+msgid "Duplicate relationship already exists"
+msgstr ""
+
+#: part/serializers.py:140 part/serializers.py:171 stock/serializers.py:163
msgid "Purchase currency of this stock item"
msgstr ""
-#: part/serializers.py:794
+#: part/serializers.py:796
msgid "Select part to copy BOM from"
msgstr ""
-#: part/serializers.py:802
+#: part/serializers.py:804
msgid "Remove Existing Data"
msgstr ""
-#: part/serializers.py:803
+#: part/serializers.py:805
msgid "Remove existing BOM items before copying"
msgstr ""
-#: part/serializers.py:808
+#: part/serializers.py:810
msgid "Include Inherited"
msgstr ""
-#: part/serializers.py:809
+#: part/serializers.py:811
msgid "Include BOM items which are inherited from templated parts"
msgstr ""
-#: part/serializers.py:814
+#: part/serializers.py:816
msgid "Skip Invalid Rows"
msgstr ""
-#: part/serializers.py:815
+#: part/serializers.py:817
msgid "Enable this option to skip invalid rows"
msgstr ""
-#: part/serializers.py:820
+#: part/serializers.py:822
msgid "Copy Substitute Parts"
msgstr ""
-#: part/serializers.py:821
+#: part/serializers.py:823
msgid "Copy substitute parts when duplicate BOM items"
msgstr ""
-#: part/serializers.py:861
+#: part/serializers.py:863
msgid "Clear Existing BOM"
msgstr ""
-#: part/serializers.py:862
+#: part/serializers.py:864
msgid "Delete existing BOM items before uploading"
msgstr ""
-#: part/serializers.py:892
+#: part/serializers.py:894
msgid "No part column specified"
msgstr ""
-#: part/serializers.py:935
+#: part/serializers.py:937
msgid "Multiple matching parts found"
msgstr ""
-#: part/serializers.py:938
+#: part/serializers.py:940
msgid "No matching part found"
msgstr ""
-#: part/serializers.py:941
+#: part/serializers.py:943
msgid "Part is not designated as a component"
msgstr ""
-#: part/serializers.py:950
+#: part/serializers.py:952
msgid "Quantity not provided"
msgstr ""
-#: part/serializers.py:958
+#: part/serializers.py:960
msgid "Invalid quantity"
msgstr ""
-#: part/serializers.py:979
+#: part/serializers.py:981
msgid "At least one BOM item is required"
msgstr ""
@@ -5088,10 +5135,10 @@ msgid "Part is virtual (not a physical part)"
msgstr ""
#: part/templates/part/part_base.html:143
-#: templates/js/translated/company.js:623
-#: templates/js/translated/company.js:882
+#: templates/js/translated/company.js:608
+#: templates/js/translated/company.js:867
#: templates/js/translated/model_renderers.js:192
-#: templates/js/translated/part.js:581 templates/js/translated/part.js:658
+#: templates/js/translated/part.js:625 templates/js/translated/part.js:702
msgid "Inactive"
msgstr ""
@@ -5120,13 +5167,13 @@ msgstr ""
msgid "Allocated to Sales Orders"
msgstr ""
-#: part/templates/part/part_base.html:232 templates/js/translated/bom.js:1009
+#: part/templates/part/part_base.html:232 templates/js/translated/bom.js:1003
msgid "Can Build"
msgstr ""
-#: part/templates/part/part_base.html:238 templates/js/translated/part.js:520
-#: templates/js/translated/part.js:540 templates/js/translated/part.js:1233
-#: templates/js/translated/part.js:1405 templates/js/translated/part.js:1421
+#: part/templates/part/part_base.html:238 templates/js/translated/part.js:564
+#: templates/js/translated/part.js:584 templates/js/translated/part.js:1277
+#: templates/js/translated/part.js:1449 templates/js/translated/part.js:1465
msgid "Building"
msgstr ""
@@ -5143,7 +5190,7 @@ msgstr ""
msgid "Search for serial number"
msgstr ""
-#: part/templates/part/part_base.html:443 part/templates/part/prices.html:147
+#: part/templates/part/part_base.html:443 part/templates/part/prices.html:149
msgid "Calculate"
msgstr ""
@@ -5161,54 +5208,55 @@ msgstr ""
#: part/templates/part/part_pricing.html:26
#: part/templates/part/part_pricing.html:52
-#: part/templates/part/part_pricing.html:100
-#: part/templates/part/part_pricing.html:115 part/templates/part/prices.html:28
-#: part/templates/part/prices.html:55 part/templates/part/prices.html:106
-#: part/templates/part/prices.html:123
+#: part/templates/part/part_pricing.html:103
+#: part/templates/part/part_pricing.html:118 part/templates/part/prices.html:28
+#: part/templates/part/prices.html:55 part/templates/part/prices.html:108
+#: part/templates/part/prices.html:125
msgid "Unit Cost"
msgstr ""
#: part/templates/part/part_pricing.html:32
#: part/templates/part/part_pricing.html:58
-#: part/templates/part/part_pricing.html:104
-#: part/templates/part/part_pricing.html:119 part/templates/part/prices.html:35
-#: part/templates/part/prices.html:62 part/templates/part/prices.html:111
-#: part/templates/part/prices.html:128
+#: part/templates/part/part_pricing.html:107
+#: part/templates/part/part_pricing.html:122 part/templates/part/prices.html:35
+#: part/templates/part/prices.html:62 part/templates/part/prices.html:113
+#: part/templates/part/prices.html:130
msgid "Total Cost"
msgstr ""
#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:43
-#: templates/js/translated/bom.js:963
+#: templates/js/translated/bom.js:957
msgid "No supplier pricing available"
msgstr ""
#: part/templates/part/part_pricing.html:48 part/templates/part/prices.html:52
-#: part/templates/part/prices.html:246
+#: part/templates/part/prices.html:248
msgid "BOM Pricing"
msgstr ""
-#: part/templates/part/part_pricing.html:65 part/templates/part/prices.html:72
+#: part/templates/part/part_pricing.html:66 part/templates/part/prices.html:72
msgid "Unit Purchase Price"
msgstr ""
-#: part/templates/part/part_pricing.html:71 part/templates/part/prices.html:79
+#: part/templates/part/part_pricing.html:72 part/templates/part/prices.html:79
msgid "Total Purchase Price"
msgstr ""
-#: part/templates/part/part_pricing.html:81 part/templates/part/prices.html:89
+#: part/templates/part/part_pricing.html:82 part/templates/part/prices.html:89
msgid "Note: BOM pricing is incomplete for this part"
msgstr ""
-#: part/templates/part/part_pricing.html:88 part/templates/part/prices.html:96
+#: part/templates/part/part_pricing.html:91 part/templates/part/prices.html:98
msgid "No BOM pricing available"
msgstr ""
-#: part/templates/part/part_pricing.html:97 part/templates/part/prices.html:105
+#: part/templates/part/part_pricing.html:100
+#: part/templates/part/prices.html:107
msgid "Internal Price"
msgstr ""
-#: part/templates/part/part_pricing.html:128
-#: part/templates/part/prices.html:137
+#: part/templates/part/part_pricing.html:131
+#: part/templates/part/prices.html:139
msgid "No pricing information is available for this part."
msgstr ""
@@ -5232,43 +5280,6 @@ msgstr ""
msgid "Select from existing images"
msgstr ""
-#: part/templates/part/partial_delete.html:9
-#, python-format
-msgid "Part '%(full_name)s' cannot be deleted as it is still marked as active.\n"
-"
Disable the \"Active\" part attribute and re-try.\n"
-" "
-msgstr ""
-
-#: part/templates/part/partial_delete.html:17
-#, python-format
-msgid "Are you sure you want to delete part '%(full_name)s'?"
-msgstr ""
-
-#: part/templates/part/partial_delete.html:22
-#, python-format
-msgid "This part is used in BOMs for %(count)s other parts. If you delete this part, the BOMs for the following parts will be updated"
-msgstr ""
-
-#: part/templates/part/partial_delete.html:32
-#, python-format
-msgid "There are %(count)s stock entries defined for this part. If you delete this part, the following stock entries will also be deleted:"
-msgstr ""
-
-#: part/templates/part/partial_delete.html:43
-#, python-format
-msgid "There are %(count)s manufacturers defined for this part. If you delete this part, the following manufacturer parts will also be deleted:"
-msgstr ""
-
-#: part/templates/part/partial_delete.html:54
-#, python-format
-msgid "There are %(count)s suppliers defined for this part. If you delete this part, the following supplier parts will also be deleted:"
-msgstr ""
-
-#: part/templates/part/partial_delete.html:67
-#, python-format
-msgid "There are %(count)s unique parts tracked for '%(full_name)s'. Deleting this part will permanently remove this tracking information."
-msgstr ""
-
#: part/templates/part/prices.html:19
msgid "Pricing ranges"
msgstr ""
@@ -5285,66 +5296,58 @@ msgstr ""
msgid "Show BOM cost"
msgstr ""
-#: part/templates/part/prices.html:120
+#: part/templates/part/prices.html:122
msgid "Show sale cost"
msgstr ""
-#: part/templates/part/prices.html:121
+#: part/templates/part/prices.html:123
msgid "Show sale price"
msgstr ""
-#: part/templates/part/prices.html:143
+#: part/templates/part/prices.html:145
msgid "Calculation parameters"
msgstr ""
-#: part/templates/part/prices.html:158 templates/js/translated/bom.js:957
+#: part/templates/part/prices.html:160 templates/js/translated/bom.js:951
msgid "Supplier Cost"
msgstr ""
-#: part/templates/part/prices.html:159 part/templates/part/prices.html:180
-#: part/templates/part/prices.html:204 part/templates/part/prices.html:234
-#: part/templates/part/prices.html:260 part/templates/part/prices.html:289
+#: part/templates/part/prices.html:161 part/templates/part/prices.html:182
+#: part/templates/part/prices.html:206 part/templates/part/prices.html:236
+#: part/templates/part/prices.html:262 part/templates/part/prices.html:291
msgid "Jump to overview"
msgstr ""
-#: part/templates/part/prices.html:184
+#: part/templates/part/prices.html:186
msgid "Stock Pricing"
msgstr ""
-#: part/templates/part/prices.html:193
+#: part/templates/part/prices.html:195
msgid "No stock pricing history is available for this part."
msgstr ""
-#: part/templates/part/prices.html:203
+#: part/templates/part/prices.html:205
msgid "Internal Cost"
msgstr ""
-#: part/templates/part/prices.html:218
+#: part/templates/part/prices.html:220
msgid "Add Internal Price Break"
msgstr ""
-#: part/templates/part/prices.html:233
+#: part/templates/part/prices.html:235
msgid "BOM Cost"
msgstr ""
-#: part/templates/part/prices.html:259
+#: part/templates/part/prices.html:261
msgid "Sale Cost"
msgstr ""
-#: part/templates/part/prices.html:300
+#: part/templates/part/prices.html:302
msgid "No sale pice history available for this part."
msgstr ""
-#: part/templates/part/set_category.html:9
-msgid "Set category for the following parts"
-msgstr ""
-
-#: part/templates/part/set_category.html:32
-msgid "Remove part"
-msgstr ""
-
-#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:543
-#: templates/js/translated/part.js:1221 templates/js/translated/part.js:1425
+#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:587
+#: templates/js/translated/part.js:1265 templates/js/translated/part.js:1469
msgid "No Stock"
msgstr ""
@@ -5407,56 +5410,39 @@ msgstr ""
msgid "{title} v{version}"
msgstr ""
-#: part/views.py:74
-msgid "Set Part Category"
-msgstr ""
-
-#: part/views.py:122
-#, python-brace-format
-msgid "Set category for {n} parts"
-msgstr ""
-
-#: part/views.py:193
+#: part/views.py:118
msgid "Match References"
msgstr ""
-#: part/views.py:494
+#: part/views.py:419
msgid "None"
msgstr ""
-#: part/views.py:556
+#: part/views.py:481
msgid "Part QR Code"
msgstr ""
-#: part/views.py:650
+#: part/views.py:575
msgid "Select Part Image"
msgstr ""
-#: part/views.py:676
+#: part/views.py:601
msgid "Updated part image"
msgstr ""
-#: part/views.py:679
+#: part/views.py:604
msgid "Part image not found"
msgstr ""
-#: part/views.py:768
-msgid "Confirm Part Deletion"
-msgstr ""
-
-#: part/views.py:776
-msgid "Part was deleted"
-msgstr ""
-
-#: part/views.py:785
+#: part/views.py:693
msgid "Part Pricing"
msgstr ""
-#: part/views.py:976
+#: part/views.py:884
msgid "Delete Part Category"
msgstr ""
-#: part/views.py:983
+#: part/views.py:891
msgid "Part category was deleted"
msgstr ""
@@ -5516,21 +5502,21 @@ msgstr ""
msgid "Label printing failed"
msgstr ""
-#: plugin/builtin/integration/core_notifications.py:28
+#: plugin/builtin/integration/core_notifications.py:29
msgid "InvenTree contributors"
msgstr ""
-#: plugin/builtin/integration/core_notifications.py:29
+#: plugin/builtin/integration/core_notifications.py:30
msgid "Integrated outgoing notificaton methods"
msgstr ""
-#: plugin/builtin/integration/core_notifications.py:33
-#: plugin/builtin/integration/core_notifications.py:52
-msgid "Enable email notifications"
-msgstr ""
-
#: plugin/builtin/integration/core_notifications.py:34
#: plugin/builtin/integration/core_notifications.py:53
+msgid "Enable email notifications"
+msgstr ""
+
+#: plugin/builtin/integration/core_notifications.py:35
+#: plugin/builtin/integration/core_notifications.py:54
msgid "Allow sending of emails for event notifications"
msgstr ""
@@ -5646,15 +5632,19 @@ msgstr ""
msgid "Either packagename of URL must be provided"
msgstr ""
-#: report/api.py:166
+#: report/api.py:179
msgid "No valid objects provided to template"
msgstr ""
-#: report/api.py:198 report/api.py:239
+#: report/api.py:215 report/api.py:256
#, python-brace-format
msgid "Template file '{template}' is missing or does not exist"
msgstr ""
+#: report/api.py:359
+msgid "Test report"
+msgstr ""
+
#: report/models.py:152
msgid "Template name"
msgstr ""
@@ -5757,7 +5747,7 @@ msgstr ""
#: templates/js/translated/build.js:1173 templates/js/translated/build.js:1671
#: templates/js/translated/model_renderers.js:106
#: templates/js/translated/order.js:115 templates/js/translated/order.js:3229
-#: templates/js/translated/order.js:3318 templates/js/translated/stock.js:435
+#: templates/js/translated/order.js:3318 templates/js/translated/stock.js:434
msgid "Serial Number"
msgstr ""
@@ -5766,19 +5756,19 @@ msgid "Test Results"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:93
-#: stock/models.py:2068
+#: stock/models.py:2072
msgid "Test"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:94
-#: stock/models.py:2074
+#: stock/models.py:2078
msgid "Result"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:97
#: templates/InvenTree/settings/plugin.html:51
#: templates/InvenTree/settings/plugin_settings.html:38
-#: templates/js/translated/order.js:1669 templates/js/translated/stock.js:2340
+#: templates/js/translated/order.js:1669 templates/js/translated/stock.js:2350
msgid "Date"
msgstr ""
@@ -5796,20 +5786,20 @@ msgid "Installed Items"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:137
-#: templates/js/translated/stock.js:555 templates/js/translated/stock.js:725
-#: templates/js/translated/stock.js:2589
+#: templates/js/translated/stock.js:554 templates/js/translated/stock.js:724
+#: templates/js/translated/stock.js:2599
msgid "Serial"
msgstr ""
-#: stock/api.py:504
+#: stock/api.py:505
msgid "Quantity is required"
msgstr ""
-#: stock/api.py:511
+#: stock/api.py:512
msgid "Valid part must be supplied"
msgstr ""
-#: stock/api.py:536
+#: stock/api.py:537
msgid "Serial numbers cannot be supplied for a non-trackable part"
msgstr ""
@@ -5917,7 +5907,7 @@ msgid "Destination Sales Order"
msgstr ""
#: stock/models.py:690 stock/templates/stock/item_base.html:429
-#: templates/js/translated/stock.js:1816
+#: templates/js/translated/stock.js:1826
msgid "Expiry Date"
msgstr ""
@@ -5971,79 +5961,79 @@ msgstr ""
msgid "Serial numbers already exist: {exists}"
msgstr ""
-#: stock/models.py:1321
+#: stock/models.py:1325
msgid "Stock item has been assigned to a sales order"
msgstr ""
-#: stock/models.py:1324
+#: stock/models.py:1328
msgid "Stock item is installed in another item"
msgstr ""
-#: stock/models.py:1327
+#: stock/models.py:1331
msgid "Stock item contains other items"
msgstr ""
-#: stock/models.py:1330
+#: stock/models.py:1334
msgid "Stock item has been assigned to a customer"
msgstr ""
-#: stock/models.py:1333
+#: stock/models.py:1337
msgid "Stock item is currently in production"
msgstr ""
-#: stock/models.py:1336
+#: stock/models.py:1340
msgid "Serialized stock cannot be merged"
msgstr ""
-#: stock/models.py:1343 stock/serializers.py:908
+#: stock/models.py:1347 stock/serializers.py:895
msgid "Duplicate stock items"
msgstr ""
-#: stock/models.py:1347
+#: stock/models.py:1351
msgid "Stock items must refer to the same part"
msgstr ""
-#: stock/models.py:1351
+#: stock/models.py:1355
msgid "Stock items must refer to the same supplier part"
msgstr ""
-#: stock/models.py:1355
+#: stock/models.py:1359
msgid "Stock status codes must match"
msgstr ""
-#: stock/models.py:1524
+#: stock/models.py:1528
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:1986
+#: stock/models.py:1990
msgid "Entry notes"
msgstr ""
-#: stock/models.py:2044
+#: stock/models.py:2048
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:2050
+#: stock/models.py:2054
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:2069
+#: stock/models.py:2073
msgid "Test name"
msgstr ""
-#: stock/models.py:2075
+#: stock/models.py:2079
msgid "Test result"
msgstr ""
-#: stock/models.py:2081
+#: stock/models.py:2085
msgid "Test output value"
msgstr ""
-#: stock/models.py:2088
+#: stock/models.py:2092
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:2094
+#: stock/models.py:2098
msgid "Test notes"
msgstr ""
@@ -6064,7 +6054,7 @@ msgstr ""
msgid "Enter serial numbers for new items"
msgstr ""
-#: stock/serializers.py:309 stock/serializers.py:865 stock/serializers.py:1098
+#: stock/serializers.py:309 stock/serializers.py:852 stock/serializers.py:1085
msgid "Destination stock location"
msgstr ""
@@ -6104,63 +6094,63 @@ msgstr ""
msgid "Destination location for returned item"
msgstr ""
-#: stock/serializers.py:720
+#: stock/serializers.py:707
msgid "Part must be salable"
msgstr ""
-#: stock/serializers.py:724
+#: stock/serializers.py:711
msgid "Item is allocated to a sales order"
msgstr ""
-#: stock/serializers.py:728
+#: stock/serializers.py:715
msgid "Item is allocated to a build order"
msgstr ""
-#: stock/serializers.py:759
+#: stock/serializers.py:746
msgid "Customer to assign stock items"
msgstr ""
-#: stock/serializers.py:765
+#: stock/serializers.py:752
msgid "Selected company is not a customer"
msgstr ""
-#: stock/serializers.py:773
+#: stock/serializers.py:760
msgid "Stock assignment notes"
msgstr ""
-#: stock/serializers.py:783 stock/serializers.py:1014
+#: stock/serializers.py:770 stock/serializers.py:1001
msgid "A list of stock items must be provided"
msgstr ""
-#: stock/serializers.py:872
+#: stock/serializers.py:859
msgid "Stock merging notes"
msgstr ""
-#: stock/serializers.py:877
+#: stock/serializers.py:864
msgid "Allow mismatched suppliers"
msgstr ""
-#: stock/serializers.py:878
+#: stock/serializers.py:865
msgid "Allow stock items with different supplier parts to be merged"
msgstr ""
-#: stock/serializers.py:883
+#: stock/serializers.py:870
msgid "Allow mismatched status"
msgstr ""
-#: stock/serializers.py:884
+#: stock/serializers.py:871
msgid "Allow stock items with different status codes to be merged"
msgstr ""
-#: stock/serializers.py:894
+#: stock/serializers.py:881
msgid "At least two stock items must be provided"
msgstr ""
-#: stock/serializers.py:976
+#: stock/serializers.py:963
msgid "StockItem primary key value"
msgstr ""
-#: stock/serializers.py:1004
+#: stock/serializers.py:991
msgid "Stock transaction notes"
msgstr ""
@@ -6185,7 +6175,7 @@ msgstr ""
msgid "Test Report"
msgstr ""
-#: stock/templates/stock/item.html:94
+#: stock/templates/stock/item.html:94 stock/templates/stock/item.html:298
msgid "Delete Test Data"
msgstr ""
@@ -6197,11 +6187,15 @@ msgstr ""
msgid "Installed Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:151 templates/js/translated/stock.js:2733
+#: stock/templates/stock/item.html:151 templates/js/translated/stock.js:2743
msgid "Install Stock Item"
msgstr ""
-#: stock/templates/stock/item.html:292 templates/js/translated/stock.js:1455
+#: stock/templates/stock/item.html:290
+msgid "Delete all test results for this stock item"
+msgstr ""
+
+#: stock/templates/stock/item.html:323 templates/js/translated/stock.js:1465
msgid "Add Test Result"
msgstr ""
@@ -6388,7 +6382,7 @@ msgid "Stale"
msgstr ""
#: stock/templates/stock/item_base.html:442
-#: templates/js/translated/stock.js:1832
+#: templates/js/translated/stock.js:1842
msgid "Last Updated"
msgstr ""
@@ -6529,7 +6523,7 @@ msgstr ""
msgid "Child Items"
msgstr ""
-#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:182
+#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:144
msgid "Convert Stock Item"
msgstr ""
@@ -6550,31 +6544,19 @@ msgstr ""
msgid "This action cannot be easily undone"
msgstr ""
-#: stock/views.py:113
+#: stock/views.py:111
msgid "Stock Location QR code"
msgstr ""
-#: stock/views.py:131
-msgid "Delete All Test Data"
-msgstr ""
-
-#: stock/views.py:149
-msgid "Confirm test data deletion"
-msgstr ""
-
-#: stock/views.py:150
-msgid "Check the confirmation box"
-msgstr ""
-
-#: stock/views.py:165
+#: stock/views.py:127
msgid "Stock Item QR Code"
msgstr ""
-#: stock/views.py:216
+#: stock/views.py:178
msgid "Delete Stock Location"
msgstr ""
-#: stock/views.py:229
+#: stock/views.py:191
msgid "Delete Stock Item"
msgstr ""
@@ -7317,8 +7299,8 @@ msgstr ""
#: templates/about.html:11 templates/about.html:105
#: templates/js/translated/bom.js:133 templates/js/translated/bom.js:621
-#: templates/js/translated/modals.js:56 templates/js/translated/modals.js:595
-#: templates/js/translated/modals.js:689 templates/js/translated/modals.js:997
+#: templates/js/translated/modals.js:56 templates/js/translated/modals.js:601
+#: templates/js/translated/modals.js:695 templates/js/translated/modals.js:1003
#: templates/js/translated/order.js:928 templates/modals.html:15
#: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50
msgid "Close"
@@ -7390,6 +7372,10 @@ msgstr ""
msgid "Please confirm that %(email)s is an email address for user %(user_display)s."
msgstr ""
+#: templates/account/email_confirm.html:20 templates/js/translated/forms.js:630
+msgid "Confirm"
+msgstr ""
+
#: templates/account/email_confirm.html:27
#, python-format
msgid "This email confirmation link expired or is invalid. Please issue a new email confirmation request."
@@ -7562,7 +7548,7 @@ msgstr ""
msgid "Delete selected attachments"
msgstr ""
-#: templates/attachment_table.html:12 templates/js/translated/attachment.js:110
+#: templates/attachment_table.html:12 templates/js/translated/attachment.js:112
msgid "Delete Attachments"
msgstr ""
@@ -7596,15 +7582,15 @@ msgid "The following parts are low on required stock"
msgstr ""
#: templates/email/build_order_required_stock.html:18
-#: templates/js/translated/bom.js:1425
+#: templates/js/translated/bom.js:1419
msgid "Required Quantity"
msgstr ""
#: templates/email/build_order_required_stock.html:19
#: templates/email/low_stock_notification.html:18
-#: templates/js/translated/bom.js:890 templates/js/translated/build.js:1787
-#: templates/js/translated/build.js:2650 templates/js/translated/part.js:527
-#: templates/js/translated/part.js:530
+#: templates/js/translated/bom.js:884 templates/js/translated/build.js:1787
+#: templates/js/translated/build.js:2650 templates/js/translated/part.js:571
+#: templates/js/translated/part.js:574
#: templates/js/translated/table_filters.js:178
msgid "Available"
msgstr ""
@@ -7622,6 +7608,13 @@ msgstr ""
msgid "Minimum Quantity"
msgstr ""
+#: templates/email/new_order_assigned.html:9
+#: templates/email/overdue_build_order.html:9
+#: templates/email/overdue_purchase_order.html:9
+#: templates/email/overdue_sales_order.html:9
+msgid "Click on the following link to view this order"
+msgstr ""
+
#: templates/image_download.html:8
msgid "Specify URL for downloading image"
msgstr ""
@@ -7638,91 +7631,91 @@ msgstr ""
msgid "Remote image must not exceed maximum allowable file size"
msgstr ""
-#: templates/js/translated/api.js:235 templates/js/translated/modals.js:1067
+#: templates/js/translated/api.js:195 templates/js/translated/modals.js:1073
msgid "No Response"
msgstr ""
-#: templates/js/translated/api.js:236 templates/js/translated/modals.js:1068
+#: templates/js/translated/api.js:196 templates/js/translated/modals.js:1074
msgid "No response from the InvenTree server"
msgstr ""
-#: templates/js/translated/api.js:242
+#: templates/js/translated/api.js:202
msgid "Error 400: Bad request"
msgstr ""
-#: templates/js/translated/api.js:243
+#: templates/js/translated/api.js:203
msgid "API request returned error code 400"
msgstr ""
-#: templates/js/translated/api.js:247 templates/js/translated/modals.js:1077
+#: templates/js/translated/api.js:207 templates/js/translated/modals.js:1083
msgid "Error 401: Not Authenticated"
msgstr ""
-#: templates/js/translated/api.js:248 templates/js/translated/modals.js:1078
+#: templates/js/translated/api.js:208 templates/js/translated/modals.js:1084
msgid "Authentication credentials not supplied"
msgstr ""
-#: templates/js/translated/api.js:252 templates/js/translated/modals.js:1082
+#: templates/js/translated/api.js:212 templates/js/translated/modals.js:1088
msgid "Error 403: Permission Denied"
msgstr ""
-#: templates/js/translated/api.js:253 templates/js/translated/modals.js:1083
+#: templates/js/translated/api.js:213 templates/js/translated/modals.js:1089
msgid "You do not have the required permissions to access this function"
msgstr ""
-#: templates/js/translated/api.js:257 templates/js/translated/modals.js:1087
+#: templates/js/translated/api.js:217 templates/js/translated/modals.js:1093
msgid "Error 404: Resource Not Found"
msgstr ""
-#: templates/js/translated/api.js:258 templates/js/translated/modals.js:1088
+#: templates/js/translated/api.js:218 templates/js/translated/modals.js:1094
msgid "The requested resource could not be located on the server"
msgstr ""
-#: templates/js/translated/api.js:262
+#: templates/js/translated/api.js:222
msgid "Error 405: Method Not Allowed"
msgstr ""
-#: templates/js/translated/api.js:263
+#: templates/js/translated/api.js:223
msgid "HTTP method not allowed at URL"
msgstr ""
-#: templates/js/translated/api.js:267 templates/js/translated/modals.js:1092
+#: templates/js/translated/api.js:227 templates/js/translated/modals.js:1098
msgid "Error 408: Timeout"
msgstr ""
-#: templates/js/translated/api.js:268 templates/js/translated/modals.js:1093
+#: templates/js/translated/api.js:228 templates/js/translated/modals.js:1099
msgid "Connection timeout while requesting data from server"
msgstr ""
-#: templates/js/translated/api.js:271
+#: templates/js/translated/api.js:231
msgid "Unhandled Error Code"
msgstr ""
-#: templates/js/translated/api.js:272
+#: templates/js/translated/api.js:232
msgid "Error code"
msgstr ""
-#: templates/js/translated/attachment.js:96
+#: templates/js/translated/attachment.js:98
msgid "All selected attachments will be deleted"
msgstr ""
-#: templates/js/translated/attachment.js:156
+#: templates/js/translated/attachment.js:152
msgid "No attachments found"
msgstr ""
-#: templates/js/translated/attachment.js:180
+#: templates/js/translated/attachment.js:176
msgid "Edit Attachment"
msgstr ""
-#: templates/js/translated/attachment.js:246
+#: templates/js/translated/attachment.js:242
msgid "Upload Date"
msgstr ""
-#: templates/js/translated/attachment.js:262
+#: templates/js/translated/attachment.js:264
msgid "Edit attachment"
msgstr ""
-#: templates/js/translated/attachment.js:269
+#: templates/js/translated/attachment.js:271
msgid "Delete attachment"
msgstr ""
@@ -7755,7 +7748,7 @@ msgid "Unknown response from server"
msgstr ""
#: templates/js/translated/barcode.js:182
-#: templates/js/translated/modals.js:1057
+#: templates/js/translated/modals.js:1063
msgid "Invalid server response"
msgstr ""
@@ -7783,7 +7776,7 @@ msgstr ""
msgid "Unlink"
msgstr ""
-#: templates/js/translated/barcode.js:456 templates/js/translated/stock.js:999
+#: templates/js/translated/barcode.js:456 templates/js/translated/stock.js:998
msgid "Remove stock item"
msgstr ""
@@ -7918,89 +7911,89 @@ msgstr ""
msgid "Edit BOM Item Substitutes"
msgstr ""
-#: templates/js/translated/bom.js:682
+#: templates/js/translated/bom.js:684
msgid "All selected BOM items will be deleted"
msgstr ""
-#: templates/js/translated/bom.js:697
+#: templates/js/translated/bom.js:699
msgid "Delete selected BOM items?"
msgstr ""
-#: templates/js/translated/bom.js:824
+#: templates/js/translated/bom.js:818
msgid "Load BOM for subassembly"
msgstr ""
-#: templates/js/translated/bom.js:834
+#: templates/js/translated/bom.js:828
msgid "Substitutes Available"
msgstr ""
-#: templates/js/translated/bom.js:838 templates/js/translated/build.js:1769
+#: templates/js/translated/bom.js:832 templates/js/translated/build.js:1769
msgid "Variant stock allowed"
msgstr ""
-#: templates/js/translated/bom.js:906 templates/js/translated/build.js:1814
+#: templates/js/translated/bom.js:900 templates/js/translated/build.js:1814
#: templates/js/translated/order.js:3562
msgid "No Stock Available"
msgstr ""
-#: templates/js/translated/bom.js:910 templates/js/translated/build.js:1818
+#: templates/js/translated/bom.js:904 templates/js/translated/build.js:1818
msgid "Includes variant and substitute stock"
msgstr ""
-#: templates/js/translated/bom.js:912 templates/js/translated/build.js:1820
-#: templates/js/translated/part.js:690
+#: templates/js/translated/bom.js:906 templates/js/translated/build.js:1820
+#: templates/js/translated/part.js:734
msgid "Includes variant stock"
msgstr ""
-#: templates/js/translated/bom.js:914 templates/js/translated/build.js:1822
+#: templates/js/translated/bom.js:908 templates/js/translated/build.js:1822
msgid "Includes substitute stock"
msgstr ""
-#: templates/js/translated/bom.js:928
+#: templates/js/translated/bom.js:922
msgid "Substitutes"
msgstr ""
-#: templates/js/translated/bom.js:943
+#: templates/js/translated/bom.js:937
msgid "Purchase Price Range"
msgstr ""
-#: templates/js/translated/bom.js:950
+#: templates/js/translated/bom.js:944
msgid "Purchase Price Average"
msgstr ""
-#: templates/js/translated/bom.js:999 templates/js/translated/bom.js:1090
+#: templates/js/translated/bom.js:993 templates/js/translated/bom.js:1084
msgid "View BOM"
msgstr ""
-#: templates/js/translated/bom.js:1061
+#: templates/js/translated/bom.js:1055
msgid "Validate BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:1063
+#: templates/js/translated/bom.js:1057
msgid "This line has been validated"
msgstr ""
-#: templates/js/translated/bom.js:1065
+#: templates/js/translated/bom.js:1059
msgid "Edit substitute parts"
msgstr ""
-#: templates/js/translated/bom.js:1067 templates/js/translated/bom.js:1228
+#: templates/js/translated/bom.js:1061 templates/js/translated/bom.js:1222
msgid "Edit BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:1069
+#: templates/js/translated/bom.js:1063
msgid "Delete BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:1164 templates/js/translated/build.js:1615
+#: templates/js/translated/bom.js:1158 templates/js/translated/build.js:1615
msgid "No BOM items found"
msgstr ""
-#: templates/js/translated/bom.js:1408 templates/js/translated/build.js:1753
+#: templates/js/translated/bom.js:1402 templates/js/translated/build.js:1753
msgid "Required Part"
msgstr ""
-#: templates/js/translated/bom.js:1430
+#: templates/js/translated/bom.js:1424
msgid "Inherited from parent BOM"
msgstr ""
@@ -8040,13 +8033,13 @@ msgstr ""
msgid "Complete Build Order"
msgstr ""
-#: templates/js/translated/build.js:259 templates/js/translated/stock.js:91
-#: templates/js/translated/stock.js:181
+#: templates/js/translated/build.js:259 templates/js/translated/stock.js:90
+#: templates/js/translated/stock.js:180
msgid "Next available serial number"
msgstr ""
-#: templates/js/translated/build.js:261 templates/js/translated/stock.js:93
-#: templates/js/translated/stock.js:183
+#: templates/js/translated/build.js:261 templates/js/translated/stock.js:92
+#: templates/js/translated/stock.js:182
msgid "Latest serial number"
msgstr ""
@@ -8259,9 +8252,9 @@ msgstr ""
msgid "No builds matching query"
msgstr ""
-#: templates/js/translated/build.js:2448 templates/js/translated/part.js:1314
-#: templates/js/translated/part.js:1729 templates/js/translated/stock.js:1619
-#: templates/js/translated/stock.js:2277
+#: templates/js/translated/build.js:2448 templates/js/translated/part.js:1358
+#: templates/js/translated/part.js:1825 templates/js/translated/stock.js:1629
+#: templates/js/translated/stock.js:2287
msgid "Select"
msgstr ""
@@ -8273,7 +8266,7 @@ msgstr ""
msgid "Progress"
msgstr ""
-#: templates/js/translated/build.js:2532 templates/js/translated/stock.js:2519
+#: templates/js/translated/build.js:2532 templates/js/translated/stock.js:2529
msgid "No user information"
msgstr ""
@@ -8285,107 +8278,107 @@ msgstr ""
msgid "No parts allocated for"
msgstr ""
-#: templates/js/translated/company.js:66
+#: templates/js/translated/company.js:65
msgid "Add Manufacturer"
msgstr ""
-#: templates/js/translated/company.js:79 templates/js/translated/company.js:169
+#: templates/js/translated/company.js:78 templates/js/translated/company.js:168
msgid "Add Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:100
+#: templates/js/translated/company.js:99
msgid "Edit Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:157 templates/js/translated/order.js:506
+#: templates/js/translated/company.js:156 templates/js/translated/order.js:506
msgid "Add Supplier"
msgstr ""
-#: templates/js/translated/company.js:185
+#: templates/js/translated/company.js:184
msgid "Add Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:200
+#: templates/js/translated/company.js:199
msgid "Edit Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:248
+#: templates/js/translated/company.js:249
msgid "All selected supplier parts will be deleted"
msgstr ""
-#: templates/js/translated/company.js:263
+#: templates/js/translated/company.js:264
msgid "Delete Supplier Parts"
msgstr ""
-#: templates/js/translated/company.js:342
+#: templates/js/translated/company.js:336
msgid "Add new Company"
msgstr ""
-#: templates/js/translated/company.js:419
+#: templates/js/translated/company.js:413
msgid "Parts Supplied"
msgstr ""
-#: templates/js/translated/company.js:428
+#: templates/js/translated/company.js:422
msgid "Parts Manufactured"
msgstr ""
-#: templates/js/translated/company.js:443
+#: templates/js/translated/company.js:437
msgid "No company information found"
msgstr ""
-#: templates/js/translated/company.js:482
+#: templates/js/translated/company.js:478
msgid "All selected manufacturer parts will be deleted"
msgstr ""
-#: templates/js/translated/company.js:496
+#: templates/js/translated/company.js:492
msgid "Delete Manufacturer Parts"
msgstr ""
-#: templates/js/translated/company.js:535
+#: templates/js/translated/company.js:526
msgid "All selected parameters will be deleted"
msgstr ""
-#: templates/js/translated/company.js:548
+#: templates/js/translated/company.js:539
msgid "Delete Parameters"
msgstr ""
-#: templates/js/translated/company.js:595
+#: templates/js/translated/company.js:580
msgid "No manufacturer parts found"
msgstr ""
-#: templates/js/translated/company.js:615
-#: templates/js/translated/company.js:874 templates/js/translated/part.js:565
-#: templates/js/translated/part.js:650
+#: templates/js/translated/company.js:600
+#: templates/js/translated/company.js:859 templates/js/translated/part.js:609
+#: templates/js/translated/part.js:694
msgid "Template part"
msgstr ""
-#: templates/js/translated/company.js:619
-#: templates/js/translated/company.js:878 templates/js/translated/part.js:569
-#: templates/js/translated/part.js:654
+#: templates/js/translated/company.js:604
+#: templates/js/translated/company.js:863 templates/js/translated/part.js:613
+#: templates/js/translated/part.js:698
msgid "Assembled part"
msgstr ""
-#: templates/js/translated/company.js:747 templates/js/translated/part.js:757
+#: templates/js/translated/company.js:732 templates/js/translated/part.js:801
msgid "No parameters found"
msgstr ""
-#: templates/js/translated/company.js:784 templates/js/translated/part.js:799
+#: templates/js/translated/company.js:769 templates/js/translated/part.js:843
msgid "Edit parameter"
msgstr ""
-#: templates/js/translated/company.js:785 templates/js/translated/part.js:800
+#: templates/js/translated/company.js:770 templates/js/translated/part.js:844
msgid "Delete parameter"
msgstr ""
-#: templates/js/translated/company.js:804 templates/js/translated/part.js:817
+#: templates/js/translated/company.js:789 templates/js/translated/part.js:861
msgid "Edit Parameter"
msgstr ""
-#: templates/js/translated/company.js:815 templates/js/translated/part.js:829
+#: templates/js/translated/company.js:800 templates/js/translated/part.js:873
msgid "Delete Parameter"
msgstr ""
-#: templates/js/translated/company.js:854
+#: templates/js/translated/company.js:839
msgid "No supplier parts found"
msgstr ""
@@ -8448,36 +8441,36 @@ msgstr ""
msgid "Keep this form open"
msgstr ""
-#: templates/js/translated/forms.js:756
+#: templates/js/translated/forms.js:757
msgid "Enter a valid number"
msgstr ""
-#: templates/js/translated/forms.js:1248 templates/modals.html:19
+#: templates/js/translated/forms.js:1249 templates/modals.html:19
#: templates/modals.html:43
msgid "Form errors exist"
msgstr ""
-#: templates/js/translated/forms.js:1681
+#: templates/js/translated/forms.js:1682
msgid "No results found"
msgstr ""
-#: templates/js/translated/forms.js:1896 templates/search.html:29
+#: templates/js/translated/forms.js:1897 templates/search.html:29
msgid "Searching"
msgstr ""
-#: templates/js/translated/forms.js:2149
+#: templates/js/translated/forms.js:2150
msgid "Clear input"
msgstr ""
-#: templates/js/translated/forms.js:2615
+#: templates/js/translated/forms.js:2616
msgid "File Column"
msgstr ""
-#: templates/js/translated/forms.js:2615
+#: templates/js/translated/forms.js:2616
msgid "Field Name"
msgstr ""
-#: templates/js/translated/forms.js:2627
+#: templates/js/translated/forms.js:2628
msgid "Select Columns"
msgstr ""
@@ -8498,7 +8491,7 @@ msgid "Labels sent to printer"
msgstr ""
#: templates/js/translated/label.js:60 templates/js/translated/report.js:118
-#: templates/js/translated/stock.js:1023
+#: templates/js/translated/stock.js:1022
msgid "Select Stock Items"
msgstr ""
@@ -8552,12 +8545,12 @@ msgid "Select Label Template"
msgstr ""
#: templates/js/translated/modals.js:82 templates/js/translated/modals.js:142
-#: templates/js/translated/modals.js:621
+#: templates/js/translated/modals.js:627
msgid "Cancel"
msgstr ""
#: templates/js/translated/modals.js:83 templates/js/translated/modals.js:141
-#: templates/js/translated/modals.js:688 templates/js/translated/modals.js:996
+#: templates/js/translated/modals.js:694 templates/js/translated/modals.js:1002
#: templates/modals.html:28 templates/modals.html:51
msgid "Submit"
msgstr ""
@@ -8566,47 +8559,47 @@ msgstr ""
msgid "Form Title"
msgstr ""
-#: templates/js/translated/modals.js:403
+#: templates/js/translated/modals.js:421
msgid "Waiting for server..."
msgstr ""
-#: templates/js/translated/modals.js:562
+#: templates/js/translated/modals.js:568
msgid "Show Error Information"
msgstr ""
-#: templates/js/translated/modals.js:620
+#: templates/js/translated/modals.js:626
msgid "Accept"
msgstr ""
-#: templates/js/translated/modals.js:677
+#: templates/js/translated/modals.js:683
msgid "Loading Data"
msgstr ""
-#: templates/js/translated/modals.js:948
+#: templates/js/translated/modals.js:954
msgid "Invalid response from server"
msgstr ""
-#: templates/js/translated/modals.js:948
+#: templates/js/translated/modals.js:954
msgid "Form data missing from server response"
msgstr ""
-#: templates/js/translated/modals.js:960
+#: templates/js/translated/modals.js:966
msgid "Error posting form data"
msgstr ""
-#: templates/js/translated/modals.js:1057
+#: templates/js/translated/modals.js:1063
msgid "JSON response missing form data"
msgstr ""
-#: templates/js/translated/modals.js:1072
+#: templates/js/translated/modals.js:1078
msgid "Error 400: Bad Request"
msgstr ""
-#: templates/js/translated/modals.js:1073
+#: templates/js/translated/modals.js:1079
msgid "Server returned error code 400"
msgstr ""
-#: templates/js/translated/modals.js:1096
+#: templates/js/translated/modals.js:1102
msgid "Error requesting form data"
msgstr ""
@@ -8656,11 +8649,11 @@ msgstr ""
msgid "Mark as read"
msgstr ""
-#: templates/js/translated/notification.js:259
+#: templates/js/translated/notification.js:260
msgid "No unread notifications"
msgstr ""
-#: templates/js/translated/notification.js:300 templates/notifications.html:10
+#: templates/js/translated/notification.js:302 templates/notifications.html:10
msgid "Notifications will load here"
msgstr ""
@@ -8804,7 +8797,7 @@ msgstr ""
msgid "Quantity to receive"
msgstr ""
-#: templates/js/translated/order.js:1225 templates/js/translated/stock.js:2080
+#: templates/js/translated/order.js:1225 templates/js/translated/stock.js:2090
msgid "Stock Status"
msgstr ""
@@ -8828,7 +8821,7 @@ msgstr ""
msgid "Receive Purchase Order Items"
msgstr ""
-#: templates/js/translated/order.js:1602 templates/js/translated/part.js:870
+#: templates/js/translated/order.js:1602 templates/js/translated/part.js:914
msgid "No purchase orders found"
msgstr ""
@@ -8863,7 +8856,7 @@ msgstr ""
#: templates/js/translated/order.js:1937 templates/js/translated/order.js:2139
#: templates/js/translated/order.js:3467 templates/js/translated/order.js:3978
-#: templates/js/translated/part.js:1948 templates/js/translated/part.js:2301
+#: templates/js/translated/part.js:2044 templates/js/translated/part.js:2397
msgid "Unit Price"
msgstr ""
@@ -8873,11 +8866,11 @@ msgid "Total Price"
msgstr ""
#: templates/js/translated/order.js:1993 templates/js/translated/order.js:3525
-#: templates/js/translated/part.js:979
+#: templates/js/translated/part.js:1023
msgid "This line item is overdue"
msgstr ""
-#: templates/js/translated/order.js:2052 templates/js/translated/part.js:1025
+#: templates/js/translated/order.js:2052 templates/js/translated/part.js:1069
msgid "Receive line item"
msgstr ""
@@ -8998,7 +8991,7 @@ msgid "Delete Stock Allocation"
msgstr ""
#: templates/js/translated/order.js:3243 templates/js/translated/order.js:3332
-#: templates/js/translated/stock.js:1535
+#: templates/js/translated/stock.js:1545
msgid "Shipped to customer"
msgstr ""
@@ -9138,165 +9131,209 @@ msgstr ""
msgid "Create Part Variant"
msgstr ""
+#: templates/js/translated/part.js:405
+msgid "Active Part"
+msgstr ""
+
+#: templates/js/translated/part.js:406
+msgid "Part cannot be deleted as it is currently active"
+msgstr ""
+
+#: templates/js/translated/part.js:420
+msgid "Deleting this part cannot be reversed"
+msgstr ""
+
+#: templates/js/translated/part.js:422
+msgid "Any stock items for this part will be deleted"
+msgstr ""
+
#: templates/js/translated/part.js:423
+msgid "This part will be removed from any Bills of Material"
+msgstr ""
+
+#: templates/js/translated/part.js:424
+msgid "All manufacturer and supplier information for this part will be deleted"
+msgstr ""
+
+#: templates/js/translated/part.js:431
+msgid "Delete Part"
+msgstr ""
+
+#: templates/js/translated/part.js:467
msgid "You are subscribed to notifications for this item"
msgstr ""
-#: templates/js/translated/part.js:425
+#: templates/js/translated/part.js:469
msgid "You have subscribed to notifications for this item"
msgstr ""
-#: templates/js/translated/part.js:430
+#: templates/js/translated/part.js:474
msgid "Subscribe to notifications for this item"
msgstr ""
-#: templates/js/translated/part.js:432
+#: templates/js/translated/part.js:476
msgid "You have unsubscribed to notifications for this item"
msgstr ""
-#: templates/js/translated/part.js:449
+#: templates/js/translated/part.js:493
msgid "Validating the BOM will mark each line item as valid"
msgstr ""
-#: templates/js/translated/part.js:459
+#: templates/js/translated/part.js:503
msgid "Validate Bill of Materials"
msgstr ""
-#: templates/js/translated/part.js:462
+#: templates/js/translated/part.js:506
msgid "Validated Bill of Materials"
msgstr ""
-#: templates/js/translated/part.js:487
+#: templates/js/translated/part.js:531
msgid "Copy Bill of Materials"
msgstr ""
-#: templates/js/translated/part.js:513 templates/js/translated/part.js:1397
+#: templates/js/translated/part.js:557 templates/js/translated/part.js:1441
#: templates/js/translated/table_filters.js:452
msgid "Low stock"
msgstr ""
-#: templates/js/translated/part.js:523 templates/js/translated/part.js:1409
+#: templates/js/translated/part.js:567 templates/js/translated/part.js:1453
msgid "No stock available"
msgstr ""
-#: templates/js/translated/part.js:557 templates/js/translated/part.js:642
+#: templates/js/translated/part.js:601 templates/js/translated/part.js:686
msgid "Trackable part"
msgstr ""
-#: templates/js/translated/part.js:561 templates/js/translated/part.js:646
+#: templates/js/translated/part.js:605 templates/js/translated/part.js:690
msgid "Virtual part"
msgstr ""
-#: templates/js/translated/part.js:573
+#: templates/js/translated/part.js:617
msgid "Subscribed part"
msgstr ""
-#: templates/js/translated/part.js:577
+#: templates/js/translated/part.js:621
msgid "Salable part"
msgstr ""
-#: templates/js/translated/part.js:705
+#: templates/js/translated/part.js:749
msgid "No variants found"
msgstr ""
-#: templates/js/translated/part.js:1095
+#: templates/js/translated/part.js:1139
msgid "Delete part relationship"
msgstr ""
-#: templates/js/translated/part.js:1119
+#: templates/js/translated/part.js:1163
msgid "Delete Part Relationship"
msgstr ""
-#: templates/js/translated/part.js:1184 templates/js/translated/part.js:1480
+#: templates/js/translated/part.js:1228 templates/js/translated/part.js:1524
msgid "No parts found"
msgstr ""
-#: templates/js/translated/part.js:1223
+#: templates/js/translated/part.js:1267
msgid "Not available"
msgstr ""
-#: templates/js/translated/part.js:1374
+#: templates/js/translated/part.js:1418
msgid "No category"
msgstr ""
-#: templates/js/translated/part.js:1504 templates/js/translated/part.js:1664
-#: templates/js/translated/stock.js:2238
+#: templates/js/translated/part.js:1548 templates/js/translated/part.js:1760
+#: templates/js/translated/stock.js:2248
msgid "Display as list"
msgstr ""
-#: templates/js/translated/part.js:1520
+#: templates/js/translated/part.js:1564
msgid "Display as grid"
msgstr ""
-#: templates/js/translated/part.js:1683 templates/js/translated/stock.js:2257
+#: templates/js/translated/part.js:1630
+msgid "Set the part category for the selected parts"
+msgstr ""
+
+#: templates/js/translated/part.js:1635
+msgid "Set Part Category"
+msgstr ""
+
+#: templates/js/translated/part.js:1640
+msgid "Select Part Category"
+msgstr ""
+
+#: templates/js/translated/part.js:1653
+msgid "Category is required"
+msgstr ""
+
+#: templates/js/translated/part.js:1779 templates/js/translated/stock.js:2267
msgid "Display as tree"
msgstr ""
-#: templates/js/translated/part.js:1747
+#: templates/js/translated/part.js:1843
msgid "Subscribed category"
msgstr ""
-#: templates/js/translated/part.js:1761 templates/js/translated/stock.js:2301
+#: templates/js/translated/part.js:1857 templates/js/translated/stock.js:2311
msgid "Path"
msgstr ""
-#: templates/js/translated/part.js:1805
+#: templates/js/translated/part.js:1901
msgid "No test templates matching query"
msgstr ""
-#: templates/js/translated/part.js:1856 templates/js/translated/stock.js:1233
+#: templates/js/translated/part.js:1952 templates/js/translated/stock.js:1243
msgid "Edit test result"
msgstr ""
-#: templates/js/translated/part.js:1857 templates/js/translated/stock.js:1234
-#: templates/js/translated/stock.js:1493
+#: templates/js/translated/part.js:1953 templates/js/translated/stock.js:1244
+#: templates/js/translated/stock.js:1503
msgid "Delete test result"
msgstr ""
-#: templates/js/translated/part.js:1863
+#: templates/js/translated/part.js:1959
msgid "This test is defined for a parent part"
msgstr ""
-#: templates/js/translated/part.js:1885
+#: templates/js/translated/part.js:1981
msgid "Edit Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:1899
+#: templates/js/translated/part.js:1995
msgid "Delete Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:1924
+#: templates/js/translated/part.js:2020
#, python-brace-format
msgid "No ${human_name} information found"
msgstr ""
-#: templates/js/translated/part.js:1981
+#: templates/js/translated/part.js:2077
#, python-brace-format
msgid "Edit ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:1982
+#: templates/js/translated/part.js:2078
#, python-brace-format
msgid "Delete ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:2096
+#: templates/js/translated/part.js:2192
msgid "Current Stock"
msgstr ""
-#: templates/js/translated/part.js:2129
+#: templates/js/translated/part.js:2225
msgid "No scheduling information available for this part"
msgstr ""
-#: templates/js/translated/part.js:2155
+#: templates/js/translated/part.js:2251
msgid "Scheduled Stock Quantities"
msgstr ""
-#: templates/js/translated/part.js:2225
+#: templates/js/translated/part.js:2321
msgid "Single Price"
msgstr ""
-#: templates/js/translated/part.js:2244
+#: templates/js/translated/part.js:2340
msgid "Single Price Difference"
msgstr ""
@@ -9378,360 +9415,360 @@ msgstr ""
msgid "Remove results"
msgstr ""
-#: templates/js/translated/stock.js:73
+#: templates/js/translated/stock.js:72
msgid "Serialize Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:101
+#: templates/js/translated/stock.js:100
msgid "Confirm Stock Serialization"
msgstr ""
-#: templates/js/translated/stock.js:110
+#: templates/js/translated/stock.js:109
msgid "Parent stock location"
msgstr ""
-#: templates/js/translated/stock.js:139
+#: templates/js/translated/stock.js:138
msgid "Edit Stock Location"
msgstr ""
-#: templates/js/translated/stock.js:154
+#: templates/js/translated/stock.js:153
msgid "New Stock Location"
msgstr ""
-#: templates/js/translated/stock.js:194
+#: templates/js/translated/stock.js:193
msgid "This part cannot be serialized"
msgstr ""
-#: templates/js/translated/stock.js:233
+#: templates/js/translated/stock.js:232
msgid "Enter initial quantity for this stock item"
msgstr ""
-#: templates/js/translated/stock.js:239
+#: templates/js/translated/stock.js:238
msgid "Enter serial numbers for new stock (or leave blank)"
msgstr ""
-#: templates/js/translated/stock.js:304
+#: templates/js/translated/stock.js:303
msgid "Stock item duplicated"
msgstr ""
-#: templates/js/translated/stock.js:324
+#: templates/js/translated/stock.js:323
msgid "Duplicate Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:344
+#: templates/js/translated/stock.js:343
msgid "Edit Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:394
+#: templates/js/translated/stock.js:393
msgid "Created new stock item"
msgstr ""
-#: templates/js/translated/stock.js:407
+#: templates/js/translated/stock.js:406
msgid "Created multiple stock items"
msgstr ""
-#: templates/js/translated/stock.js:432
+#: templates/js/translated/stock.js:431
msgid "Find Serial Number"
msgstr ""
-#: templates/js/translated/stock.js:436 templates/js/translated/stock.js:437
+#: templates/js/translated/stock.js:435 templates/js/translated/stock.js:436
msgid "Enter serial number"
msgstr ""
-#: templates/js/translated/stock.js:453
+#: templates/js/translated/stock.js:452
msgid "Enter a serial number"
msgstr ""
-#: templates/js/translated/stock.js:473
+#: templates/js/translated/stock.js:472
msgid "No matching serial number"
msgstr ""
-#: templates/js/translated/stock.js:482
+#: templates/js/translated/stock.js:481
msgid "More than one matching result found"
msgstr ""
-#: templates/js/translated/stock.js:605
+#: templates/js/translated/stock.js:604
msgid "Confirm stock assignment"
msgstr ""
-#: templates/js/translated/stock.js:606
+#: templates/js/translated/stock.js:605
msgid "Assign Stock to Customer"
msgstr ""
-#: templates/js/translated/stock.js:683
+#: templates/js/translated/stock.js:682
msgid "Warning: Merge operation cannot be reversed"
msgstr ""
-#: templates/js/translated/stock.js:684
+#: templates/js/translated/stock.js:683
msgid "Some information will be lost when merging stock items"
msgstr ""
-#: templates/js/translated/stock.js:686
+#: templates/js/translated/stock.js:685
msgid "Stock transaction history will be deleted for merged items"
msgstr ""
-#: templates/js/translated/stock.js:687
+#: templates/js/translated/stock.js:686
msgid "Supplier part information will be deleted for merged items"
msgstr ""
-#: templates/js/translated/stock.js:773
+#: templates/js/translated/stock.js:772
msgid "Confirm stock item merge"
msgstr ""
-#: templates/js/translated/stock.js:774
+#: templates/js/translated/stock.js:773
msgid "Merge Stock Items"
msgstr ""
-#: templates/js/translated/stock.js:869
+#: templates/js/translated/stock.js:868
msgid "Transfer Stock"
msgstr ""
-#: templates/js/translated/stock.js:870
+#: templates/js/translated/stock.js:869
msgid "Move"
msgstr ""
-#: templates/js/translated/stock.js:876
+#: templates/js/translated/stock.js:875
msgid "Count Stock"
msgstr ""
-#: templates/js/translated/stock.js:877
+#: templates/js/translated/stock.js:876
msgid "Count"
msgstr ""
-#: templates/js/translated/stock.js:881
+#: templates/js/translated/stock.js:880
msgid "Remove Stock"
msgstr ""
-#: templates/js/translated/stock.js:882
+#: templates/js/translated/stock.js:881
msgid "Take"
msgstr ""
-#: templates/js/translated/stock.js:886
+#: templates/js/translated/stock.js:885
msgid "Add Stock"
msgstr ""
-#: templates/js/translated/stock.js:887 users/models.py:215
+#: templates/js/translated/stock.js:886 users/models.py:215
msgid "Add"
msgstr ""
-#: templates/js/translated/stock.js:891
+#: templates/js/translated/stock.js:890
msgid "Delete Stock"
msgstr ""
-#: templates/js/translated/stock.js:984
+#: templates/js/translated/stock.js:983
msgid "Quantity cannot be adjusted for serialized stock"
msgstr ""
-#: templates/js/translated/stock.js:984
+#: templates/js/translated/stock.js:983
msgid "Specify stock quantity"
msgstr ""
-#: templates/js/translated/stock.js:1024
+#: templates/js/translated/stock.js:1023
msgid "You must select at least one available stock item"
msgstr ""
-#: templates/js/translated/stock.js:1047
+#: templates/js/translated/stock.js:1046
msgid "Confirm stock adjustment"
msgstr ""
-#: templates/js/translated/stock.js:1172
+#: templates/js/translated/stock.js:1182
msgid "PASS"
msgstr ""
-#: templates/js/translated/stock.js:1174
+#: templates/js/translated/stock.js:1184
msgid "FAIL"
msgstr ""
-#: templates/js/translated/stock.js:1179
+#: templates/js/translated/stock.js:1189
msgid "NO RESULT"
msgstr ""
-#: templates/js/translated/stock.js:1226
+#: templates/js/translated/stock.js:1236
msgid "Pass test"
msgstr ""
-#: templates/js/translated/stock.js:1229
+#: templates/js/translated/stock.js:1239
msgid "Add test result"
msgstr ""
-#: templates/js/translated/stock.js:1255
+#: templates/js/translated/stock.js:1265
msgid "No test results found"
msgstr ""
-#: templates/js/translated/stock.js:1311
+#: templates/js/translated/stock.js:1321
msgid "Test Date"
msgstr ""
-#: templates/js/translated/stock.js:1476
+#: templates/js/translated/stock.js:1486
msgid "Edit Test Result"
msgstr ""
-#: templates/js/translated/stock.js:1498
+#: templates/js/translated/stock.js:1508
msgid "Delete Test Result"
msgstr ""
-#: templates/js/translated/stock.js:1527
+#: templates/js/translated/stock.js:1537
msgid "In production"
msgstr ""
-#: templates/js/translated/stock.js:1531
+#: templates/js/translated/stock.js:1541
msgid "Installed in Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:1539
+#: templates/js/translated/stock.js:1549
msgid "Assigned to Sales Order"
msgstr ""
-#: templates/js/translated/stock.js:1545
+#: templates/js/translated/stock.js:1555
msgid "No stock location set"
msgstr ""
-#: templates/js/translated/stock.js:1712
+#: templates/js/translated/stock.js:1722
msgid "Stock item is in production"
msgstr ""
-#: templates/js/translated/stock.js:1717
+#: templates/js/translated/stock.js:1727
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:1720
+#: templates/js/translated/stock.js:1730
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:1723
+#: templates/js/translated/stock.js:1733
msgid "Serialized stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:1725
+#: templates/js/translated/stock.js:1735
msgid "Stock item has been fully allocated"
msgstr ""
-#: templates/js/translated/stock.js:1727
+#: templates/js/translated/stock.js:1737
msgid "Stock item has been partially allocated"
msgstr ""
-#: templates/js/translated/stock.js:1730
+#: templates/js/translated/stock.js:1740
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:1734
+#: templates/js/translated/stock.js:1744
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:1736
+#: templates/js/translated/stock.js:1746
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:1743
+#: templates/js/translated/stock.js:1753
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:1745
+#: templates/js/translated/stock.js:1755
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:1747
+#: templates/js/translated/stock.js:1757
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:1751
+#: templates/js/translated/stock.js:1761
#: templates/js/translated/table_filters.js:188
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:1802
+#: templates/js/translated/stock.js:1812
msgid "Stocktake"
msgstr ""
-#: templates/js/translated/stock.js:1884
+#: templates/js/translated/stock.js:1894
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:1922
+#: templates/js/translated/stock.js:1932
msgid "No stock items matching query"
msgstr ""
-#: templates/js/translated/stock.js:2095
+#: templates/js/translated/stock.js:2105
msgid "Set Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:2109
+#: templates/js/translated/stock.js:2119
msgid "Select Status Code"
msgstr ""
-#: templates/js/translated/stock.js:2110
+#: templates/js/translated/stock.js:2120
msgid "Status code must be selected"
msgstr ""
-#: templates/js/translated/stock.js:2365
+#: templates/js/translated/stock.js:2375
msgid "Details"
msgstr ""
-#: templates/js/translated/stock.js:2381
+#: templates/js/translated/stock.js:2391
msgid "Part information unavailable"
msgstr ""
-#: templates/js/translated/stock.js:2403
+#: templates/js/translated/stock.js:2413
msgid "Location no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2422
+#: templates/js/translated/stock.js:2432
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2441
+#: templates/js/translated/stock.js:2451
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2459
+#: templates/js/translated/stock.js:2469
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2482
+#: templates/js/translated/stock.js:2492
msgid "Added"
msgstr ""
-#: templates/js/translated/stock.js:2490
+#: templates/js/translated/stock.js:2500
msgid "Removed"
msgstr ""
-#: templates/js/translated/stock.js:2566
+#: templates/js/translated/stock.js:2576
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:2617 templates/js/translated/stock.js:2653
+#: templates/js/translated/stock.js:2627 templates/js/translated/stock.js:2663
msgid "Uninstall Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:2666
+#: templates/js/translated/stock.js:2676
msgid "Select stock item to uninstall"
msgstr ""
-#: templates/js/translated/stock.js:2687
+#: templates/js/translated/stock.js:2697
msgid "Install another stock item into this item"
msgstr ""
-#: templates/js/translated/stock.js:2688
+#: templates/js/translated/stock.js:2698
msgid "Stock items can only be installed if they meet the following criteria"
msgstr ""
-#: templates/js/translated/stock.js:2690
+#: templates/js/translated/stock.js:2700
msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:2691
+#: templates/js/translated/stock.js:2701
msgid "The Stock Item is currently available in stock"
msgstr ""
-#: templates/js/translated/stock.js:2692
+#: templates/js/translated/stock.js:2702
msgid "The Stock Item is not already installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:2693
+#: templates/js/translated/stock.js:2703
msgid "The Stock Item is tracked by either a batch code or serial number"
msgstr ""
-#: templates/js/translated/stock.js:2706
+#: templates/js/translated/stock.js:2716
msgid "Select part to install"
msgstr ""
diff --git a/InvenTree/locale/en/LC_MESSAGES/django.po b/InvenTree/locale/en/LC_MESSAGES/django.po
index b17d3d6faf..496dd91aef 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: 2022-06-03 10:21+0000\n"
+"POT-Creation-Date: 2022-06-06 11:28+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
@@ -30,48 +30,39 @@ msgstr ""
msgid "Enter date"
msgstr ""
-#: InvenTree/forms.py:117 templates/account/email_confirm.html:20
-#: templates/js/translated/forms.js:630
-msgid "Confirm"
-msgstr ""
-
-#: InvenTree/forms.py:134
+#: InvenTree/forms.py:117
msgid "Confirm delete"
msgstr ""
-#: InvenTree/forms.py:135
+#: InvenTree/forms.py:118
msgid "Confirm item deletion"
msgstr ""
-#: InvenTree/forms.py:167
+#: InvenTree/forms.py:150
msgid "Enter password"
msgstr ""
-#: InvenTree/forms.py:168
+#: InvenTree/forms.py:151
msgid "Enter new password"
msgstr ""
-#: InvenTree/forms.py:175
+#: InvenTree/forms.py:158
msgid "Confirm password"
msgstr ""
-#: InvenTree/forms.py:176
+#: InvenTree/forms.py:159
msgid "Confirm new password"
msgstr ""
-#: InvenTree/forms.py:213
-msgid "Select Category"
-msgstr ""
-
-#: InvenTree/forms.py:234
+#: InvenTree/forms.py:184
msgid "Email (again)"
msgstr ""
-#: InvenTree/forms.py:238
+#: InvenTree/forms.py:188
msgid "Email address confirmation"
msgstr ""
-#: InvenTree/forms.py:259
+#: InvenTree/forms.py:209
msgid "You must type the same email each time."
msgstr ""
@@ -80,7 +71,7 @@ msgstr ""
msgid "Duplicate serial: {sn}"
msgstr ""
-#: InvenTree/helpers.py:409 order/models.py:365 order/models.py:517
+#: InvenTree/helpers.py:409 order/models.py:369 order/models.py:521
msgid "Invalid quantity provided"
msgstr ""
@@ -117,114 +108,113 @@ msgstr ""
msgid "Number of unique serial numbers ({s}) must match quantity ({q})"
msgstr ""
-#: InvenTree/models.py:174
+#: InvenTree/models.py:178
msgid "Missing file"
msgstr ""
-#: InvenTree/models.py:175
+#: InvenTree/models.py:179
msgid "Missing external link"
msgstr ""
-#: InvenTree/models.py:187 stock/models.py:2087
+#: InvenTree/models.py:191 stock/models.py:2091
#: templates/js/translated/attachment.js:101
#: templates/js/translated/attachment.js:198
msgid "Attachment"
msgstr ""
-#: InvenTree/models.py:188
+#: InvenTree/models.py:192
msgid "Select file to attach"
msgstr ""
-#: InvenTree/models.py:194 company/models.py:123 company/models.py:272
-#: company/models.py:506 order/models.py:135 order/models.py:1235
+#: InvenTree/models.py:198 company/models.py:123 company/models.py:272
+#: company/models.py:506 order/models.py:135 order/models.py:1239
#: part/models.py:795
#: report/templates/report/inventree_build_order_base.html:165
#: templates/js/translated/company.js:655
#: templates/js/translated/company.js:946 templates/js/translated/order.js:2676
-#: templates/js/translated/part.js:1441
+#: templates/js/translated/part.js:1485
msgid "Link"
msgstr ""
-#: InvenTree/models.py:195 build/models.py:320 part/models.py:796
+#: InvenTree/models.py:199 build/models.py:320 part/models.py:796
#: stock/models.py:642
msgid "Link to external URL"
msgstr ""
-#: InvenTree/models.py:198 templates/js/translated/attachment.js:102
+#: InvenTree/models.py:202 templates/js/translated/attachment.js:102
#: templates/js/translated/attachment.js:242
msgid "Comment"
msgstr ""
-#: InvenTree/models.py:198
+#: InvenTree/models.py:202
msgid "File comment"
msgstr ""
-#: InvenTree/models.py:204 InvenTree/models.py:205 common/models.py:1499
-#: common/models.py:1500 common/models.py:1728 common/models.py:1729
-#: common/models.py:1991 common/models.py:1992 part/models.py:2153
-#: part/models.py:2173 plugin/models.py:238 plugin/models.py:239
+#: InvenTree/models.py:208 InvenTree/models.py:209 common/models.py:1506
+#: common/models.py:1507 common/models.py:1735 common/models.py:1736
+#: common/models.py:1998 common/models.py:1999 part/models.py:2141
+#: part/models.py:2161 plugin/models.py:238 plugin/models.py:239
#: report/templates/report/inventree_test_report_base.html:96
#: templates/js/translated/stock.js:2513
msgid "User"
msgstr ""
-#: InvenTree/models.py:208
+#: InvenTree/models.py:212
msgid "upload date"
msgstr ""
-#: InvenTree/models.py:230
+#: InvenTree/models.py:234
msgid "Filename must not be empty"
msgstr ""
-#: InvenTree/models.py:253
+#: InvenTree/models.py:257
msgid "Invalid attachment directory"
msgstr ""
-#: InvenTree/models.py:263
+#: InvenTree/models.py:267
#, python-brace-format
msgid "Filename contains illegal character '{c}'"
msgstr ""
-#: InvenTree/models.py:266
+#: InvenTree/models.py:270
msgid "Filename missing extension"
msgstr ""
-#: InvenTree/models.py:273
+#: InvenTree/models.py:277
msgid "Attachment with this filename already exists"
msgstr ""
-#: InvenTree/models.py:280
+#: InvenTree/models.py:284
msgid "Error renaming file"
msgstr ""
-#: InvenTree/models.py:314
+#: InvenTree/models.py:318
msgid "Invalid choice"
msgstr ""
-#: InvenTree/models.py:333 InvenTree/models.py:334 common/models.py:1714
+#: InvenTree/models.py:337 InvenTree/models.py:338 common/models.py:1721
#: company/models.py:354 label/models.py:101 part/models.py:739
-#: part/models.py:2331 plugin/models.py:93 report/models.py:151
+#: part/models.py:2319 plugin/models.py:93 report/models.py:151
#: templates/InvenTree/notifications/notifications.html:84
#: templates/InvenTree/settings/mixins/urls.html:13
#: templates/InvenTree/settings/plugin.html:49
#: templates/InvenTree/settings/plugin.html:132
#: templates/InvenTree/settings/plugin_settings.html:23
-#: templates/InvenTree/settings/settings.html:327
+#: templates/InvenTree/settings/settings.html:346
#: templates/js/translated/company.js:539
-#: templates/js/translated/company.js:757 templates/js/translated/part.js:615
-#: templates/js/translated/part.js:767 templates/js/translated/part.js:1736
+#: templates/js/translated/company.js:757 templates/js/translated/part.js:659
+#: templates/js/translated/part.js:811 templates/js/translated/part.js:1832
#: templates/js/translated/stock.js:2283
msgid "Name"
msgstr ""
-#: InvenTree/models.py:340 build/models.py:197
+#: InvenTree/models.py:344 build/models.py:197
#: build/templates/build/detail.html:24 company/models.py:278
#: company/models.py:512 company/templates/company/company_base.html:71
#: company/templates/company/manufacturer_part.html:75
#: company/templates/company/supplier_part.html:73 label/models.py:108
#: order/models.py:133 part/models.py:762 part/templates/part/category.html:74
-#: part/templates/part/part_base.html:167
-#: part/templates/part/set_category.html:14 report/models.py:164
+#: part/templates/part/part_base.html:167 report/models.py:164
#: report/models.py:509 report/models.py:550
#: report/templates/report/inventree_build_order_base.html:118
#: stock/templates/stock/location.html:103
@@ -234,71 +224,79 @@ msgstr ""
#: templates/js/translated/company.js:666
#: templates/js/translated/company.js:957 templates/js/translated/order.js:1656
#: templates/js/translated/order.js:1888 templates/js/translated/order.js:2476
-#: templates/js/translated/part.js:674 templates/js/translated/part.js:1082
-#: templates/js/translated/part.js:1355 templates/js/translated/part.js:1755
-#: templates/js/translated/part.js:1824 templates/js/translated/stock.js:1676
+#: templates/js/translated/part.js:718 templates/js/translated/part.js:1126
+#: templates/js/translated/part.js:1399 templates/js/translated/part.js:1851
+#: templates/js/translated/part.js:1920 templates/js/translated/stock.js:1676
#: templates/js/translated/stock.js:2295 templates/js/translated/stock.js:2350
msgid "Description"
msgstr ""
-#: InvenTree/models.py:341
+#: InvenTree/models.py:345
msgid "Description (optional)"
msgstr ""
-#: InvenTree/models.py:349
+#: InvenTree/models.py:353
msgid "parent"
msgstr ""
-#: InvenTree/serializers.py:52 part/models.py:2650
+#: InvenTree/models.py:466
+msgid "Server Error"
+msgstr ""
+
+#: InvenTree/models.py:467
+msgid "An error has been logged by the server."
+msgstr ""
+
+#: InvenTree/serializers.py:52 part/models.py:2640
msgid "Must be a valid number"
msgstr ""
-#: InvenTree/serializers.py:271
+#: InvenTree/serializers.py:263
msgid "Filename"
msgstr ""
-#: InvenTree/serializers.py:306
+#: InvenTree/serializers.py:298
msgid "Invalid value"
msgstr ""
-#: InvenTree/serializers.py:328
+#: InvenTree/serializers.py:320
msgid "Data File"
msgstr ""
-#: InvenTree/serializers.py:329
+#: InvenTree/serializers.py:321
msgid "Select data file for upload"
msgstr ""
-#: InvenTree/serializers.py:350
+#: InvenTree/serializers.py:342
msgid "Unsupported file type"
msgstr ""
-#: InvenTree/serializers.py:356
+#: InvenTree/serializers.py:348
msgid "File is too large"
msgstr ""
-#: InvenTree/serializers.py:377
+#: InvenTree/serializers.py:369
msgid "No columns found in file"
msgstr ""
-#: InvenTree/serializers.py:380
+#: InvenTree/serializers.py:372
msgid "No data rows found in file"
msgstr ""
-#: InvenTree/serializers.py:503
+#: InvenTree/serializers.py:495
msgid "No data rows provided"
msgstr ""
-#: InvenTree/serializers.py:506
+#: InvenTree/serializers.py:498
msgid "No data columns supplied"
msgstr ""
-#: InvenTree/serializers.py:583
+#: InvenTree/serializers.py:575
#, python-brace-format
msgid "Missing required column: '{name}'"
msgstr ""
-#: InvenTree/serializers.py:592
+#: InvenTree/serializers.py:584
#, python-brace-format
msgid "Duplicate column: '{col}'"
msgstr ""
@@ -441,7 +439,7 @@ msgstr ""
msgid "Returned"
msgstr ""
-#: InvenTree/status_codes.py:141 order/models.py:1114
+#: InvenTree/status_codes.py:141 order/models.py:1118
#: templates/js/translated/order.js:3264 templates/js/translated/order.js:3607
msgid "Shipped"
msgstr ""
@@ -598,27 +596,27 @@ msgstr ""
msgid "Invalid value for overage"
msgstr ""
-#: InvenTree/views.py:522
+#: InvenTree/views.py:521
msgid "Delete Item"
msgstr ""
-#: InvenTree/views.py:571
+#: InvenTree/views.py:570
msgid "Check box to confirm item deletion"
msgstr ""
-#: InvenTree/views.py:586 templates/InvenTree/settings/user.html:22
+#: InvenTree/views.py:585 templates/InvenTree/settings/user.html:22
msgid "Edit User Information"
msgstr ""
-#: InvenTree/views.py:598 templates/InvenTree/settings/user.html:19
+#: InvenTree/views.py:597 templates/InvenTree/settings/user.html:19
msgid "Set Password"
msgstr ""
-#: InvenTree/views.py:618
+#: InvenTree/views.py:617
msgid "Password fields must match"
msgstr ""
-#: InvenTree/views.py:842 templates/navbar.html:152
+#: InvenTree/views.py:807 templates/navbar.html:152
msgid "System Information"
msgstr ""
@@ -629,6 +627,7 @@ msgstr ""
#: build/models.py:131 build/templates/build/build_base.html:9
#: build/templates/build/build_base.html:27
#: report/templates/report/inventree_build_order_base.html:106
+#: templates/email/overdue_build_order.html:15
#: templates/js/translated/build.js:727
msgid "Build Order"
msgstr ""
@@ -647,8 +646,8 @@ msgstr ""
msgid "Build Order Reference"
msgstr ""
-#: build/models.py:189 order/models.py:288 order/models.py:638
-#: order/models.py:916 part/models.py:2568
+#: build/models.py:189 order/models.py:292 order/models.py:642
+#: order/models.py:920 part/models.py:2558
#: part/templates/part/upload_bom.html:54
#: report/templates/report/inventree_po_report.html:91
#: report/templates/report/inventree_so_report.html:92
@@ -674,13 +673,12 @@ msgstr ""
#: build/models.py:215 build/templates/build/build_base.html:77
#: build/templates/build/detail.html:29 company/models.py:647
-#: order/models.py:1012 order/models.py:1103 part/models.py:336
-#: part/models.py:2099 part/models.py:2114 part/models.py:2133
-#: part/models.py:2151 part/models.py:2250 part/models.py:2370
-#: part/models.py:2458 part/models.py:2543 part/models.py:2819
-#: part/serializers.py:793 part/templates/part/part_app_base.html:8
+#: order/models.py:1016 order/models.py:1107 part/models.py:336
+#: part/models.py:2087 part/models.py:2102 part/models.py:2121
+#: part/models.py:2139 part/models.py:2238 part/models.py:2358
+#: part/models.py:2448 part/models.py:2533 part/models.py:2809
+#: part/serializers.py:795 part/templates/part/part_app_base.html:8
#: part/templates/part/part_pricing.html:12
-#: part/templates/part/set_category.html:13
#: part/templates/part/upload_bom.html:52
#: report/templates/report/inventree_build_order_base.html:110
#: report/templates/report/inventree_po_report.html:89
@@ -688,6 +686,7 @@ msgstr ""
#: templates/InvenTree/search.html:80
#: templates/email/build_order_required_stock.html:17
#: templates/email/low_stock_notification.html:16
+#: templates/email/overdue_build_order.html:16
#: templates/js/translated/barcode.js:435 templates/js/translated/bom.js:552
#: templates/js/translated/bom.js:687 templates/js/translated/bom.js:805
#: templates/js/translated/build.js:1153 templates/js/translated/build.js:1647
@@ -699,8 +698,8 @@ msgstr ""
#: templates/js/translated/order.js:883 templates/js/translated/order.js:1315
#: templates/js/translated/order.js:1873 templates/js/translated/order.js:2819
#: templates/js/translated/order.js:3217 templates/js/translated/order.js:3432
-#: templates/js/translated/part.js:1067 templates/js/translated/part.js:1137
-#: templates/js/translated/part.js:1333 templates/js/translated/stock.js:531
+#: templates/js/translated/part.js:1111 templates/js/translated/part.js:1181
+#: templates/js/translated/part.js:1377 templates/js/translated/stock.js:531
#: templates/js/translated/stock.js:696 templates/js/translated/stock.js:903
#: templates/js/translated/stock.js:1633 templates/js/translated/stock.js:2376
#: templates/js/translated/stock.js:2571 templates/js/translated/stock.js:2705
@@ -774,7 +773,7 @@ msgstr ""
msgid "Creation Date"
msgstr ""
-#: build/models.py:286 order/models.py:660
+#: build/models.py:286 order/models.py:664
msgid "Target completion date"
msgstr ""
@@ -782,7 +781,7 @@ msgstr ""
msgid "Target date for build completion. Build will be overdue after this date."
msgstr ""
-#: build/models.py:290 order/models.py:331
+#: build/models.py:290 order/models.py:335
#: templates/js/translated/build.js:2558
msgid "Completion Date"
msgstr ""
@@ -823,14 +822,14 @@ msgstr ""
#: build/models.py:324 build/serializers.py:374
#: build/templates/build/sidebar.html:21 company/models.py:134
#: company/models.py:519 company/templates/company/sidebar.html:25
-#: order/models.py:155 order/models.py:918 order/models.py:1213
+#: order/models.py:155 order/models.py:922 order/models.py:1217
#: order/templates/order/po_sidebar.html:11
#: order/templates/order/so_sidebar.html:17 part/models.py:921
#: part/templates/part/part_sidebar.html:59
#: report/templates/report/inventree_build_order_base.html:173
-#: stock/models.py:713 stock/models.py:1985 stock/models.py:2093
+#: stock/models.py:713 stock/models.py:1989 stock/models.py:2097
#: stock/serializers.py:315 stock/serializers.py:444 stock/serializers.py:486
-#: stock/serializers.py:772 stock/serializers.py:871 stock/serializers.py:1003
+#: stock/serializers.py:759 stock/serializers.py:858 stock/serializers.py:990
#: stock/templates/stock/stock_sidebar.html:25
#: templates/js/translated/barcode.js:100 templates/js/translated/bom.js:1044
#: templates/js/translated/company.js:962 templates/js/translated/order.js:2040
@@ -869,7 +868,7 @@ msgstr ""
msgid "Stock item is over-allocated"
msgstr ""
-#: build/models.py:1133 order/models.py:1372
+#: build/models.py:1133 order/models.py:1376
msgid "Allocation quantity must be greater than zero"
msgstr ""
@@ -891,9 +890,9 @@ msgstr ""
msgid "Build to allocate parts"
msgstr ""
-#: build/models.py:1282 build/serializers.py:603 order/serializers.py:994
-#: order/serializers.py:1015 stock/serializers.py:382 stock/serializers.py:703
-#: stock/serializers.py:829 stock/templates/stock/item_base.html:10
+#: build/models.py:1282 build/serializers.py:603 order/serializers.py:996
+#: order/serializers.py:1017 stock/serializers.py:382 stock/serializers.py:690
+#: stock/serializers.py:816 stock/templates/stock/item_base.html:10
#: stock/templates/stock/item_base.html:23
#: stock/templates/stock/item_base.html:199
#: templates/js/translated/build.js:738 templates/js/translated/build.js:743
@@ -912,11 +911,11 @@ msgstr ""
#: build/models.py:1295 build/serializers.py:183
#: build/templates/build/build_base.html:82
-#: build/templates/build/detail.html:34 common/models.py:1536
+#: build/templates/build/detail.html:34 common/models.py:1543
#: company/forms.py:36 company/templates/company/supplier_part.html:258
-#: order/models.py:909 order/models.py:1412 order/serializers.py:1134
-#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:91
-#: part/forms.py:106 part/forms.py:121 part/models.py:2559
+#: order/models.py:913 order/models.py:1416 order/serializers.py:1136
+#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:59
+#: part/forms.py:74 part/forms.py:89 part/models.py:2549
#: part/templates/part/detail.html:935 part/templates/part/detail.html:1021
#: part/templates/part/part_pricing.html:16
#: part/templates/part/upload_bom.html:53
@@ -938,9 +937,9 @@ msgstr ""
#: templates/js/translated/order.js:2821 templates/js/translated/order.js:3143
#: templates/js/translated/order.js:3231 templates/js/translated/order.js:3320
#: templates/js/translated/order.js:3454 templates/js/translated/order.js:3965
-#: templates/js/translated/part.js:967 templates/js/translated/part.js:1969
-#: templates/js/translated/part.js:2200 templates/js/translated/part.js:2234
-#: templates/js/translated/part.js:2312 templates/js/translated/stock.js:403
+#: templates/js/translated/part.js:1011 templates/js/translated/part.js:2065
+#: templates/js/translated/part.js:2296 templates/js/translated/part.js:2330
+#: templates/js/translated/part.js:2408 templates/js/translated/stock.js:403
#: templates/js/translated/stock.js:557 templates/js/translated/stock.js:727
#: templates/js/translated/stock.js:2498 templates/js/translated/stock.js:2583
msgid "Quantity"
@@ -983,9 +982,9 @@ msgstr ""
msgid "Enter quantity for build output"
msgstr ""
-#: build/serializers.py:198 build/serializers.py:623 order/models.py:363
-#: order/serializers.py:280 order/serializers.py:435 part/serializers.py:512
-#: part/serializers.py:956 stock/models.py:470 stock/models.py:1239
+#: build/serializers.py:198 build/serializers.py:623 order/models.py:367
+#: order/serializers.py:280 order/serializers.py:435 part/serializers.py:514
+#: part/serializers.py:958 stock/models.py:470 stock/models.py:1239
#: stock/serializers.py:288
msgid "Quantity must be greater than zero"
msgstr ""
@@ -998,7 +997,7 @@ msgstr ""
msgid "Integer quantity required, as the bill of materials contains trackable parts"
msgstr ""
-#: build/serializers.py:222 order/serializers.py:448 order/serializers.py:1138
+#: build/serializers.py:222 order/serializers.py:448 order/serializers.py:1140
#: stock/serializers.py:297 templates/js/translated/order.js:1186
#: templates/js/translated/stock.js:238 templates/js/translated/stock.js:404
msgid "Serial Numbers"
@@ -1026,7 +1025,7 @@ msgstr ""
#: build/serializers.py:356 order/serializers.py:421 order/serializers.py:525
#: stock/serializers.py:308 stock/serializers.py:439 stock/serializers.py:481
-#: stock/serializers.py:864 stock/serializers.py:1097
+#: stock/serializers.py:851 stock/serializers.py:1084
#: stock/templates/stock/item_base.html:390
#: templates/js/translated/barcode.js:436
#: templates/js/translated/barcode.js:618 templates/js/translated/build.js:750
@@ -1044,7 +1043,7 @@ msgid "Location for completed build outputs"
msgstr ""
#: build/serializers.py:363 build/templates/build/build_base.html:142
-#: build/templates/build/detail.html:62 order/models.py:654
+#: build/templates/build/detail.html:62 order/models.py:658
#: order/serializers.py:458 stock/templates/stock/item_base.html:423
#: templates/js/translated/barcode.js:182 templates/js/translated/build.js:2510
#: templates/js/translated/order.js:1320 templates/js/translated/order.js:1660
@@ -1109,8 +1108,8 @@ msgstr ""
msgid "No build outputs have been created for this build order"
msgstr ""
-#: build/serializers.py:535 build/serializers.py:580 part/models.py:2677
-#: part/models.py:2811
+#: build/serializers.py:535 build/serializers.py:580 part/models.py:2667
+#: part/models.py:2801
msgid "BOM Item"
msgstr ""
@@ -1126,11 +1125,11 @@ msgstr ""
msgid "bom_item.part must point to the same part as the build order"
msgstr ""
-#: build/serializers.py:609 stock/serializers.py:716
+#: build/serializers.py:609 stock/serializers.py:703
msgid "Item must be in stock"
msgstr ""
-#: build/serializers.py:667 order/serializers.py:1052
+#: build/serializers.py:667 order/serializers.py:1054
#, python-brace-format
msgid "Available quantity ({q}) exceeded"
msgstr ""
@@ -1147,7 +1146,7 @@ msgstr ""
msgid "This stock item has already been allocated to this build output"
msgstr ""
-#: build/serializers.py:708 order/serializers.py:1298
+#: build/serializers.py:708 order/serializers.py:1300
msgid "Allocation items must be provided"
msgstr ""
@@ -1179,10 +1178,19 @@ msgstr ""
msgid "Allow allocation of substitute parts"
msgstr ""
-#: build/tasks.py:96
+#: build/tasks.py:100
msgid "Stock required for build order"
msgstr ""
+#: build/tasks.py:118
+msgid "Overdue Build Order"
+msgstr ""
+
+#: build/tasks.py:123
+#, python-brace-format
+msgid "Build order {bo} is now overdue"
+msgstr ""
+
#: build/templates/build/build_base.html:39
#: order/templates/order/order_base.html:28
#: order/templates/order/sales_order_base.html:38
@@ -1245,13 +1253,13 @@ msgid "Stock has not been fully allocated to this Build Order"
msgstr ""
#: build/templates/build/build_base.html:151
-#: build/templates/build/detail.html:131 order/models.py:922
+#: build/templates/build/detail.html:131 order/models.py:926
#: order/templates/order/order_base.html:162
#: order/templates/order/sales_order_base.html:164
#: report/templates/report/inventree_build_order_base.html:126
#: templates/js/translated/build.js:2550 templates/js/translated/order.js:1677
#: templates/js/translated/order.js:1987 templates/js/translated/order.js:2497
-#: templates/js/translated/order.js:3517 templates/js/translated/part.js:971
+#: templates/js/translated/order.js:3517 templates/js/translated/part.js:1015
msgid "Target Date"
msgstr ""
@@ -1278,13 +1286,14 @@ msgid "Completed"
msgstr ""
#: build/templates/build/build_base.html:176
-#: build/templates/build/detail.html:94 order/models.py:1100
-#: order/models.py:1185 order/models.py:1320
+#: build/templates/build/detail.html:94 order/models.py:1104
+#: order/models.py:1189 order/models.py:1324
#: order/templates/order/sales_order_base.html:9
#: order/templates/order/sales_order_base.html:28
#: report/templates/report/inventree_build_order_base.html:136
#: report/templates/report/inventree_so_report.html:77
#: stock/templates/stock/item_base.html:370
+#: templates/email/overdue_sales_order.html:15
#: templates/js/translated/order.js:2436
msgid "Sales Order"
msgstr ""
@@ -1320,7 +1329,7 @@ msgstr ""
msgid "Stock can be taken from any available location."
msgstr ""
-#: build/templates/build/detail.html:49 order/models.py:1034
+#: build/templates/build/detail.html:49 order/models.py:1038
#: templates/js/translated/order.js:1321 templates/js/translated/order.js:2029
msgid "Destination"
msgstr ""
@@ -1717,7 +1726,7 @@ msgstr ""
msgid "Copy category parameter templates when creating a part"
msgstr ""
-#: common/models.py:820 part/models.py:2372 report/models.py:157
+#: common/models.py:820 part/models.py:2360 report/models.py:157
#: templates/js/translated/table_filters.js:38
#: templates/js/translated/table_filters.js:444
msgid "Template"
@@ -1881,7 +1890,7 @@ msgid "Default page size for PDF reports"
msgstr ""
#: common/models.py:968
-msgid "Test Reports"
+msgid "Enable Test Reports"
msgstr ""
#: common/models.py:969
@@ -1889,568 +1898,576 @@ msgid "Enable generation of test reports"
msgstr ""
#: common/models.py:975
-msgid "Batch Code Template"
+msgid "Attach Test Reports"
msgstr ""
#: common/models.py:976
-msgid "Template for generating default batch codes for stock items"
-msgstr ""
-
-#: common/models.py:981
-msgid "Stock Expiry"
+msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item"
msgstr ""
#: common/models.py:982
-msgid "Enable stock expiry functionality"
+msgid "Batch Code Template"
+msgstr ""
+
+#: common/models.py:983
+msgid "Template for generating default batch codes for stock items"
msgstr ""
#: common/models.py:988
-msgid "Sell Expired Stock"
+msgid "Stock Expiry"
msgstr ""
#: common/models.py:989
-msgid "Allow sale of expired stock"
+msgid "Enable stock expiry functionality"
msgstr ""
#: common/models.py:995
-msgid "Stock Stale Time"
+msgid "Sell Expired Stock"
msgstr ""
#: common/models.py:996
-msgid "Number of days stock items are considered stale before expiring"
+msgid "Allow sale of expired stock"
msgstr ""
-#: common/models.py:998
-msgid "days"
+#: common/models.py:1002
+msgid "Stock Stale Time"
msgstr ""
#: common/models.py:1003
-msgid "Build Expired Stock"
+msgid "Number of days stock items are considered stale before expiring"
msgstr ""
-#: common/models.py:1004
-msgid "Allow building with expired stock"
+#: common/models.py:1005
+msgid "days"
msgstr ""
#: common/models.py:1010
-msgid "Stock Ownership Control"
+msgid "Build Expired Stock"
msgstr ""
#: common/models.py:1011
-msgid "Enable ownership control over stock locations and items"
+msgid "Allow building with expired stock"
msgstr ""
#: common/models.py:1017
-msgid "Build Order Reference Prefix"
+msgid "Stock Ownership Control"
msgstr ""
#: common/models.py:1018
-msgid "Prefix value for build order reference"
-msgstr ""
-
-#: common/models.py:1023
-msgid "Build Order Reference Regex"
+msgid "Enable ownership control over stock locations and items"
msgstr ""
#: common/models.py:1024
+msgid "Build Order Reference Prefix"
+msgstr ""
+
+#: common/models.py:1025
+msgid "Prefix value for build order reference"
+msgstr ""
+
+#: common/models.py:1030
+msgid "Build Order Reference Regex"
+msgstr ""
+
+#: common/models.py:1031
msgid "Regular expression pattern for matching build order reference"
msgstr ""
-#: common/models.py:1028
+#: common/models.py:1035
msgid "Sales Order Reference Prefix"
msgstr ""
-#: common/models.py:1029
+#: common/models.py:1036
msgid "Prefix value for sales order reference"
msgstr ""
-#: common/models.py:1034
+#: common/models.py:1041
msgid "Sales Order Default Shipment"
msgstr ""
-#: common/models.py:1035
+#: common/models.py:1042
msgid "Enable creation of default shipment with sales orders"
msgstr ""
-#: common/models.py:1041
+#: common/models.py:1048
msgid "Purchase Order Reference Prefix"
msgstr ""
-#: common/models.py:1042
+#: common/models.py:1049
msgid "Prefix value for purchase order reference"
msgstr ""
-#: common/models.py:1048
+#: common/models.py:1055
msgid "Enable password forgot"
msgstr ""
-#: common/models.py:1049
+#: common/models.py:1056
msgid "Enable password forgot function on the login pages"
msgstr ""
-#: common/models.py:1055
+#: common/models.py:1062
msgid "Enable registration"
msgstr ""
-#: common/models.py:1056
+#: common/models.py:1063
msgid "Enable self-registration for users on the login pages"
msgstr ""
-#: common/models.py:1062
+#: common/models.py:1069
msgid "Enable SSO"
msgstr ""
-#: common/models.py:1063
+#: common/models.py:1070
msgid "Enable SSO on the login pages"
msgstr ""
-#: common/models.py:1069
+#: common/models.py:1076
msgid "Email required"
msgstr ""
-#: common/models.py:1070
+#: common/models.py:1077
msgid "Require user to supply mail on signup"
msgstr ""
-#: common/models.py:1076
+#: common/models.py:1083
msgid "Auto-fill SSO users"
msgstr ""
-#: common/models.py:1077
+#: common/models.py:1084
msgid "Automatically fill out user-details from SSO account-data"
msgstr ""
-#: common/models.py:1083
+#: common/models.py:1090
msgid "Mail twice"
msgstr ""
-#: common/models.py:1084
+#: common/models.py:1091
msgid "On signup ask users twice for their mail"
msgstr ""
-#: common/models.py:1090
+#: common/models.py:1097
msgid "Password twice"
msgstr ""
-#: common/models.py:1091
+#: common/models.py:1098
msgid "On signup ask users twice for their password"
msgstr ""
-#: common/models.py:1097
+#: common/models.py:1104
msgid "Group on signup"
msgstr ""
-#: common/models.py:1098
+#: common/models.py:1105
msgid "Group to which new users are assigned on registration"
msgstr ""
-#: common/models.py:1104
+#: common/models.py:1111
msgid "Enforce MFA"
msgstr ""
-#: common/models.py:1105
+#: common/models.py:1112
msgid "Users must use multifactor security."
msgstr ""
-#: common/models.py:1111
+#: common/models.py:1118
msgid "Check plugins on startup"
msgstr ""
-#: common/models.py:1112
+#: common/models.py:1119
msgid "Check that all plugins are installed on startup - enable in container enviroments"
msgstr ""
-#: common/models.py:1120
+#: common/models.py:1127
msgid "Enable URL integration"
msgstr ""
-#: common/models.py:1121
+#: common/models.py:1128
msgid "Enable plugins to add URL routes"
msgstr ""
-#: common/models.py:1128
+#: common/models.py:1135
msgid "Enable navigation integration"
msgstr ""
-#: common/models.py:1129
+#: common/models.py:1136
msgid "Enable plugins to integrate into navigation"
msgstr ""
-#: common/models.py:1136
+#: common/models.py:1143
msgid "Enable app integration"
msgstr ""
-#: common/models.py:1137
+#: common/models.py:1144
msgid "Enable plugins to add apps"
msgstr ""
-#: common/models.py:1144
+#: common/models.py:1151
msgid "Enable schedule integration"
msgstr ""
-#: common/models.py:1145
+#: common/models.py:1152
msgid "Enable plugins to run scheduled tasks"
msgstr ""
-#: common/models.py:1152
+#: common/models.py:1159
msgid "Enable event integration"
msgstr ""
-#: common/models.py:1153
+#: common/models.py:1160
msgid "Enable plugins to respond to internal events"
msgstr ""
-#: common/models.py:1170 common/models.py:1492
+#: common/models.py:1177 common/models.py:1499
msgid "Settings key (must be unique - case insensitive"
msgstr ""
-#: common/models.py:1192
+#: common/models.py:1199
msgid "Show subscribed parts"
msgstr ""
-#: common/models.py:1193
+#: common/models.py:1200
msgid "Show subscribed parts on the homepage"
msgstr ""
-#: common/models.py:1199
+#: common/models.py:1206
msgid "Show subscribed categories"
msgstr ""
-#: common/models.py:1200
+#: common/models.py:1207
msgid "Show subscribed part categories on the homepage"
msgstr ""
-#: common/models.py:1206
+#: common/models.py:1213
msgid "Show latest parts"
msgstr ""
-#: common/models.py:1207
+#: common/models.py:1214
msgid "Show latest parts on the homepage"
msgstr ""
-#: common/models.py:1213
+#: common/models.py:1220
msgid "Recent Part Count"
msgstr ""
-#: common/models.py:1214
+#: common/models.py:1221
msgid "Number of recent parts to display on index page"
msgstr ""
-#: common/models.py:1220
+#: common/models.py:1227
msgid "Show unvalidated BOMs"
msgstr ""
-#: common/models.py:1221
+#: common/models.py:1228
msgid "Show BOMs that await validation on the homepage"
msgstr ""
-#: common/models.py:1227
+#: common/models.py:1234
msgid "Show recent stock changes"
msgstr ""
-#: common/models.py:1228
+#: common/models.py:1235
msgid "Show recently changed stock items on the homepage"
msgstr ""
-#: common/models.py:1234
+#: common/models.py:1241
msgid "Recent Stock Count"
msgstr ""
-#: common/models.py:1235
+#: common/models.py:1242
msgid "Number of recent stock items to display on index page"
msgstr ""
-#: common/models.py:1241
+#: common/models.py:1248
msgid "Show low stock"
msgstr ""
-#: common/models.py:1242
+#: common/models.py:1249
msgid "Show low stock items on the homepage"
msgstr ""
-#: common/models.py:1248
+#: common/models.py:1255
msgid "Show depleted stock"
msgstr ""
-#: common/models.py:1249
+#: common/models.py:1256
msgid "Show depleted stock items on the homepage"
msgstr ""
-#: common/models.py:1255
+#: common/models.py:1262
msgid "Show needed stock"
msgstr ""
-#: common/models.py:1256
+#: common/models.py:1263
msgid "Show stock items needed for builds on the homepage"
msgstr ""
-#: common/models.py:1262
+#: common/models.py:1269
msgid "Show expired stock"
msgstr ""
-#: common/models.py:1263
+#: common/models.py:1270
msgid "Show expired stock items on the homepage"
msgstr ""
-#: common/models.py:1269
+#: common/models.py:1276
msgid "Show stale stock"
msgstr ""
-#: common/models.py:1270
+#: common/models.py:1277
msgid "Show stale stock items on the homepage"
msgstr ""
-#: common/models.py:1276
+#: common/models.py:1283
msgid "Show pending builds"
msgstr ""
-#: common/models.py:1277
+#: common/models.py:1284
msgid "Show pending builds on the homepage"
msgstr ""
-#: common/models.py:1283
+#: common/models.py:1290
msgid "Show overdue builds"
msgstr ""
-#: common/models.py:1284
+#: common/models.py:1291
msgid "Show overdue builds on the homepage"
msgstr ""
-#: common/models.py:1290
+#: common/models.py:1297
msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:1291
+#: common/models.py:1298
msgid "Show outstanding POs on the homepage"
msgstr ""
-#: common/models.py:1297
+#: common/models.py:1304
msgid "Show overdue POs"
msgstr ""
-#: common/models.py:1298
+#: common/models.py:1305
msgid "Show overdue POs on the homepage"
msgstr ""
-#: common/models.py:1304
+#: common/models.py:1311
msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:1305
+#: common/models.py:1312
msgid "Show outstanding SOs on the homepage"
msgstr ""
-#: common/models.py:1311
+#: common/models.py:1318
msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:1312
+#: common/models.py:1319
msgid "Show overdue SOs on the homepage"
msgstr ""
-#: common/models.py:1317
+#: common/models.py:1324
msgid "Enable label printing"
msgstr ""
-#: common/models.py:1318
+#: common/models.py:1325
msgid "Enable label printing from the web interface"
msgstr ""
-#: common/models.py:1324
+#: common/models.py:1331
msgid "Inline label display"
msgstr ""
-#: common/models.py:1325
+#: common/models.py:1332
msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:1331
+#: common/models.py:1338
msgid "Inline report display"
msgstr ""
-#: common/models.py:1332
+#: common/models.py:1339
msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:1338
+#: common/models.py:1345
msgid "Search Parts"
msgstr ""
-#: common/models.py:1339
+#: common/models.py:1346
msgid "Display parts in search preview window"
msgstr ""
-#: common/models.py:1345
+#: common/models.py:1352
msgid "Seach Supplier Parts"
msgstr ""
-#: common/models.py:1346
+#: common/models.py:1353
msgid "Display supplier parts in search preview window"
msgstr ""
-#: common/models.py:1352
+#: common/models.py:1359
msgid "Search Manufacturer Parts"
msgstr ""
-#: common/models.py:1353
+#: common/models.py:1360
msgid "Display manufacturer parts in search preview window"
msgstr ""
-#: common/models.py:1359
+#: common/models.py:1366
msgid "Hide Inactive Parts"
msgstr ""
-#: common/models.py:1360
+#: common/models.py:1367
msgid "Excluded inactive parts from search preview window"
msgstr ""
-#: common/models.py:1366
+#: common/models.py:1373
msgid "Search Categories"
msgstr ""
-#: common/models.py:1367
+#: common/models.py:1374
msgid "Display part categories in search preview window"
msgstr ""
-#: common/models.py:1373
+#: common/models.py:1380
msgid "Search Stock"
msgstr ""
-#: common/models.py:1374
+#: common/models.py:1381
msgid "Display stock items in search preview window"
msgstr ""
-#: common/models.py:1380
+#: common/models.py:1387
msgid "Hide Unavailable Stock Items"
msgstr ""
-#: common/models.py:1381
+#: common/models.py:1388
msgid "Exclude stock items which are not available from the search preview window"
msgstr ""
-#: common/models.py:1387
+#: common/models.py:1394
msgid "Search Locations"
msgstr ""
-#: common/models.py:1388
+#: common/models.py:1395
msgid "Display stock locations in search preview window"
msgstr ""
-#: common/models.py:1394
+#: common/models.py:1401
msgid "Search Companies"
msgstr ""
-#: common/models.py:1395
+#: common/models.py:1402
msgid "Display companies in search preview window"
msgstr ""
-#: common/models.py:1401
+#: common/models.py:1408
msgid "Search Purchase Orders"
msgstr ""
-#: common/models.py:1402
+#: common/models.py:1409
msgid "Display purchase orders in search preview window"
msgstr ""
-#: common/models.py:1408
+#: common/models.py:1415
msgid "Exclude Inactive Purchase Orders"
msgstr ""
-#: common/models.py:1409
+#: common/models.py:1416
msgid "Exclude inactive purchase orders from search preview window"
msgstr ""
-#: common/models.py:1415
+#: common/models.py:1422
msgid "Search Sales Orders"
msgstr ""
-#: common/models.py:1416
+#: common/models.py:1423
msgid "Display sales orders in search preview window"
msgstr ""
-#: common/models.py:1422
+#: common/models.py:1429
msgid "Exclude Inactive Sales Orders"
msgstr ""
-#: common/models.py:1423
+#: common/models.py:1430
msgid "Exclude inactive sales orders from search preview window"
msgstr ""
-#: common/models.py:1429
+#: common/models.py:1436
msgid "Search Preview Results"
msgstr ""
-#: common/models.py:1430
+#: common/models.py:1437
msgid "Number of results to show in each section of the search preview window"
msgstr ""
-#: common/models.py:1436
+#: common/models.py:1443
msgid "Show Quantity in Forms"
msgstr ""
-#: common/models.py:1437
+#: common/models.py:1444
msgid "Display available part quantity in some forms"
msgstr ""
-#: common/models.py:1443
+#: common/models.py:1450
msgid "Escape Key Closes Forms"
msgstr ""
-#: common/models.py:1444
+#: common/models.py:1451
msgid "Use the escape key to close modal forms"
msgstr ""
-#: common/models.py:1450
+#: common/models.py:1457
msgid "Fixed Navbar"
msgstr ""
-#: common/models.py:1451
+#: common/models.py:1458
msgid "The navbar position is fixed to the top of the screen"
msgstr ""
-#: common/models.py:1457
+#: common/models.py:1464
msgid "Date Format"
msgstr ""
-#: common/models.py:1458
+#: common/models.py:1465
msgid "Preferred format for displaying dates"
msgstr ""
-#: common/models.py:1472 part/templates/part/detail.html:39
+#: common/models.py:1479 part/templates/part/detail.html:39
msgid "Part Scheduling"
msgstr ""
-#: common/models.py:1473
+#: common/models.py:1480
msgid "Display part scheduling information"
msgstr ""
-#: common/models.py:1537 company/forms.py:37
+#: common/models.py:1544 company/forms.py:37
msgid "Price break quantity"
msgstr ""
-#: common/models.py:1544 company/serializers.py:288
-#: company/templates/company/supplier_part.html:263 order/models.py:949
-#: templates/js/translated/part.js:998 templates/js/translated/part.js:1974
+#: common/models.py:1551 company/serializers.py:290
+#: company/templates/company/supplier_part.html:263 order/models.py:953
+#: templates/js/translated/part.js:1042 templates/js/translated/part.js:2070
msgid "Price"
msgstr ""
-#: common/models.py:1545
+#: common/models.py:1552
msgid "Unit price at specified quantity"
msgstr ""
-#: common/models.py:1705 common/models.py:1883
+#: common/models.py:1712 common/models.py:1890
msgid "Endpoint"
msgstr ""
-#: common/models.py:1706
+#: common/models.py:1713
msgid "Endpoint at which this webhook is received"
msgstr ""
-#: common/models.py:1715
+#: common/models.py:1722
msgid "Name for this webhook"
msgstr ""
-#: common/models.py:1720 part/models.py:911 plugin/models.py:99
+#: common/models.py:1727 part/models.py:911 plugin/models.py:99
#: templates/js/translated/table_filters.js:34
#: templates/js/translated/table_filters.js:96
#: templates/js/translated/table_filters.js:308
@@ -2458,79 +2475,79 @@ msgstr ""
msgid "Active"
msgstr ""
-#: common/models.py:1721
+#: common/models.py:1728
msgid "Is this webhook active"
msgstr ""
-#: common/models.py:1735
+#: common/models.py:1742
msgid "Token"
msgstr ""
-#: common/models.py:1736
+#: common/models.py:1743
msgid "Token for access"
msgstr ""
-#: common/models.py:1743
+#: common/models.py:1750
msgid "Secret"
msgstr ""
-#: common/models.py:1744
+#: common/models.py:1751
msgid "Shared secret for HMAC"
msgstr ""
-#: common/models.py:1850
+#: common/models.py:1857
msgid "Message ID"
msgstr ""
-#: common/models.py:1851
+#: common/models.py:1858
msgid "Unique identifier for this message"
msgstr ""
-#: common/models.py:1859
+#: common/models.py:1866
msgid "Host"
msgstr ""
-#: common/models.py:1860
+#: common/models.py:1867
msgid "Host from which this message was received"
msgstr ""
-#: common/models.py:1867
+#: common/models.py:1874
msgid "Header"
msgstr ""
-#: common/models.py:1868
+#: common/models.py:1875
msgid "Header of this message"
msgstr ""
-#: common/models.py:1874
+#: common/models.py:1881
msgid "Body"
msgstr ""
-#: common/models.py:1875
+#: common/models.py:1882
msgid "Body of this message"
msgstr ""
-#: common/models.py:1884
+#: common/models.py:1891
msgid "Endpoint on which this message was received"
msgstr ""
-#: common/models.py:1889
+#: common/models.py:1896
msgid "Worked on"
msgstr ""
-#: common/models.py:1890
+#: common/models.py:1897
msgid "Was the work on this message finished?"
msgstr ""
#: common/views.py:87 order/templates/order/purchase_order_detail.html:23
-#: order/views.py:102 part/views.py:193
+#: order/views.py:102 part/views.py:116
#: templates/patterns/wizard/upload.html:37
msgid "Upload File"
msgstr ""
#: common/views.py:88 order/views.py:103
#: part/templates/part/import_wizard/ajax_match_fields.html:45
-#: part/views.py:194 templates/patterns/wizard/match_fields.html:51
+#: part/views.py:117 templates/patterns/wizard/match_fields.html:51
msgid "Match Fields"
msgstr ""
@@ -2546,19 +2563,19 @@ msgstr ""
msgid "Parts imported"
msgstr ""
-#: common/views.py:507 order/templates/order/order_wizard/match_parts.html:19
+#: common/views.py:511 order/templates/order/order_wizard/match_parts.html:19
#: part/templates/part/import_wizard/match_references.html:19
#: templates/patterns/wizard/match_fields.html:26
#: templates/patterns/wizard/upload.html:35
msgid "Previous Step"
msgstr ""
-#: company/forms.py:16 part/forms.py:21
+#: company/forms.py:16 part/forms.py:18
#: templates/InvenTree/settings/mixins/urls.html:14
msgid "URL"
msgstr ""
-#: company/forms.py:17 part/forms.py:22
+#: company/forms.py:17 part/forms.py:19
msgid "Image URL"
msgstr ""
@@ -2645,9 +2662,9 @@ msgstr ""
msgid "Does this company manufacture parts?"
msgstr ""
-#: company/models.py:144 company/serializers.py:294
-#: company/templates/company/company_base.html:106 part/serializers.py:137
-#: part/serializers.py:168 stock/serializers.py:162
+#: company/models.py:144 company/serializers.py:296
+#: company/templates/company/company_base.html:106 part/serializers.py:139
+#: part/serializers.py:170 stock/serializers.py:162
msgid "Currency"
msgstr ""
@@ -2686,7 +2703,7 @@ msgstr ""
#: templates/js/translated/company.js:487
#: templates/js/translated/company.js:648
#: templates/js/translated/company.js:935 templates/js/translated/order.js:1907
-#: templates/js/translated/part.js:246 templates/js/translated/part.js:956
+#: templates/js/translated/part.js:246 templates/js/translated/part.js:1000
msgid "MPN"
msgstr ""
@@ -2715,8 +2732,8 @@ msgstr ""
#: company/models.py:361
#: report/templates/report/inventree_test_report_base.html:95
-#: stock/models.py:2080 templates/js/translated/company.js:540
-#: templates/js/translated/company.js:763 templates/js/translated/part.js:776
+#: stock/models.py:2084 templates/js/translated/company.js:540
+#: templates/js/translated/company.js:763 templates/js/translated/part.js:820
#: templates/js/translated/stock.js:1294
msgid "Value"
msgstr ""
@@ -2725,10 +2742,10 @@ msgstr ""
msgid "Parameter value"
msgstr ""
-#: company/models.py:368 part/models.py:878 part/models.py:2339
+#: company/models.py:368 part/models.py:878 part/models.py:2327
#: part/templates/part/part_base.html:280
-#: templates/InvenTree/settings/settings.html:332
-#: templates/js/translated/company.js:769 templates/js/translated/part.js:782
+#: templates/InvenTree/settings/settings.html:351
+#: templates/js/translated/company.js:769 templates/js/translated/part.js:826
msgid "Units"
msgstr ""
@@ -2741,13 +2758,14 @@ msgid "Linked manufacturer part must reference the same base part"
msgstr ""
#: company/models.py:487 company/templates/company/company_base.html:81
-#: company/templates/company/supplier_part.html:87 order/models.py:303
+#: company/templates/company/supplier_part.html:87 order/models.py:307
#: order/templates/order/order_base.html:112 part/bom.py:237 part/bom.py:265
#: stock/templates/stock/item_base.html:229
+#: templates/email/overdue_purchase_order.html:16
#: templates/js/translated/company.js:254
#: templates/js/translated/company.js:393
#: templates/js/translated/company.js:891 templates/js/translated/order.js:1643
-#: templates/js/translated/part.js:216 templates/js/translated/part.js:924
+#: templates/js/translated/part.js:216 templates/js/translated/part.js:968
#: templates/js/translated/table_filters.js:415
msgid "Supplier"
msgstr ""
@@ -2759,7 +2777,7 @@ msgstr ""
#: company/models.py:493 company/templates/company/supplier_part.html:97
#: part/bom.py:238 part/bom.py:266 templates/js/translated/company.js:253
#: templates/js/translated/order.js:1894 templates/js/translated/part.js:227
-#: templates/js/translated/part.js:942
+#: templates/js/translated/part.js:986
msgid "SKU"
msgstr ""
@@ -2780,17 +2798,17 @@ msgid "Supplier part description"
msgstr ""
#: company/models.py:518 company/templates/company/supplier_part.html:125
-#: part/models.py:2571 part/templates/part/upload_bom.html:59
+#: part/models.py:2561 part/templates/part/upload_bom.html:59
#: report/templates/report/inventree_po_report.html:92
#: report/templates/report/inventree_so_report.html:93 stock/serializers.py:387
msgid "Note"
msgstr ""
-#: company/models.py:522 part/models.py:1688
+#: company/models.py:522 part/models.py:1683
msgid "base cost"
msgstr ""
-#: company/models.py:522 part/models.py:1688
+#: company/models.py:522 part/models.py:1683
msgid "Minimum charge (e.g. stocking fee)"
msgstr ""
@@ -2804,7 +2822,7 @@ msgstr ""
msgid "Part packaging"
msgstr ""
-#: company/models.py:526 part/models.py:1690
+#: company/models.py:526 part/models.py:1685
msgid "multiple"
msgstr ""
@@ -2867,10 +2885,11 @@ msgstr ""
msgid "Download image from URL"
msgstr ""
-#: company/templates/company/company_base.html:86 order/models.py:649
+#: company/templates/company/company_base.html:86 order/models.py:653
#: order/templates/order/sales_order_base.html:116 stock/models.py:627
-#: stock/models.py:628 stock/serializers.py:758
+#: stock/models.py:628 stock/serializers.py:745
#: stock/templates/stock/item_base.html:401
+#: templates/email/overdue_sales_order.html:16
#: templates/js/translated/company.js:385 templates/js/translated/order.js:2458
#: templates/js/translated/stock.js:2431
#: templates/js/translated/table_filters.js:419
@@ -3000,7 +3019,7 @@ msgid "Supplier List"
msgstr ""
#: company/templates/company/manufacturer_part.html:15 company/views.py:45
-#: part/templates/part/prices.html:170 templates/InvenTree/search.html:179
+#: part/templates/part/prices.html:172 templates/InvenTree/search.html:179
#: templates/navbar.html:49
msgid "Manufacturers"
msgstr ""
@@ -3033,7 +3052,7 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:119
#: company/templates/company/supplier_part.html:15 company/views.py:39
-#: part/templates/part/part_sidebar.html:35 part/templates/part/prices.html:166
+#: part/templates/part/part_sidebar.html:35 part/templates/part/prices.html:168
#: templates/InvenTree/search.html:189 templates/navbar.html:48
msgid "Suppliers"
msgstr ""
@@ -3145,7 +3164,7 @@ msgstr ""
#: company/templates/company/supplier_part.html:191
#: company/templates/company/supplier_part.html:305
-#: part/templates/part/prices.html:274 templates/js/translated/part.js:2046
+#: part/templates/part/prices.html:276 templates/js/translated/part.js:2142
msgid "Add Price Break"
msgstr ""
@@ -3154,12 +3173,12 @@ msgid "No price break information found"
msgstr ""
#: company/templates/company/supplier_part.html:231
-#: templates/js/translated/part.js:2056
+#: templates/js/translated/part.js:2152
msgid "Delete Price Break"
msgstr ""
#: company/templates/company/supplier_part.html:245
-#: templates/js/translated/part.js:2070
+#: templates/js/translated/part.js:2166
msgid "Edit Price Break"
msgstr ""
@@ -3181,8 +3200,8 @@ msgstr ""
#: stock/templates/stock/stock_app_base.html:10
#: templates/InvenTree/search.html:151
#: templates/InvenTree/settings/sidebar.html:43
-#: templates/js/translated/bom.js:554 templates/js/translated/part.js:678
-#: templates/js/translated/part.js:1226 templates/js/translated/part.js:1387
+#: templates/js/translated/bom.js:554 templates/js/translated/part.js:722
+#: templates/js/translated/part.js:1270 templates/js/translated/part.js:1431
#: templates/js/translated/stock.js:904 templates/js/translated/stock.js:1687
#: templates/navbar.html:31
msgid "Stock"
@@ -3239,20 +3258,20 @@ msgstr ""
msgid "New Company"
msgstr ""
-#: company/views.py:112 part/views.py:578
+#: company/views.py:112 part/views.py:501
msgid "Download Image"
msgstr ""
-#: company/views.py:139 part/views.py:608
+#: company/views.py:139 part/views.py:531
msgid "Image size exceeds maximum allowable size for download"
msgstr ""
-#: company/views.py:146 part/views.py:615
+#: company/views.py:146 part/views.py:538
#, python-brace-format
msgid "Invalid response: {code}"
msgstr ""
-#: company/views.py:155 part/views.py:624
+#: company/views.py:155 part/views.py:547
msgid "Supplied URL is not a valid image file"
msgstr ""
@@ -3325,7 +3344,7 @@ msgstr ""
msgid "Order description"
msgstr ""
-#: order/models.py:135 order/models.py:1236
+#: order/models.py:135 order/models.py:1240
msgid "Link to external page"
msgstr ""
@@ -3341,293 +3360,294 @@ msgstr ""
msgid "Order notes"
msgstr ""
-#: order/models.py:289 order/models.py:639
+#: order/models.py:293 order/models.py:643
msgid "Order reference"
msgstr ""
-#: order/models.py:294 order/models.py:654
+#: order/models.py:298 order/models.py:658
msgid "Purchase order status"
msgstr ""
-#: order/models.py:304
+#: order/models.py:308
msgid "Company from which the items are being ordered"
msgstr ""
-#: order/models.py:307 order/templates/order/order_base.html:124
+#: order/models.py:311 order/templates/order/order_base.html:124
#: templates/js/translated/order.js:1652
msgid "Supplier Reference"
msgstr ""
-#: order/models.py:307
+#: order/models.py:311
msgid "Supplier order reference code"
msgstr ""
-#: order/models.py:314
+#: order/models.py:318
msgid "received by"
msgstr ""
-#: order/models.py:319
+#: order/models.py:323
msgid "Issue Date"
msgstr ""
-#: order/models.py:320
+#: order/models.py:324
msgid "Date order was issued"
msgstr ""
-#: order/models.py:325
+#: order/models.py:329
msgid "Target Delivery Date"
msgstr ""
-#: order/models.py:326
+#: order/models.py:330
msgid "Expected date for order delivery. Order will be overdue after this date."
msgstr ""
-#: order/models.py:332
+#: order/models.py:336
msgid "Date order was completed"
msgstr ""
-#: order/models.py:368
+#: order/models.py:372
msgid "Part supplier must match PO supplier"
msgstr ""
-#: order/models.py:512
+#: order/models.py:516
msgid "Quantity must be a positive number"
msgstr ""
-#: order/models.py:650
+#: order/models.py:654
msgid "Company to which the items are being sold"
msgstr ""
-#: order/models.py:656
+#: order/models.py:660
msgid "Customer Reference "
msgstr ""
-#: order/models.py:656
+#: order/models.py:660
msgid "Customer order reference code"
msgstr ""
-#: order/models.py:661
+#: order/models.py:665
msgid "Target date for order completion. Order will be overdue after this date."
msgstr ""
-#: order/models.py:664 order/models.py:1190
+#: order/models.py:668 order/models.py:1194
#: templates/js/translated/order.js:2505 templates/js/translated/order.js:2656
msgid "Shipment Date"
msgstr ""
-#: order/models.py:671
+#: order/models.py:675
msgid "shipped by"
msgstr ""
-#: order/models.py:726
+#: order/models.py:730
msgid "Order cannot be completed as no parts have been assigned"
msgstr ""
-#: order/models.py:730
+#: order/models.py:734
msgid "Only a pending order can be marked as complete"
msgstr ""
-#: order/models.py:733
+#: order/models.py:737
msgid "Order cannot be completed as there are incomplete shipments"
msgstr ""
-#: order/models.py:736
+#: order/models.py:740
msgid "Order cannot be completed as there are incomplete line items"
msgstr ""
-#: order/models.py:910
+#: order/models.py:914
msgid "Item quantity"
msgstr ""
-#: order/models.py:916
+#: order/models.py:920
msgid "Line item reference"
msgstr ""
-#: order/models.py:918
+#: order/models.py:922
msgid "Line item notes"
msgstr ""
-#: order/models.py:923
+#: order/models.py:927
msgid "Target shipping date for this line item"
msgstr ""
-#: order/models.py:941
+#: order/models.py:945
msgid "Context"
msgstr ""
-#: order/models.py:942
+#: order/models.py:946
msgid "Additional context for this line"
msgstr ""
-#: order/models.py:950
+#: order/models.py:954
msgid "Unit price"
msgstr ""
-#: order/models.py:980
+#: order/models.py:984
msgid "Supplier part must match supplier"
msgstr ""
-#: order/models.py:988
+#: order/models.py:992
msgid "deleted"
msgstr ""
-#: order/models.py:994 order/models.py:1074 order/models.py:1099
-#: order/models.py:1184 order/models.py:1320
+#: order/models.py:998 order/models.py:1078 order/models.py:1103
+#: order/models.py:1188 order/models.py:1324
#: templates/js/translated/order.js:3112
msgid "Order"
msgstr ""
-#: order/models.py:995 order/models.py:1074
+#: order/models.py:999 order/models.py:1078
#: order/templates/order/order_base.html:9
#: order/templates/order/order_base.html:18
#: report/templates/report/inventree_po_report.html:76
#: stock/templates/stock/item_base.html:184
+#: templates/email/overdue_purchase_order.html:15
#: templates/js/translated/order.js:885 templates/js/translated/order.js:1621
-#: templates/js/translated/part.js:899 templates/js/translated/stock.js:1846
+#: templates/js/translated/part.js:943 templates/js/translated/stock.js:1846
#: templates/js/translated/stock.js:2412
msgid "Purchase Order"
msgstr ""
-#: order/models.py:1013
+#: order/models.py:1017
msgid "Supplier part"
msgstr ""
-#: order/models.py:1020 order/templates/order/order_base.html:169
+#: order/models.py:1024 order/templates/order/order_base.html:169
#: templates/js/translated/order.js:1318 templates/js/translated/order.js:2009
-#: templates/js/translated/part.js:993 templates/js/translated/part.js:1020
+#: templates/js/translated/part.js:1037 templates/js/translated/part.js:1064
#: templates/js/translated/table_filters.js:330
msgid "Received"
msgstr ""
-#: order/models.py:1021
+#: order/models.py:1025
msgid "Number of items received"
msgstr ""
-#: order/models.py:1028 part/templates/part/prices.html:179 stock/models.py:722
+#: order/models.py:1032 part/templates/part/prices.html:181 stock/models.py:722
#: stock/serializers.py:153 stock/templates/stock/item_base.html:191
#: templates/js/translated/stock.js:1900
msgid "Purchase Price"
msgstr ""
-#: order/models.py:1029
+#: order/models.py:1033
msgid "Unit purchase price"
msgstr ""
-#: order/models.py:1037
+#: order/models.py:1041
msgid "Where does the Purchaser want this item to be stored?"
msgstr ""
-#: order/models.py:1109 part/templates/part/part_pricing.html:112
-#: part/templates/part/prices.html:119 part/templates/part/prices.html:288
+#: order/models.py:1113 part/templates/part/part_pricing.html:115
+#: part/templates/part/prices.html:121 part/templates/part/prices.html:290
msgid "Sale Price"
msgstr ""
-#: order/models.py:1110
+#: order/models.py:1114
msgid "Unit sale price"
msgstr ""
-#: order/models.py:1115
+#: order/models.py:1119
msgid "Shipped quantity"
msgstr ""
-#: order/models.py:1191
+#: order/models.py:1195
msgid "Date of shipment"
msgstr ""
-#: order/models.py:1198
+#: order/models.py:1202
msgid "Checked By"
msgstr ""
-#: order/models.py:1199
+#: order/models.py:1203
msgid "User who checked this shipment"
msgstr ""
-#: order/models.py:1207
+#: order/models.py:1211
msgid "Shipment number"
msgstr ""
-#: order/models.py:1214
+#: order/models.py:1218
msgid "Shipment notes"
msgstr ""
-#: order/models.py:1221
+#: order/models.py:1225
msgid "Tracking Number"
msgstr ""
-#: order/models.py:1222
+#: order/models.py:1226
msgid "Shipment tracking information"
msgstr ""
-#: order/models.py:1229
+#: order/models.py:1233
msgid "Invoice Number"
msgstr ""
-#: order/models.py:1230
+#: order/models.py:1234
msgid "Reference number for associated invoice"
msgstr ""
-#: order/models.py:1248
+#: order/models.py:1252
msgid "Shipment has already been sent"
msgstr ""
-#: order/models.py:1251
+#: order/models.py:1255
msgid "Shipment has no allocated stock items"
msgstr ""
-#: order/models.py:1354 order/models.py:1356
+#: order/models.py:1358 order/models.py:1360
msgid "Stock item has not been assigned"
msgstr ""
-#: order/models.py:1360
+#: order/models.py:1364
msgid "Cannot allocate stock item to a line with a different part"
msgstr ""
-#: order/models.py:1362
+#: order/models.py:1366
msgid "Cannot allocate stock to a line without a part"
msgstr ""
-#: order/models.py:1365
+#: order/models.py:1369
msgid "Allocation quantity cannot exceed stock quantity"
msgstr ""
-#: order/models.py:1369
+#: order/models.py:1373
msgid "StockItem is over-allocated"
msgstr ""
-#: order/models.py:1375 order/serializers.py:1045
+#: order/models.py:1379 order/serializers.py:1047
msgid "Quantity must be 1 for serialized stock item"
msgstr ""
-#: order/models.py:1378
+#: order/models.py:1382
msgid "Sales order does not match shipment"
msgstr ""
-#: order/models.py:1379
+#: order/models.py:1383
msgid "Shipment does not match sales order"
msgstr ""
-#: order/models.py:1387
+#: order/models.py:1391
msgid "Line"
msgstr ""
-#: order/models.py:1395 order/serializers.py:1149 order/serializers.py:1273
+#: order/models.py:1399 order/serializers.py:1151 order/serializers.py:1275
#: templates/js/translated/model_renderers.js:301
msgid "Shipment"
msgstr ""
-#: order/models.py:1396
+#: order/models.py:1400
msgid "Sales order shipment reference"
msgstr ""
-#: order/models.py:1408 templates/InvenTree/notifications/notifications.html:70
+#: order/models.py:1412 templates/InvenTree/notifications/notifications.html:70
msgid "Item"
msgstr ""
-#: order/models.py:1409
+#: order/models.py:1413
msgid "Select stock item to allocate"
msgstr ""
-#: order/models.py:1412
+#: order/models.py:1416
msgid "Enter stock allocation quantity"
msgstr ""
@@ -3663,7 +3683,7 @@ msgstr ""
msgid "Purchase order must match supplier"
msgstr ""
-#: order/serializers.py:406 order/serializers.py:1117
+#: order/serializers.py:406 order/serializers.py:1119
msgid "Line Item"
msgstr ""
@@ -3711,42 +3731,60 @@ msgstr ""
msgid "Supplied barcode values must be unique"
msgstr ""
-#: order/serializers.py:866
+#: order/serializers.py:868
msgid "Sale price currency"
msgstr ""
-#: order/serializers.py:947
+#: order/serializers.py:949
msgid "No shipment details provided"
msgstr ""
-#: order/serializers.py:1006 order/serializers.py:1126
+#: order/serializers.py:1008 order/serializers.py:1128
msgid "Line item is not associated with this order"
msgstr ""
-#: order/serializers.py:1028
+#: order/serializers.py:1030
msgid "Quantity must be positive"
msgstr ""
-#: order/serializers.py:1139
+#: order/serializers.py:1141
msgid "Enter serial numbers to allocate"
msgstr ""
-#: order/serializers.py:1161 order/serializers.py:1281
+#: order/serializers.py:1163 order/serializers.py:1283
msgid "Shipment has already been shipped"
msgstr ""
-#: order/serializers.py:1164 order/serializers.py:1284
+#: order/serializers.py:1166 order/serializers.py:1286
msgid "Shipment is not associated with this order"
msgstr ""
-#: order/serializers.py:1214
+#: order/serializers.py:1216
msgid "No match found for the following serial numbers"
msgstr ""
-#: order/serializers.py:1224
+#: order/serializers.py:1226
msgid "The following serial numbers are already allocated"
msgstr ""
+#: order/tasks.py:26
+msgid "Overdue Purchase Order"
+msgstr ""
+
+#: order/tasks.py:31
+#, python-brace-format
+msgid "Purchase order {po} is now overdue"
+msgstr ""
+
+#: order/tasks.py:88
+msgid "Overdue Sales Order"
+msgstr ""
+
+#: order/tasks.py:93
+#, python-brace-format
+msgid "Sales order {so} is now overdue"
+msgstr ""
+
#: order/templates/order/order_base.html:33
msgid "Print purchase order report"
msgstr ""
@@ -4022,47 +4060,47 @@ msgstr ""
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr ""
-#: part/api.py:474
+#: part/api.py:481
msgid "Incoming Purchase Order"
msgstr ""
-#: part/api.py:494
+#: part/api.py:501
msgid "Outgoing Sales Order"
msgstr ""
-#: part/api.py:512
+#: part/api.py:519
msgid "Stock produced by Build Order"
msgstr ""
-#: part/api.py:544
+#: part/api.py:551
msgid "Stock required for Build Order"
msgstr ""
-#: part/api.py:630
+#: part/api.py:637
msgid "Valid"
msgstr ""
-#: part/api.py:631
+#: part/api.py:638
msgid "Validate entire Bill of Materials"
msgstr ""
-#: part/api.py:637
+#: part/api.py:644
msgid "This option must be selected"
msgstr ""
-#: part/api.py:1003
+#: part/api.py:1010
msgid "Must be greater than zero"
msgstr ""
-#: part/api.py:1007
+#: part/api.py:1014
msgid "Must be a valid quantity"
msgstr ""
-#: part/api.py:1022
+#: part/api.py:1029
msgid "Specify location for initial part stock"
msgstr ""
-#: part/api.py:1053 part/api.py:1057 part/api.py:1072 part/api.py:1076
+#: part/api.py:1060 part/api.py:1064 part/api.py:1079 part/api.py:1083
msgid "This field is required"
msgstr ""
@@ -4081,25 +4119,13 @@ msgid "Available Stock"
msgstr ""
#: part/bom.py:130 part/templates/part/part_base.html:207
-#: templates/js/translated/part.js:517 templates/js/translated/part.js:537
-#: templates/js/translated/part.js:1229 templates/js/translated/part.js:1401
-#: templates/js/translated/part.js:1417
+#: templates/js/translated/part.js:561 templates/js/translated/part.js:581
+#: templates/js/translated/part.js:1273 templates/js/translated/part.js:1445
+#: templates/js/translated/part.js:1461
msgid "On Order"
msgstr ""
-#: part/forms.py:59
-msgid "Select part category"
-msgstr ""
-
-#: part/forms.py:67
-msgid "Add parameter template to same level categories"
-msgstr ""
-
-#: part/forms.py:71
-msgid "Add parameter template to all categories"
-msgstr ""
-
-#: part/forms.py:92
+#: part/forms.py:60
msgid "Input quantity for price calculation"
msgstr ""
@@ -4115,7 +4141,7 @@ msgstr ""
msgid "Default keywords for parts in this category"
msgstr ""
-#: part/models.py:115 part/models.py:2413 part/templates/part/category.html:15
+#: part/models.py:115 part/models.py:2403 part/templates/part/category.html:15
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr ""
@@ -4132,7 +4158,7 @@ msgstr ""
#: part/templates/part/category_sidebar.html:9
#: templates/InvenTree/index.html:85 templates/InvenTree/search.html:82
#: templates/InvenTree/settings/sidebar.html:39
-#: templates/js/translated/part.js:1768 templates/js/translated/search.js:144
+#: templates/js/translated/part.js:1864 templates/js/translated/search.js:144
#: templates/navbar.html:24 users/models.py:37
msgid "Parts"
msgstr ""
@@ -4162,7 +4188,7 @@ msgstr ""
msgid "Duplicate IPN not allowed in part settings"
msgstr ""
-#: part/models.py:738 part/models.py:2467
+#: part/models.py:738 part/models.py:2457
msgid "Part name"
msgstr ""
@@ -4195,12 +4221,11 @@ msgstr ""
msgid "Part keywords to improve visibility in search results"
msgstr ""
-#: part/models.py:776 part/models.py:2171 part/models.py:2412
+#: part/models.py:776 part/models.py:2159 part/models.py:2402
#: part/templates/part/part_base.html:257
-#: part/templates/part/set_category.html:15
#: templates/InvenTree/notifications/notifications.html:65
#: templates/InvenTree/settings/settings.html:231
-#: templates/js/translated/part.js:1369
+#: templates/js/translated/part.js:1413 templates/js/translated/part.js:1639
msgid "Category"
msgstr ""
@@ -4209,7 +4234,7 @@ msgid "Part category"
msgstr ""
#: part/models.py:782 part/templates/part/part_base.html:266
-#: templates/js/translated/part.js:666 templates/js/translated/part.js:1322
+#: templates/js/translated/part.js:710 templates/js/translated/part.js:1366
#: templates/js/translated/stock.js:1659
msgid "IPN"
msgstr ""
@@ -4223,7 +4248,7 @@ msgid "Part revision or version number"
msgstr ""
#: part/models.py:790 part/templates/part/part_base.html:273
-#: report/models.py:170 templates/js/translated/part.js:670
+#: report/models.py:170 templates/js/translated/part.js:714
msgid "Revision"
msgstr ""
@@ -4311,317 +4336,321 @@ msgstr ""
msgid "Creation User"
msgstr ""
-#: part/models.py:1690
+#: part/models.py:1685
msgid "Sell multiple"
msgstr ""
-#: part/models.py:2218
+#: part/models.py:2206
msgid "Test templates can only be created for trackable parts"
msgstr ""
-#: part/models.py:2235
+#: part/models.py:2223
msgid "Test with this name already exists for this part"
msgstr ""
-#: part/models.py:2255 templates/js/translated/part.js:1819
+#: part/models.py:2243 templates/js/translated/part.js:1915
#: templates/js/translated/stock.js:1274
msgid "Test Name"
msgstr ""
-#: part/models.py:2256
+#: part/models.py:2244
msgid "Enter a name for the test"
msgstr ""
-#: part/models.py:2261
+#: part/models.py:2249
msgid "Test Description"
msgstr ""
-#: part/models.py:2262
+#: part/models.py:2250
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:2267 templates/js/translated/part.js:1828
+#: part/models.py:2255 templates/js/translated/part.js:1924
#: templates/js/translated/table_filters.js:294
msgid "Required"
msgstr ""
-#: part/models.py:2268
+#: part/models.py:2256
msgid "Is this test required to pass?"
msgstr ""
-#: part/models.py:2273 templates/js/translated/part.js:1836
+#: part/models.py:2261 templates/js/translated/part.js:1932
msgid "Requires Value"
msgstr ""
-#: part/models.py:2274
+#: part/models.py:2262
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:2279 templates/js/translated/part.js:1843
+#: part/models.py:2267 templates/js/translated/part.js:1939
msgid "Requires Attachment"
msgstr ""
-#: part/models.py:2280
+#: part/models.py:2268
msgid "Does this test require a file attachment when adding a test result?"
msgstr ""
-#: part/models.py:2288
+#: part/models.py:2276
#, python-brace-format
msgid "Illegal character in template name ({c})"
msgstr ""
-#: part/models.py:2324
+#: part/models.py:2312
msgid "Parameter template name must be unique"
msgstr ""
-#: part/models.py:2332
+#: part/models.py:2320
msgid "Parameter Name"
msgstr ""
-#: part/models.py:2339
+#: part/models.py:2327
msgid "Parameter Units"
msgstr ""
-#: part/models.py:2370
+#: part/models.py:2358
msgid "Parent Part"
msgstr ""
-#: part/models.py:2372 part/models.py:2418 part/models.py:2419
+#: part/models.py:2360 part/models.py:2408 part/models.py:2409
#: templates/InvenTree/settings/settings.html:226
msgid "Parameter Template"
msgstr ""
-#: part/models.py:2374
+#: part/models.py:2362
msgid "Data"
msgstr ""
-#: part/models.py:2374
+#: part/models.py:2362
msgid "Parameter Value"
msgstr ""
-#: part/models.py:2423 templates/InvenTree/settings/settings.html:235
+#: part/models.py:2413 templates/InvenTree/settings/settings.html:235
msgid "Default Value"
msgstr ""
-#: part/models.py:2424
+#: part/models.py:2414
msgid "Default Parameter Value"
msgstr ""
-#: part/models.py:2459
+#: part/models.py:2449
msgid "Part ID or part name"
msgstr ""
-#: part/models.py:2462 templates/js/translated/model_renderers.js:200
+#: part/models.py:2452 templates/js/translated/model_renderers.js:200
msgid "Part ID"
msgstr ""
-#: part/models.py:2463
+#: part/models.py:2453
msgid "Unique part ID value"
msgstr ""
-#: part/models.py:2466
+#: part/models.py:2456
msgid "Part Name"
msgstr ""
-#: part/models.py:2470
+#: part/models.py:2460
msgid "Part IPN"
msgstr ""
-#: part/models.py:2471
+#: part/models.py:2461
msgid "Part IPN value"
msgstr ""
-#: part/models.py:2474
+#: part/models.py:2464
msgid "Level"
msgstr ""
-#: part/models.py:2475
+#: part/models.py:2465
msgid "BOM level"
msgstr ""
-#: part/models.py:2544
+#: part/models.py:2534
msgid "Select parent part"
msgstr ""
-#: part/models.py:2552
+#: part/models.py:2542
msgid "Sub part"
msgstr ""
-#: part/models.py:2553
+#: part/models.py:2543
msgid "Select part to be used in BOM"
msgstr ""
-#: part/models.py:2559
+#: part/models.py:2549
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:2561 part/templates/part/upload_bom.html:58
+#: part/models.py:2551 part/templates/part/upload_bom.html:58
#: templates/js/translated/bom.js:877 templates/js/translated/bom.js:971
#: templates/js/translated/table_filters.js:92
msgid "Optional"
msgstr ""
-#: part/models.py:2561
+#: part/models.py:2551
msgid "This BOM item is optional"
msgstr ""
-#: part/models.py:2564 part/templates/part/upload_bom.html:55
+#: part/models.py:2554 part/templates/part/upload_bom.html:55
msgid "Overage"
msgstr ""
-#: part/models.py:2565
+#: part/models.py:2555
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr ""
-#: part/models.py:2568
+#: part/models.py:2558
msgid "BOM item reference"
msgstr ""
-#: part/models.py:2571
+#: part/models.py:2561
msgid "BOM item notes"
msgstr ""
-#: part/models.py:2573
+#: part/models.py:2563
msgid "Checksum"
msgstr ""
-#: part/models.py:2573
+#: part/models.py:2563
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:2577 part/templates/part/upload_bom.html:57
+#: part/models.py:2567 part/templates/part/upload_bom.html:57
#: templates/js/translated/bom.js:988
#: templates/js/translated/table_filters.js:68
#: templates/js/translated/table_filters.js:88
msgid "Inherited"
msgstr ""
-#: part/models.py:2578
+#: part/models.py:2568
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr ""
-#: part/models.py:2583 part/templates/part/upload_bom.html:56
+#: part/models.py:2573 part/templates/part/upload_bom.html:56
#: templates/js/translated/bom.js:980
msgid "Allow Variants"
msgstr ""
-#: part/models.py:2584
+#: part/models.py:2574
msgid "Stock items for variant parts can be used for this BOM item"
msgstr ""
-#: part/models.py:2662 stock/models.py:460
+#: part/models.py:2652 stock/models.py:460
msgid "Quantity must be integer value for trackable parts"
msgstr ""
-#: part/models.py:2671 part/models.py:2673
+#: part/models.py:2661 part/models.py:2663
msgid "Sub part must be specified"
msgstr ""
-#: part/models.py:2778
+#: part/models.py:2768
msgid "BOM Item Substitute"
msgstr ""
-#: part/models.py:2799
+#: part/models.py:2789
msgid "Substitute part cannot be the same as the master part"
msgstr ""
-#: part/models.py:2812
+#: part/models.py:2802
msgid "Parent BOM item"
msgstr ""
-#: part/models.py:2820
+#: part/models.py:2810
msgid "Substitute part"
msgstr ""
-#: part/models.py:2831
+#: part/models.py:2825
msgid "Part 1"
msgstr ""
-#: part/models.py:2835
+#: part/models.py:2829
msgid "Part 2"
msgstr ""
-#: part/models.py:2835
+#: part/models.py:2829
msgid "Select Related Part"
msgstr ""
-#: part/models.py:2866
-msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique"
+#: part/models.py:2847
+msgid "Part relationship cannot be created between a part and itself"
msgstr ""
-#: part/serializers.py:138 part/serializers.py:169 stock/serializers.py:163
+#: part/models.py:2851
+msgid "Duplicate relationship already exists"
+msgstr ""
+
+#: part/serializers.py:140 part/serializers.py:171 stock/serializers.py:163
msgid "Purchase currency of this stock item"
msgstr ""
-#: part/serializers.py:794
+#: part/serializers.py:796
msgid "Select part to copy BOM from"
msgstr ""
-#: part/serializers.py:802
+#: part/serializers.py:804
msgid "Remove Existing Data"
msgstr ""
-#: part/serializers.py:803
+#: part/serializers.py:805
msgid "Remove existing BOM items before copying"
msgstr ""
-#: part/serializers.py:808
+#: part/serializers.py:810
msgid "Include Inherited"
msgstr ""
-#: part/serializers.py:809
+#: part/serializers.py:811
msgid "Include BOM items which are inherited from templated parts"
msgstr ""
-#: part/serializers.py:814
+#: part/serializers.py:816
msgid "Skip Invalid Rows"
msgstr ""
-#: part/serializers.py:815
+#: part/serializers.py:817
msgid "Enable this option to skip invalid rows"
msgstr ""
-#: part/serializers.py:820
+#: part/serializers.py:822
msgid "Copy Substitute Parts"
msgstr ""
-#: part/serializers.py:821
+#: part/serializers.py:823
msgid "Copy substitute parts when duplicate BOM items"
msgstr ""
-#: part/serializers.py:861
+#: part/serializers.py:863
msgid "Clear Existing BOM"
msgstr ""
-#: part/serializers.py:862
+#: part/serializers.py:864
msgid "Delete existing BOM items before uploading"
msgstr ""
-#: part/serializers.py:892
+#: part/serializers.py:894
msgid "No part column specified"
msgstr ""
-#: part/serializers.py:935
+#: part/serializers.py:937
msgid "Multiple matching parts found"
msgstr ""
-#: part/serializers.py:938
+#: part/serializers.py:940
msgid "No matching part found"
msgstr ""
-#: part/serializers.py:941
+#: part/serializers.py:943
msgid "Part is not designated as a component"
msgstr ""
-#: part/serializers.py:950
+#: part/serializers.py:952
msgid "Quantity not provided"
msgstr ""
-#: part/serializers.py:958
+#: part/serializers.py:960
msgid "Invalid quantity"
msgstr ""
-#: part/serializers.py:979
+#: part/serializers.py:981
msgid "At least one BOM item is required"
msgstr ""
@@ -5100,7 +5129,7 @@ msgstr ""
#: templates/js/translated/company.js:623
#: templates/js/translated/company.js:882
#: templates/js/translated/model_renderers.js:192
-#: templates/js/translated/part.js:581 templates/js/translated/part.js:658
+#: templates/js/translated/part.js:625 templates/js/translated/part.js:702
msgid "Inactive"
msgstr ""
@@ -5133,9 +5162,9 @@ msgstr ""
msgid "Can Build"
msgstr ""
-#: part/templates/part/part_base.html:238 templates/js/translated/part.js:520
-#: templates/js/translated/part.js:540 templates/js/translated/part.js:1233
-#: templates/js/translated/part.js:1405 templates/js/translated/part.js:1421
+#: part/templates/part/part_base.html:238 templates/js/translated/part.js:564
+#: templates/js/translated/part.js:584 templates/js/translated/part.js:1277
+#: templates/js/translated/part.js:1449 templates/js/translated/part.js:1465
msgid "Building"
msgstr ""
@@ -5152,7 +5181,7 @@ msgstr ""
msgid "Search for serial number"
msgstr ""
-#: part/templates/part/part_base.html:443 part/templates/part/prices.html:147
+#: part/templates/part/part_base.html:443 part/templates/part/prices.html:149
msgid "Calculate"
msgstr ""
@@ -5170,19 +5199,19 @@ msgstr ""
#: part/templates/part/part_pricing.html:26
#: part/templates/part/part_pricing.html:52
-#: part/templates/part/part_pricing.html:100
-#: part/templates/part/part_pricing.html:115 part/templates/part/prices.html:28
-#: part/templates/part/prices.html:55 part/templates/part/prices.html:106
-#: part/templates/part/prices.html:123
+#: part/templates/part/part_pricing.html:103
+#: part/templates/part/part_pricing.html:118 part/templates/part/prices.html:28
+#: part/templates/part/prices.html:55 part/templates/part/prices.html:108
+#: part/templates/part/prices.html:125
msgid "Unit Cost"
msgstr ""
#: part/templates/part/part_pricing.html:32
#: part/templates/part/part_pricing.html:58
-#: part/templates/part/part_pricing.html:104
-#: part/templates/part/part_pricing.html:119 part/templates/part/prices.html:35
-#: part/templates/part/prices.html:62 part/templates/part/prices.html:111
-#: part/templates/part/prices.html:128
+#: part/templates/part/part_pricing.html:107
+#: part/templates/part/part_pricing.html:122 part/templates/part/prices.html:35
+#: part/templates/part/prices.html:62 part/templates/part/prices.html:113
+#: part/templates/part/prices.html:130
msgid "Total Cost"
msgstr ""
@@ -5192,32 +5221,33 @@ msgid "No supplier pricing available"
msgstr ""
#: part/templates/part/part_pricing.html:48 part/templates/part/prices.html:52
-#: part/templates/part/prices.html:246
+#: part/templates/part/prices.html:248
msgid "BOM Pricing"
msgstr ""
-#: part/templates/part/part_pricing.html:65 part/templates/part/prices.html:72
+#: part/templates/part/part_pricing.html:66 part/templates/part/prices.html:72
msgid "Unit Purchase Price"
msgstr ""
-#: part/templates/part/part_pricing.html:71 part/templates/part/prices.html:79
+#: part/templates/part/part_pricing.html:72 part/templates/part/prices.html:79
msgid "Total Purchase Price"
msgstr ""
-#: part/templates/part/part_pricing.html:81 part/templates/part/prices.html:89
+#: part/templates/part/part_pricing.html:82 part/templates/part/prices.html:89
msgid "Note: BOM pricing is incomplete for this part"
msgstr ""
-#: part/templates/part/part_pricing.html:88 part/templates/part/prices.html:96
+#: part/templates/part/part_pricing.html:91 part/templates/part/prices.html:98
msgid "No BOM pricing available"
msgstr ""
-#: part/templates/part/part_pricing.html:97 part/templates/part/prices.html:105
+#: part/templates/part/part_pricing.html:100
+#: part/templates/part/prices.html:107
msgid "Internal Price"
msgstr ""
-#: part/templates/part/part_pricing.html:128
-#: part/templates/part/prices.html:137
+#: part/templates/part/part_pricing.html:131
+#: part/templates/part/prices.html:139
msgid "No pricing information is available for this part."
msgstr ""
@@ -5241,44 +5271,6 @@ msgstr ""
msgid "Select from existing images"
msgstr ""
-#: part/templates/part/partial_delete.html:9
-#, python-format
-msgid ""
-"Part '%(full_name)s' cannot be deleted as it is still marked as active.\n"
-"
Disable the \"Active\" part attribute and re-try.\n"
-" "
-msgstr ""
-
-#: part/templates/part/partial_delete.html:17
-#, python-format
-msgid "Are you sure you want to delete part '%(full_name)s'?"
-msgstr ""
-
-#: part/templates/part/partial_delete.html:22
-#, python-format
-msgid "This part is used in BOMs for %(count)s other parts. If you delete this part, the BOMs for the following parts will be updated"
-msgstr ""
-
-#: part/templates/part/partial_delete.html:32
-#, python-format
-msgid "There are %(count)s stock entries defined for this part. If you delete this part, the following stock entries will also be deleted:"
-msgstr ""
-
-#: part/templates/part/partial_delete.html:43
-#, python-format
-msgid "There are %(count)s manufacturers defined for this part. If you delete this part, the following manufacturer parts will also be deleted:"
-msgstr ""
-
-#: part/templates/part/partial_delete.html:54
-#, python-format
-msgid "There are %(count)s suppliers defined for this part. If you delete this part, the following supplier parts will also be deleted:"
-msgstr ""
-
-#: part/templates/part/partial_delete.html:67
-#, python-format
-msgid "There are %(count)s unique parts tracked for '%(full_name)s'. Deleting this part will permanently remove this tracking information."
-msgstr ""
-
#: part/templates/part/prices.html:19
msgid "Pricing ranges"
msgstr ""
@@ -5295,66 +5287,58 @@ msgstr ""
msgid "Show BOM cost"
msgstr ""
-#: part/templates/part/prices.html:120
+#: part/templates/part/prices.html:122
msgid "Show sale cost"
msgstr ""
-#: part/templates/part/prices.html:121
+#: part/templates/part/prices.html:123
msgid "Show sale price"
msgstr ""
-#: part/templates/part/prices.html:143
+#: part/templates/part/prices.html:145
msgid "Calculation parameters"
msgstr ""
-#: part/templates/part/prices.html:158 templates/js/translated/bom.js:957
+#: part/templates/part/prices.html:160 templates/js/translated/bom.js:957
msgid "Supplier Cost"
msgstr ""
-#: part/templates/part/prices.html:159 part/templates/part/prices.html:180
-#: part/templates/part/prices.html:204 part/templates/part/prices.html:234
-#: part/templates/part/prices.html:260 part/templates/part/prices.html:289
+#: part/templates/part/prices.html:161 part/templates/part/prices.html:182
+#: part/templates/part/prices.html:206 part/templates/part/prices.html:236
+#: part/templates/part/prices.html:262 part/templates/part/prices.html:291
msgid "Jump to overview"
msgstr ""
-#: part/templates/part/prices.html:184
+#: part/templates/part/prices.html:186
msgid "Stock Pricing"
msgstr ""
-#: part/templates/part/prices.html:193
+#: part/templates/part/prices.html:195
msgid "No stock pricing history is available for this part."
msgstr ""
-#: part/templates/part/prices.html:203
+#: part/templates/part/prices.html:205
msgid "Internal Cost"
msgstr ""
-#: part/templates/part/prices.html:218
+#: part/templates/part/prices.html:220
msgid "Add Internal Price Break"
msgstr ""
-#: part/templates/part/prices.html:233
+#: part/templates/part/prices.html:235
msgid "BOM Cost"
msgstr ""
-#: part/templates/part/prices.html:259
+#: part/templates/part/prices.html:261
msgid "Sale Cost"
msgstr ""
-#: part/templates/part/prices.html:300
+#: part/templates/part/prices.html:302
msgid "No sale pice history available for this part."
msgstr ""
-#: part/templates/part/set_category.html:9
-msgid "Set category for the following parts"
-msgstr ""
-
-#: part/templates/part/set_category.html:32
-msgid "Remove part"
-msgstr ""
-
-#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:543
-#: templates/js/translated/part.js:1221 templates/js/translated/part.js:1425
+#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:587
+#: templates/js/translated/part.js:1265 templates/js/translated/part.js:1469
msgid "No Stock"
msgstr ""
@@ -5417,71 +5401,42 @@ msgstr ""
msgid "{title} v{version}"
msgstr ""
-#: part/views.py:76
-msgid "Set Part Category"
-msgstr ""
-
-#: part/views.py:124
-#, python-brace-format
-msgid "Set category for {n} parts"
-msgstr ""
-
-#: part/views.py:195
+#: part/views.py:118
msgid "Match References"
msgstr ""
-#: part/views.py:496
+#: part/views.py:419
msgid "None"
msgstr ""
-#: part/views.py:558
+#: part/views.py:481
msgid "Part QR Code"
msgstr ""
-#: part/views.py:652
+#: part/views.py:575
msgid "Select Part Image"
msgstr ""
-#: part/views.py:678
+#: part/views.py:601
msgid "Updated part image"
msgstr ""
-#: part/views.py:681
+#: part/views.py:604
msgid "Part image not found"
msgstr ""
-#: part/views.py:770
-msgid "Confirm Part Deletion"
-msgstr ""
-
-#: part/views.py:778
-msgid "Part was deleted"
-msgstr ""
-
-#: part/views.py:787
+#: part/views.py:693
msgid "Part Pricing"
msgstr ""
-#: part/views.py:978
+#: part/views.py:884
msgid "Delete Part Category"
msgstr ""
-#: part/views.py:985
+#: part/views.py:891
msgid "Part category was deleted"
msgstr ""
-#: part/views.py:994
-msgid "Create Category Parameter Template"
-msgstr ""
-
-#: part/views.py:1094
-msgid "Edit Category Parameter Template"
-msgstr ""
-
-#: part/views.py:1155
-msgid "Delete Category Parameter Template"
-msgstr ""
-
#: plugin/apps.py:56
msgid "Your enviroment has an outdated git version. This prevents InvenTree from loading plugin details."
msgstr ""
@@ -5538,21 +5493,21 @@ msgstr ""
msgid "Label printing failed"
msgstr ""
-#: plugin/builtin/integration/core_notifications.py:28
+#: plugin/builtin/integration/core_notifications.py:29
msgid "InvenTree contributors"
msgstr ""
-#: plugin/builtin/integration/core_notifications.py:29
+#: plugin/builtin/integration/core_notifications.py:30
msgid "Integrated outgoing notificaton methods"
msgstr ""
-#: plugin/builtin/integration/core_notifications.py:33
-#: plugin/builtin/integration/core_notifications.py:52
-msgid "Enable email notifications"
-msgstr ""
-
#: plugin/builtin/integration/core_notifications.py:34
#: plugin/builtin/integration/core_notifications.py:53
+msgid "Enable email notifications"
+msgstr ""
+
+#: plugin/builtin/integration/core_notifications.py:35
+#: plugin/builtin/integration/core_notifications.py:54
msgid "Allow sending of emails for event notifications"
msgstr ""
@@ -5668,15 +5623,19 @@ msgstr ""
msgid "Either packagename of URL must be provided"
msgstr ""
-#: report/api.py:166
+#: report/api.py:179
msgid "No valid objects provided to template"
msgstr ""
-#: report/api.py:198 report/api.py:239
+#: report/api.py:215 report/api.py:256
#, python-brace-format
msgid "Template file '{template}' is missing or does not exist"
msgstr ""
+#: report/api.py:359
+msgid "Test report"
+msgstr ""
+
#: report/models.py:152
msgid "Template name"
msgstr ""
@@ -5788,12 +5747,12 @@ msgid "Test Results"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:93
-#: stock/models.py:2068
+#: stock/models.py:2072
msgid "Test"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:94
-#: stock/models.py:2074
+#: stock/models.py:2078
msgid "Result"
msgstr ""
@@ -5993,79 +5952,79 @@ msgstr ""
msgid "Serial numbers already exist: {exists}"
msgstr ""
-#: stock/models.py:1321
+#: stock/models.py:1325
msgid "Stock item has been assigned to a sales order"
msgstr ""
-#: stock/models.py:1324
+#: stock/models.py:1328
msgid "Stock item is installed in another item"
msgstr ""
-#: stock/models.py:1327
+#: stock/models.py:1331
msgid "Stock item contains other items"
msgstr ""
-#: stock/models.py:1330
+#: stock/models.py:1334
msgid "Stock item has been assigned to a customer"
msgstr ""
-#: stock/models.py:1333
+#: stock/models.py:1337
msgid "Stock item is currently in production"
msgstr ""
-#: stock/models.py:1336
+#: stock/models.py:1340
msgid "Serialized stock cannot be merged"
msgstr ""
-#: stock/models.py:1343 stock/serializers.py:908
+#: stock/models.py:1347 stock/serializers.py:895
msgid "Duplicate stock items"
msgstr ""
-#: stock/models.py:1347
+#: stock/models.py:1351
msgid "Stock items must refer to the same part"
msgstr ""
-#: stock/models.py:1351
+#: stock/models.py:1355
msgid "Stock items must refer to the same supplier part"
msgstr ""
-#: stock/models.py:1355
+#: stock/models.py:1359
msgid "Stock status codes must match"
msgstr ""
-#: stock/models.py:1524
+#: stock/models.py:1528
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:1986
+#: stock/models.py:1990
msgid "Entry notes"
msgstr ""
-#: stock/models.py:2044
+#: stock/models.py:2048
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:2050
+#: stock/models.py:2054
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:2069
+#: stock/models.py:2073
msgid "Test name"
msgstr ""
-#: stock/models.py:2075
+#: stock/models.py:2079
msgid "Test result"
msgstr ""
-#: stock/models.py:2081
+#: stock/models.py:2085
msgid "Test output value"
msgstr ""
-#: stock/models.py:2088
+#: stock/models.py:2092
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:2094
+#: stock/models.py:2098
msgid "Test notes"
msgstr ""
@@ -6086,7 +6045,7 @@ msgstr ""
msgid "Enter serial numbers for new items"
msgstr ""
-#: stock/serializers.py:309 stock/serializers.py:865 stock/serializers.py:1098
+#: stock/serializers.py:309 stock/serializers.py:852 stock/serializers.py:1085
msgid "Destination stock location"
msgstr ""
@@ -6126,63 +6085,63 @@ msgstr ""
msgid "Destination location for returned item"
msgstr ""
-#: stock/serializers.py:720
+#: stock/serializers.py:707
msgid "Part must be salable"
msgstr ""
-#: stock/serializers.py:724
+#: stock/serializers.py:711
msgid "Item is allocated to a sales order"
msgstr ""
-#: stock/serializers.py:728
+#: stock/serializers.py:715
msgid "Item is allocated to a build order"
msgstr ""
-#: stock/serializers.py:759
+#: stock/serializers.py:746
msgid "Customer to assign stock items"
msgstr ""
-#: stock/serializers.py:765
+#: stock/serializers.py:752
msgid "Selected company is not a customer"
msgstr ""
-#: stock/serializers.py:773
+#: stock/serializers.py:760
msgid "Stock assignment notes"
msgstr ""
-#: stock/serializers.py:783 stock/serializers.py:1014
+#: stock/serializers.py:770 stock/serializers.py:1001
msgid "A list of stock items must be provided"
msgstr ""
-#: stock/serializers.py:872
+#: stock/serializers.py:859
msgid "Stock merging notes"
msgstr ""
-#: stock/serializers.py:877
+#: stock/serializers.py:864
msgid "Allow mismatched suppliers"
msgstr ""
-#: stock/serializers.py:878
+#: stock/serializers.py:865
msgid "Allow stock items with different supplier parts to be merged"
msgstr ""
-#: stock/serializers.py:883
+#: stock/serializers.py:870
msgid "Allow mismatched status"
msgstr ""
-#: stock/serializers.py:884
+#: stock/serializers.py:871
msgid "Allow stock items with different status codes to be merged"
msgstr ""
-#: stock/serializers.py:894
+#: stock/serializers.py:881
msgid "At least two stock items must be provided"
msgstr ""
-#: stock/serializers.py:976
+#: stock/serializers.py:963
msgid "StockItem primary key value"
msgstr ""
-#: stock/serializers.py:1004
+#: stock/serializers.py:991
msgid "Stock transaction notes"
msgstr ""
@@ -6207,7 +6166,7 @@ msgstr ""
msgid "Test Report"
msgstr ""
-#: stock/templates/stock/item.html:94
+#: stock/templates/stock/item.html:94 stock/templates/stock/item.html:295
msgid "Delete Test Data"
msgstr ""
@@ -6223,7 +6182,11 @@ msgstr ""
msgid "Install Stock Item"
msgstr ""
-#: stock/templates/stock/item.html:292 templates/js/translated/stock.js:1455
+#: stock/templates/stock/item.html:290
+msgid "Delete all test results for this stock item"
+msgstr ""
+
+#: stock/templates/stock/item.html:331 templates/js/translated/stock.js:1455
msgid "Add Test Result"
msgstr ""
@@ -6551,7 +6514,7 @@ msgstr ""
msgid "Child Items"
msgstr ""
-#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:182
+#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:144
msgid "Convert Stock Item"
msgstr ""
@@ -6572,31 +6535,19 @@ msgstr ""
msgid "This action cannot be easily undone"
msgstr ""
-#: stock/views.py:113
+#: stock/views.py:111
msgid "Stock Location QR code"
msgstr ""
-#: stock/views.py:131
-msgid "Delete All Test Data"
-msgstr ""
-
-#: stock/views.py:149
-msgid "Confirm test data deletion"
-msgstr ""
-
-#: stock/views.py:150
-msgid "Check the confirmation box"
-msgstr ""
-
-#: stock/views.py:165
+#: stock/views.py:127
msgid "Stock Item QR Code"
msgstr ""
-#: stock/views.py:216
+#: stock/views.py:178
msgid "Delete Stock Location"
msgstr ""
-#: stock/views.py:229
+#: stock/views.py:191
msgid "Delete Stock Item"
msgstr ""
@@ -6731,7 +6682,7 @@ msgid "Notifications"
msgstr ""
#: templates/InvenTree/notifications/notifications.html:51
-#: templates/InvenTree/settings/settings.html:321
+#: templates/InvenTree/settings/settings.html:340
msgid "ID"
msgstr ""
@@ -7005,32 +6956,40 @@ msgid "No category parameter templates found"
msgstr ""
#: templates/InvenTree/settings/settings.html:238
-#: templates/InvenTree/settings/settings.html:337
+#: templates/InvenTree/settings/settings.html:356
msgid "Edit Template"
msgstr ""
#: templates/InvenTree/settings/settings.html:239
-#: templates/InvenTree/settings/settings.html:338
+#: templates/InvenTree/settings/settings.html:357
msgid "Delete Template"
msgstr ""
-#: templates/InvenTree/settings/settings.html:317
+#: templates/InvenTree/settings/settings.html:279
+msgid "Create Category Parameter Template"
+msgstr ""
+
+#: templates/InvenTree/settings/settings.html:324
+msgid "Delete Category Parameter Template"
+msgstr ""
+
+#: templates/InvenTree/settings/settings.html:336
msgid "No part parameter templates found"
msgstr ""
-#: templates/InvenTree/settings/settings.html:355
+#: templates/InvenTree/settings/settings.html:374
msgid "Create Part Parameter Template"
msgstr ""
-#: templates/InvenTree/settings/settings.html:373
+#: templates/InvenTree/settings/settings.html:392
msgid "Edit Part Parameter Template"
msgstr ""
-#: templates/InvenTree/settings/settings.html:387
+#: templates/InvenTree/settings/settings.html:406
msgid "Any parameters which reference this template will also be deleted"
msgstr ""
-#: templates/InvenTree/settings/settings.html:395
+#: templates/InvenTree/settings/settings.html:414
msgid "Delete Part Parameter Template"
msgstr ""
@@ -7331,8 +7290,8 @@ msgstr ""
#: templates/about.html:11 templates/about.html:105
#: templates/js/translated/bom.js:133 templates/js/translated/bom.js:621
-#: templates/js/translated/modals.js:56 templates/js/translated/modals.js:595
-#: templates/js/translated/modals.js:689 templates/js/translated/modals.js:997
+#: templates/js/translated/modals.js:56 templates/js/translated/modals.js:601
+#: templates/js/translated/modals.js:695 templates/js/translated/modals.js:1003
#: templates/js/translated/order.js:928 templates/modals.html:15
#: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50
msgid "Close"
@@ -7404,6 +7363,10 @@ msgstr ""
msgid "Please confirm that %(email)s is an email address for user %(user_display)s."
msgstr ""
+#: templates/account/email_confirm.html:20 templates/js/translated/forms.js:630
+msgid "Confirm"
+msgstr ""
+
#: templates/account/email_confirm.html:27
#, python-format
msgid "This email confirmation link expired or is invalid. Please issue a new email confirmation request."
@@ -7619,8 +7582,8 @@ msgstr ""
#: templates/email/build_order_required_stock.html:19
#: templates/email/low_stock_notification.html:18
#: templates/js/translated/bom.js:890 templates/js/translated/build.js:1787
-#: templates/js/translated/build.js:2650 templates/js/translated/part.js:527
-#: templates/js/translated/part.js:530
+#: templates/js/translated/build.js:2650 templates/js/translated/part.js:571
+#: templates/js/translated/part.js:574
#: templates/js/translated/table_filters.js:178
msgid "Available"
msgstr ""
@@ -7638,6 +7601,12 @@ msgstr ""
msgid "Minimum Quantity"
msgstr ""
+#: templates/email/overdue_build_order.html:9
+#: templates/email/overdue_purchase_order.html:9
+#: templates/email/overdue_sales_order.html:9
+msgid "Click on the following link to view this order"
+msgstr ""
+
#: templates/image_download.html:8
msgid "Specify URL for downloading image"
msgstr ""
@@ -7654,11 +7623,11 @@ msgstr ""
msgid "Remote image must not exceed maximum allowable file size"
msgstr ""
-#: templates/js/translated/api.js:235 templates/js/translated/modals.js:1067
+#: templates/js/translated/api.js:235 templates/js/translated/modals.js:1073
msgid "No Response"
msgstr ""
-#: templates/js/translated/api.js:236 templates/js/translated/modals.js:1068
+#: templates/js/translated/api.js:236 templates/js/translated/modals.js:1074
msgid "No response from the InvenTree server"
msgstr ""
@@ -7670,27 +7639,27 @@ msgstr ""
msgid "API request returned error code 400"
msgstr ""
-#: templates/js/translated/api.js:247 templates/js/translated/modals.js:1077
+#: templates/js/translated/api.js:247 templates/js/translated/modals.js:1083
msgid "Error 401: Not Authenticated"
msgstr ""
-#: templates/js/translated/api.js:248 templates/js/translated/modals.js:1078
+#: templates/js/translated/api.js:248 templates/js/translated/modals.js:1084
msgid "Authentication credentials not supplied"
msgstr ""
-#: templates/js/translated/api.js:252 templates/js/translated/modals.js:1082
+#: templates/js/translated/api.js:252 templates/js/translated/modals.js:1088
msgid "Error 403: Permission Denied"
msgstr ""
-#: templates/js/translated/api.js:253 templates/js/translated/modals.js:1083
+#: templates/js/translated/api.js:253 templates/js/translated/modals.js:1089
msgid "You do not have the required permissions to access this function"
msgstr ""
-#: templates/js/translated/api.js:257 templates/js/translated/modals.js:1087
+#: templates/js/translated/api.js:257 templates/js/translated/modals.js:1093
msgid "Error 404: Resource Not Found"
msgstr ""
-#: templates/js/translated/api.js:258 templates/js/translated/modals.js:1088
+#: templates/js/translated/api.js:258 templates/js/translated/modals.js:1094
msgid "The requested resource could not be located on the server"
msgstr ""
@@ -7702,11 +7671,11 @@ msgstr ""
msgid "HTTP method not allowed at URL"
msgstr ""
-#: templates/js/translated/api.js:267 templates/js/translated/modals.js:1092
+#: templates/js/translated/api.js:267 templates/js/translated/modals.js:1098
msgid "Error 408: Timeout"
msgstr ""
-#: templates/js/translated/api.js:268 templates/js/translated/modals.js:1093
+#: templates/js/translated/api.js:268 templates/js/translated/modals.js:1099
msgid "Connection timeout while requesting data from server"
msgstr ""
@@ -7734,11 +7703,11 @@ msgstr ""
msgid "Upload Date"
msgstr ""
-#: templates/js/translated/attachment.js:262
+#: templates/js/translated/attachment.js:268
msgid "Edit attachment"
msgstr ""
-#: templates/js/translated/attachment.js:269
+#: templates/js/translated/attachment.js:275
msgid "Delete attachment"
msgstr ""
@@ -7771,7 +7740,7 @@ msgid "Unknown response from server"
msgstr ""
#: templates/js/translated/barcode.js:182
-#: templates/js/translated/modals.js:1057
+#: templates/js/translated/modals.js:1063
msgid "Invalid server response"
msgstr ""
@@ -7964,7 +7933,7 @@ msgid "Includes variant and substitute stock"
msgstr ""
#: templates/js/translated/bom.js:912 templates/js/translated/build.js:1820
-#: templates/js/translated/part.js:690
+#: templates/js/translated/part.js:734
msgid "Includes variant stock"
msgstr ""
@@ -8275,8 +8244,8 @@ msgstr ""
msgid "No builds matching query"
msgstr ""
-#: templates/js/translated/build.js:2448 templates/js/translated/part.js:1314
-#: templates/js/translated/part.js:1729 templates/js/translated/stock.js:1619
+#: templates/js/translated/build.js:2448 templates/js/translated/part.js:1358
+#: templates/js/translated/part.js:1825 templates/js/translated/stock.js:1619
#: templates/js/translated/stock.js:2277
msgid "Select"
msgstr ""
@@ -8370,34 +8339,34 @@ msgid "No manufacturer parts found"
msgstr ""
#: templates/js/translated/company.js:615
-#: templates/js/translated/company.js:874 templates/js/translated/part.js:565
-#: templates/js/translated/part.js:650
+#: templates/js/translated/company.js:874 templates/js/translated/part.js:609
+#: templates/js/translated/part.js:694
msgid "Template part"
msgstr ""
#: templates/js/translated/company.js:619
-#: templates/js/translated/company.js:878 templates/js/translated/part.js:569
-#: templates/js/translated/part.js:654
+#: templates/js/translated/company.js:878 templates/js/translated/part.js:613
+#: templates/js/translated/part.js:698
msgid "Assembled part"
msgstr ""
-#: templates/js/translated/company.js:747 templates/js/translated/part.js:757
+#: templates/js/translated/company.js:747 templates/js/translated/part.js:801
msgid "No parameters found"
msgstr ""
-#: templates/js/translated/company.js:784 templates/js/translated/part.js:799
+#: templates/js/translated/company.js:784 templates/js/translated/part.js:843
msgid "Edit parameter"
msgstr ""
-#: templates/js/translated/company.js:785 templates/js/translated/part.js:800
+#: templates/js/translated/company.js:785 templates/js/translated/part.js:844
msgid "Delete parameter"
msgstr ""
-#: templates/js/translated/company.js:804 templates/js/translated/part.js:817
+#: templates/js/translated/company.js:804 templates/js/translated/part.js:861
msgid "Edit Parameter"
msgstr ""
-#: templates/js/translated/company.js:815 templates/js/translated/part.js:829
+#: templates/js/translated/company.js:815 templates/js/translated/part.js:873
msgid "Delete Parameter"
msgstr ""
@@ -8568,12 +8537,12 @@ msgid "Select Label Template"
msgstr ""
#: templates/js/translated/modals.js:82 templates/js/translated/modals.js:142
-#: templates/js/translated/modals.js:621
+#: templates/js/translated/modals.js:627
msgid "Cancel"
msgstr ""
#: templates/js/translated/modals.js:83 templates/js/translated/modals.js:141
-#: templates/js/translated/modals.js:688 templates/js/translated/modals.js:996
+#: templates/js/translated/modals.js:694 templates/js/translated/modals.js:1002
#: templates/modals.html:28 templates/modals.html:51
msgid "Submit"
msgstr ""
@@ -8582,47 +8551,47 @@ msgstr ""
msgid "Form Title"
msgstr ""
-#: templates/js/translated/modals.js:403
+#: templates/js/translated/modals.js:421
msgid "Waiting for server..."
msgstr ""
-#: templates/js/translated/modals.js:562
+#: templates/js/translated/modals.js:568
msgid "Show Error Information"
msgstr ""
-#: templates/js/translated/modals.js:620
+#: templates/js/translated/modals.js:626
msgid "Accept"
msgstr ""
-#: templates/js/translated/modals.js:677
+#: templates/js/translated/modals.js:683
msgid "Loading Data"
msgstr ""
-#: templates/js/translated/modals.js:948
+#: templates/js/translated/modals.js:954
msgid "Invalid response from server"
msgstr ""
-#: templates/js/translated/modals.js:948
+#: templates/js/translated/modals.js:954
msgid "Form data missing from server response"
msgstr ""
-#: templates/js/translated/modals.js:960
+#: templates/js/translated/modals.js:966
msgid "Error posting form data"
msgstr ""
-#: templates/js/translated/modals.js:1057
+#: templates/js/translated/modals.js:1063
msgid "JSON response missing form data"
msgstr ""
-#: templates/js/translated/modals.js:1072
+#: templates/js/translated/modals.js:1078
msgid "Error 400: Bad Request"
msgstr ""
-#: templates/js/translated/modals.js:1073
+#: templates/js/translated/modals.js:1079
msgid "Server returned error code 400"
msgstr ""
-#: templates/js/translated/modals.js:1096
+#: templates/js/translated/modals.js:1102
msgid "Error requesting form data"
msgstr ""
@@ -8672,11 +8641,11 @@ msgstr ""
msgid "Mark as read"
msgstr ""
-#: templates/js/translated/notification.js:259
+#: templates/js/translated/notification.js:260
msgid "No unread notifications"
msgstr ""
-#: templates/js/translated/notification.js:300 templates/notifications.html:10
+#: templates/js/translated/notification.js:302 templates/notifications.html:10
msgid "Notifications will load here"
msgstr ""
@@ -8844,7 +8813,7 @@ msgstr ""
msgid "Receive Purchase Order Items"
msgstr ""
-#: templates/js/translated/order.js:1602 templates/js/translated/part.js:870
+#: templates/js/translated/order.js:1602 templates/js/translated/part.js:914
msgid "No purchase orders found"
msgstr ""
@@ -8879,7 +8848,7 @@ msgstr ""
#: templates/js/translated/order.js:1937 templates/js/translated/order.js:2139
#: templates/js/translated/order.js:3467 templates/js/translated/order.js:3978
-#: templates/js/translated/part.js:1948 templates/js/translated/part.js:2301
+#: templates/js/translated/part.js:2044 templates/js/translated/part.js:2397
msgid "Unit Price"
msgstr ""
@@ -8889,11 +8858,11 @@ msgid "Total Price"
msgstr ""
#: templates/js/translated/order.js:1993 templates/js/translated/order.js:3525
-#: templates/js/translated/part.js:979
+#: templates/js/translated/part.js:1023
msgid "This line item is overdue"
msgstr ""
-#: templates/js/translated/order.js:2052 templates/js/translated/part.js:1025
+#: templates/js/translated/order.js:2052 templates/js/translated/part.js:1069
msgid "Receive line item"
msgstr ""
@@ -9154,165 +9123,209 @@ msgstr ""
msgid "Create Part Variant"
msgstr ""
+#: templates/js/translated/part.js:405
+msgid "Active Part"
+msgstr ""
+
+#: templates/js/translated/part.js:406
+msgid "Part cannot be deleted as it is currently active"
+msgstr ""
+
+#: templates/js/translated/part.js:420
+msgid "Deleting this part cannot be reversed"
+msgstr ""
+
+#: templates/js/translated/part.js:422
+msgid "Any stock items for this part will be deleted"
+msgstr ""
+
#: templates/js/translated/part.js:423
+msgid "This part will be removed from any Bills of Material"
+msgstr ""
+
+#: templates/js/translated/part.js:424
+msgid "All manufacturer and supplier information for this part will be deleted"
+msgstr ""
+
+#: templates/js/translated/part.js:431
+msgid "Delete Part"
+msgstr ""
+
+#: templates/js/translated/part.js:467
msgid "You are subscribed to notifications for this item"
msgstr ""
-#: templates/js/translated/part.js:425
+#: templates/js/translated/part.js:469
msgid "You have subscribed to notifications for this item"
msgstr ""
-#: templates/js/translated/part.js:430
+#: templates/js/translated/part.js:474
msgid "Subscribe to notifications for this item"
msgstr ""
-#: templates/js/translated/part.js:432
+#: templates/js/translated/part.js:476
msgid "You have unsubscribed to notifications for this item"
msgstr ""
-#: templates/js/translated/part.js:449
+#: templates/js/translated/part.js:493
msgid "Validating the BOM will mark each line item as valid"
msgstr ""
-#: templates/js/translated/part.js:459
+#: templates/js/translated/part.js:503
msgid "Validate Bill of Materials"
msgstr ""
-#: templates/js/translated/part.js:462
+#: templates/js/translated/part.js:506
msgid "Validated Bill of Materials"
msgstr ""
-#: templates/js/translated/part.js:487
+#: templates/js/translated/part.js:531
msgid "Copy Bill of Materials"
msgstr ""
-#: templates/js/translated/part.js:513 templates/js/translated/part.js:1397
+#: templates/js/translated/part.js:557 templates/js/translated/part.js:1441
#: templates/js/translated/table_filters.js:452
msgid "Low stock"
msgstr ""
-#: templates/js/translated/part.js:523 templates/js/translated/part.js:1409
+#: templates/js/translated/part.js:567 templates/js/translated/part.js:1453
msgid "No stock available"
msgstr ""
-#: templates/js/translated/part.js:557 templates/js/translated/part.js:642
+#: templates/js/translated/part.js:601 templates/js/translated/part.js:686
msgid "Trackable part"
msgstr ""
-#: templates/js/translated/part.js:561 templates/js/translated/part.js:646
+#: templates/js/translated/part.js:605 templates/js/translated/part.js:690
msgid "Virtual part"
msgstr ""
-#: templates/js/translated/part.js:573
+#: templates/js/translated/part.js:617
msgid "Subscribed part"
msgstr ""
-#: templates/js/translated/part.js:577
+#: templates/js/translated/part.js:621
msgid "Salable part"
msgstr ""
-#: templates/js/translated/part.js:705
+#: templates/js/translated/part.js:749
msgid "No variants found"
msgstr ""
-#: templates/js/translated/part.js:1095
+#: templates/js/translated/part.js:1139
msgid "Delete part relationship"
msgstr ""
-#: templates/js/translated/part.js:1119
+#: templates/js/translated/part.js:1163
msgid "Delete Part Relationship"
msgstr ""
-#: templates/js/translated/part.js:1184 templates/js/translated/part.js:1480
+#: templates/js/translated/part.js:1228 templates/js/translated/part.js:1524
msgid "No parts found"
msgstr ""
-#: templates/js/translated/part.js:1223
+#: templates/js/translated/part.js:1267
msgid "Not available"
msgstr ""
-#: templates/js/translated/part.js:1374
+#: templates/js/translated/part.js:1418
msgid "No category"
msgstr ""
-#: templates/js/translated/part.js:1504 templates/js/translated/part.js:1664
+#: templates/js/translated/part.js:1548 templates/js/translated/part.js:1760
#: templates/js/translated/stock.js:2238
msgid "Display as list"
msgstr ""
-#: templates/js/translated/part.js:1520
+#: templates/js/translated/part.js:1564
msgid "Display as grid"
msgstr ""
-#: templates/js/translated/part.js:1683 templates/js/translated/stock.js:2257
+#: templates/js/translated/part.js:1630
+msgid "Set the part category for the selected parts"
+msgstr ""
+
+#: templates/js/translated/part.js:1635
+msgid "Set Part Category"
+msgstr ""
+
+#: templates/js/translated/part.js:1640
+msgid "Select Part Category"
+msgstr ""
+
+#: templates/js/translated/part.js:1653
+msgid "Category is required"
+msgstr ""
+
+#: templates/js/translated/part.js:1779 templates/js/translated/stock.js:2257
msgid "Display as tree"
msgstr ""
-#: templates/js/translated/part.js:1747
+#: templates/js/translated/part.js:1843
msgid "Subscribed category"
msgstr ""
-#: templates/js/translated/part.js:1761 templates/js/translated/stock.js:2301
+#: templates/js/translated/part.js:1857 templates/js/translated/stock.js:2301
msgid "Path"
msgstr ""
-#: templates/js/translated/part.js:1805
+#: templates/js/translated/part.js:1901
msgid "No test templates matching query"
msgstr ""
-#: templates/js/translated/part.js:1856 templates/js/translated/stock.js:1233
+#: templates/js/translated/part.js:1952 templates/js/translated/stock.js:1233
msgid "Edit test result"
msgstr ""
-#: templates/js/translated/part.js:1857 templates/js/translated/stock.js:1234
+#: templates/js/translated/part.js:1953 templates/js/translated/stock.js:1234
#: templates/js/translated/stock.js:1493
msgid "Delete test result"
msgstr ""
-#: templates/js/translated/part.js:1863
+#: templates/js/translated/part.js:1959
msgid "This test is defined for a parent part"
msgstr ""
-#: templates/js/translated/part.js:1885
+#: templates/js/translated/part.js:1981
msgid "Edit Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:1899
+#: templates/js/translated/part.js:1995
msgid "Delete Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:1924
+#: templates/js/translated/part.js:2020
#, python-brace-format
msgid "No ${human_name} information found"
msgstr ""
-#: templates/js/translated/part.js:1981
+#: templates/js/translated/part.js:2077
#, python-brace-format
msgid "Edit ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:1982
+#: templates/js/translated/part.js:2078
#, python-brace-format
msgid "Delete ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:2096
+#: templates/js/translated/part.js:2192
msgid "Current Stock"
msgstr ""
-#: templates/js/translated/part.js:2129
+#: templates/js/translated/part.js:2225
msgid "No scheduling information available for this part"
msgstr ""
-#: templates/js/translated/part.js:2155
+#: templates/js/translated/part.js:2251
msgid "Scheduled Stock Quantities"
msgstr ""
-#: templates/js/translated/part.js:2225
+#: templates/js/translated/part.js:2321
msgid "Single Price"
msgstr ""
-#: templates/js/translated/part.js:2244
+#: templates/js/translated/part.js:2340
msgid "Single Price Difference"
msgstr ""
diff --git a/InvenTree/locale/es/LC_MESSAGES/django.po b/InvenTree/locale/es/LC_MESSAGES/django.po
index f339ec1be4..af9ca36809 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: 2022-06-05 14:26+0000\n"
-"PO-Revision-Date: 2022-06-05 14:34\n"
+"POT-Creation-Date: 2022-06-06 22:59+0000\n"
+"PO-Revision-Date: 2022-06-07 14:34\n"
"Last-Translator: \n"
"Language-Team: Spanish\n"
"Language: es_ES\n"
@@ -17,7 +17,7 @@ msgstr ""
"X-Crowdin-File: /[inventree.InvenTree] l10/InvenTree/locale/en/LC_MESSAGES/django.po\n"
"X-Crowdin-File-ID: 154\n"
-#: InvenTree/api.py:46
+#: InvenTree/api.py:49
msgid "API endpoint not found"
msgstr ""
@@ -29,275 +29,273 @@ msgstr ""
msgid "Enter date"
msgstr ""
-#: InvenTree/forms.py:117 templates/account/email_confirm.html:20
-#: templates/js/translated/forms.js:630
-msgid "Confirm"
-msgstr ""
-
-#: InvenTree/forms.py:134
+#: InvenTree/forms.py:117
msgid "Confirm delete"
msgstr ""
-#: InvenTree/forms.py:135
+#: InvenTree/forms.py:118
msgid "Confirm item deletion"
msgstr ""
-#: InvenTree/forms.py:167
+#: InvenTree/forms.py:150
msgid "Enter password"
msgstr ""
-#: InvenTree/forms.py:168
+#: InvenTree/forms.py:151
msgid "Enter new password"
msgstr ""
-#: InvenTree/forms.py:175
+#: InvenTree/forms.py:158
msgid "Confirm password"
msgstr ""
-#: InvenTree/forms.py:176
+#: InvenTree/forms.py:159
msgid "Confirm new password"
msgstr ""
-#: InvenTree/forms.py:213
-msgid "Select Category"
-msgstr ""
-
-#: InvenTree/forms.py:234
+#: InvenTree/forms.py:184
msgid "Email (again)"
msgstr ""
-#: InvenTree/forms.py:238
+#: InvenTree/forms.py:188
msgid "Email address confirmation"
msgstr ""
-#: InvenTree/forms.py:259
+#: InvenTree/forms.py:209
msgid "You must type the same email each time."
msgstr ""
-#: InvenTree/helpers.py:402
+#: InvenTree/helpers.py:404
#, python-brace-format
msgid "Duplicate serial: {sn}"
msgstr ""
-#: InvenTree/helpers.py:409 order/models.py:365 order/models.py:517
+#: InvenTree/helpers.py:411 order/models.py:370 order/models.py:522
msgid "Invalid quantity provided"
msgstr ""
-#: InvenTree/helpers.py:412
+#: InvenTree/helpers.py:414
msgid "Empty serial number string"
msgstr ""
-#: InvenTree/helpers.py:444
+#: InvenTree/helpers.py:446
#, python-brace-format
msgid "Invalid group range: {g}"
msgstr ""
-#: InvenTree/helpers.py:447
+#: InvenTree/helpers.py:449
#, python-brace-format
msgid "Invalid group: {g}"
msgstr ""
-#: InvenTree/helpers.py:475
+#: InvenTree/helpers.py:477
#, python-brace-format
msgid "Invalid group sequence: {g}"
msgstr ""
-#: InvenTree/helpers.py:483
+#: InvenTree/helpers.py:485
#, python-brace-format
msgid "Invalid/no group {group}"
msgstr ""
-#: InvenTree/helpers.py:489
+#: InvenTree/helpers.py:491
msgid "No serial numbers found"
msgstr ""
-#: InvenTree/helpers.py:493
+#: InvenTree/helpers.py:495
#, python-brace-format
msgid "Number of unique serial numbers ({s}) must match quantity ({q})"
msgstr ""
-#: InvenTree/models.py:174
+#: InvenTree/models.py:178
msgid "Missing file"
msgstr ""
-#: InvenTree/models.py:175
+#: InvenTree/models.py:179
msgid "Missing external link"
msgstr ""
-#: InvenTree/models.py:187 stock/models.py:2087
-#: templates/js/translated/attachment.js:101
-#: templates/js/translated/attachment.js:198
+#: InvenTree/models.py:191 stock/models.py:2091
+#: templates/js/translated/attachment.js:103
+#: templates/js/translated/attachment.js:194
msgid "Attachment"
msgstr ""
-#: InvenTree/models.py:188
+#: InvenTree/models.py:192
msgid "Select file to attach"
msgstr ""
-#: InvenTree/models.py:194 company/models.py:123 company/models.py:272
-#: company/models.py:506 order/models.py:135 order/models.py:1235
+#: InvenTree/models.py:198 company/models.py:123 company/models.py:272
+#: company/models.py:506 order/models.py:136 order/models.py:1251
#: part/models.py:795
#: report/templates/report/inventree_build_order_base.html:165
-#: templates/js/translated/company.js:655
-#: templates/js/translated/company.js:946 templates/js/translated/order.js:2676
-#: templates/js/translated/part.js:1441
+#: templates/js/translated/company.js:640
+#: templates/js/translated/company.js:931 templates/js/translated/order.js:2676
+#: templates/js/translated/part.js:1485
msgid "Link"
msgstr ""
-#: InvenTree/models.py:195 build/models.py:320 part/models.py:796
+#: InvenTree/models.py:199 build/models.py:320 part/models.py:796
#: stock/models.py:642
msgid "Link to external URL"
msgstr ""
-#: InvenTree/models.py:198 templates/js/translated/attachment.js:102
-#: templates/js/translated/attachment.js:242
+#: InvenTree/models.py:202 templates/js/translated/attachment.js:104
+#: templates/js/translated/attachment.js:238
msgid "Comment"
msgstr ""
-#: InvenTree/models.py:198
+#: InvenTree/models.py:202
msgid "File comment"
msgstr ""
-#: InvenTree/models.py:204 InvenTree/models.py:205 common/models.py:1499
-#: common/models.py:1500 common/models.py:1728 common/models.py:1729
-#: common/models.py:1991 common/models.py:1992 part/models.py:2153
-#: part/models.py:2173 plugin/models.py:238 plugin/models.py:239
+#: InvenTree/models.py:208 InvenTree/models.py:209 common/models.py:1506
+#: common/models.py:1507 common/models.py:1735 common/models.py:1736
+#: common/models.py:1998 common/models.py:1999 part/models.py:2141
+#: part/models.py:2161 plugin/models.py:238 plugin/models.py:239
#: report/templates/report/inventree_test_report_base.html:96
-#: templates/js/translated/stock.js:2513
+#: templates/js/translated/stock.js:2523
msgid "User"
msgstr ""
-#: InvenTree/models.py:208
+#: InvenTree/models.py:212
msgid "upload date"
msgstr ""
-#: InvenTree/models.py:230
+#: InvenTree/models.py:234
msgid "Filename must not be empty"
msgstr ""
-#: InvenTree/models.py:253
+#: InvenTree/models.py:257
msgid "Invalid attachment directory"
msgstr ""
-#: InvenTree/models.py:263
+#: InvenTree/models.py:267
#, python-brace-format
msgid "Filename contains illegal character '{c}'"
msgstr ""
-#: InvenTree/models.py:266
+#: InvenTree/models.py:270
msgid "Filename missing extension"
msgstr ""
-#: InvenTree/models.py:273
+#: InvenTree/models.py:277
msgid "Attachment with this filename already exists"
msgstr ""
-#: InvenTree/models.py:280
+#: InvenTree/models.py:284
msgid "Error renaming file"
msgstr ""
-#: InvenTree/models.py:314
+#: InvenTree/models.py:318
msgid "Invalid choice"
msgstr ""
-#: InvenTree/models.py:333 InvenTree/models.py:334 common/models.py:1714
+#: InvenTree/models.py:337 InvenTree/models.py:338 common/models.py:1721
#: company/models.py:354 label/models.py:101 part/models.py:739
-#: part/models.py:2331 plugin/models.py:93 report/models.py:151
+#: part/models.py:2319 plugin/models.py:93 report/models.py:151
#: templates/InvenTree/notifications/notifications.html:84
#: templates/InvenTree/settings/mixins/urls.html:13
#: templates/InvenTree/settings/plugin.html:49
#: templates/InvenTree/settings/plugin.html:132
#: templates/InvenTree/settings/plugin_settings.html:23
#: templates/InvenTree/settings/settings.html:346
-#: templates/js/translated/company.js:539
-#: templates/js/translated/company.js:757 templates/js/translated/part.js:615
-#: templates/js/translated/part.js:767 templates/js/translated/part.js:1736
-#: templates/js/translated/stock.js:2283
+#: templates/js/translated/company.js:530
+#: templates/js/translated/company.js:742 templates/js/translated/part.js:659
+#: templates/js/translated/part.js:811 templates/js/translated/part.js:1832
+#: templates/js/translated/stock.js:2293
msgid "Name"
msgstr ""
-#: InvenTree/models.py:340 build/models.py:197
+#: InvenTree/models.py:344 build/models.py:197
#: build/templates/build/detail.html:24 company/models.py:278
#: company/models.py:512 company/templates/company/company_base.html:71
#: company/templates/company/manufacturer_part.html:75
#: company/templates/company/supplier_part.html:73 label/models.py:108
-#: order/models.py:133 part/models.py:762 part/templates/part/category.html:74
-#: part/templates/part/part_base.html:167
-#: part/templates/part/set_category.html:14 report/models.py:164
+#: order/models.py:134 part/models.py:762 part/templates/part/category.html:74
+#: part/templates/part/part_base.html:167 report/models.py:164
#: report/models.py:509 report/models.py:550
#: report/templates/report/inventree_build_order_base.html:118
#: stock/templates/stock/location.html:103
#: templates/InvenTree/settings/plugin_settings.html:33
-#: templates/js/translated/bom.js:553 templates/js/translated/bom.js:851
-#: templates/js/translated/build.js:2476 templates/js/translated/company.js:401
-#: templates/js/translated/company.js:666
-#: templates/js/translated/company.js:957 templates/js/translated/order.js:1656
+#: templates/js/translated/bom.js:553 templates/js/translated/bom.js:845
+#: templates/js/translated/build.js:2476 templates/js/translated/company.js:395
+#: templates/js/translated/company.js:651
+#: templates/js/translated/company.js:942 templates/js/translated/order.js:1656
#: templates/js/translated/order.js:1888 templates/js/translated/order.js:2476
-#: templates/js/translated/part.js:674 templates/js/translated/part.js:1082
-#: templates/js/translated/part.js:1355 templates/js/translated/part.js:1755
-#: templates/js/translated/part.js:1824 templates/js/translated/stock.js:1676
-#: templates/js/translated/stock.js:2295 templates/js/translated/stock.js:2350
+#: templates/js/translated/part.js:718 templates/js/translated/part.js:1126
+#: templates/js/translated/part.js:1399 templates/js/translated/part.js:1851
+#: templates/js/translated/part.js:1920 templates/js/translated/stock.js:1686
+#: templates/js/translated/stock.js:2305 templates/js/translated/stock.js:2360
msgid "Description"
msgstr ""
-#: InvenTree/models.py:341
+#: InvenTree/models.py:345
msgid "Description (optional)"
msgstr ""
-#: InvenTree/models.py:349
+#: InvenTree/models.py:353
msgid "parent"
msgstr ""
-#: InvenTree/serializers.py:52 part/models.py:2652
+#: InvenTree/models.py:466
+msgid "Server Error"
+msgstr ""
+
+#: InvenTree/models.py:467
+msgid "An error has been logged by the server."
+msgstr ""
+
+#: InvenTree/serializers.py:52 part/models.py:2640
msgid "Must be a valid number"
msgstr ""
-#: InvenTree/serializers.py:271
+#: InvenTree/serializers.py:263
msgid "Filename"
msgstr ""
-#: InvenTree/serializers.py:306
+#: InvenTree/serializers.py:298
msgid "Invalid value"
msgstr ""
-#: InvenTree/serializers.py:328
+#: InvenTree/serializers.py:320
msgid "Data File"
msgstr ""
-#: InvenTree/serializers.py:329
+#: InvenTree/serializers.py:321
msgid "Select data file for upload"
msgstr ""
-#: InvenTree/serializers.py:350
+#: InvenTree/serializers.py:342
msgid "Unsupported file type"
msgstr ""
-#: InvenTree/serializers.py:356
+#: InvenTree/serializers.py:348
msgid "File is too large"
msgstr ""
-#: InvenTree/serializers.py:377
+#: InvenTree/serializers.py:369
msgid "No columns found in file"
msgstr ""
-#: InvenTree/serializers.py:380
+#: InvenTree/serializers.py:372
msgid "No data rows found in file"
msgstr ""
-#: InvenTree/serializers.py:503
+#: InvenTree/serializers.py:495
msgid "No data rows provided"
msgstr ""
-#: InvenTree/serializers.py:506
+#: InvenTree/serializers.py:498
msgid "No data columns supplied"
msgstr ""
-#: InvenTree/serializers.py:583
+#: InvenTree/serializers.py:575
#, python-brace-format
msgid "Missing required column: '{name}'"
msgstr ""
-#: InvenTree/serializers.py:592
+#: InvenTree/serializers.py:584
#, python-brace-format
msgid "Duplicate column: '{col}'"
msgstr ""
@@ -440,7 +438,7 @@ msgstr ""
msgid "Returned"
msgstr ""
-#: InvenTree/status_codes.py:141 order/models.py:1114
+#: InvenTree/status_codes.py:141 order/models.py:1130
#: templates/js/translated/order.js:3264 templates/js/translated/order.js:3607
msgid "Shipped"
msgstr ""
@@ -525,7 +523,7 @@ msgstr ""
msgid "Split child item"
msgstr ""
-#: InvenTree/status_codes.py:281 templates/js/translated/stock.js:2020
+#: InvenTree/status_codes.py:281 templates/js/translated/stock.js:2030
msgid "Merged stock items"
msgstr ""
@@ -597,27 +595,27 @@ msgstr ""
msgid "Invalid value for overage"
msgstr ""
-#: InvenTree/views.py:522
+#: InvenTree/views.py:521
msgid "Delete Item"
msgstr ""
-#: InvenTree/views.py:571
+#: InvenTree/views.py:570
msgid "Check box to confirm item deletion"
msgstr ""
-#: InvenTree/views.py:586 templates/InvenTree/settings/user.html:22
+#: InvenTree/views.py:585 templates/InvenTree/settings/user.html:22
msgid "Edit User Information"
msgstr ""
-#: InvenTree/views.py:598 templates/InvenTree/settings/user.html:19
+#: InvenTree/views.py:597 templates/InvenTree/settings/user.html:19
msgid "Set Password"
msgstr ""
-#: InvenTree/views.py:618
+#: InvenTree/views.py:617
msgid "Password fields must match"
msgstr ""
-#: InvenTree/views.py:842 templates/navbar.html:152
+#: InvenTree/views.py:807 templates/navbar.html:152
msgid "System Information"
msgstr ""
@@ -628,6 +626,7 @@ msgstr ""
#: build/models.py:131 build/templates/build/build_base.html:9
#: build/templates/build/build_base.html:27
#: report/templates/report/inventree_build_order_base.html:106
+#: templates/email/overdue_build_order.html:15
#: templates/js/translated/build.js:727
msgid "Build Order"
msgstr ""
@@ -646,12 +645,12 @@ msgstr ""
msgid "Build Order Reference"
msgstr ""
-#: build/models.py:189 order/models.py:288 order/models.py:638
-#: order/models.py:916 part/models.py:2570
+#: build/models.py:189 order/models.py:293 order/models.py:654
+#: order/models.py:932 part/models.py:2558
#: part/templates/part/upload_bom.html:54
#: report/templates/report/inventree_po_report.html:91
#: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:688 templates/js/translated/bom.js:858
+#: templates/js/translated/bom.js:690 templates/js/translated/bom.js:852
#: templates/js/translated/build.js:1777 templates/js/translated/order.js:1919
#: templates/js/translated/order.js:2120 templates/js/translated/order.js:3448
#: templates/js/translated/order.js:3959
@@ -673,13 +672,12 @@ msgstr ""
#: build/models.py:215 build/templates/build/build_base.html:77
#: build/templates/build/detail.html:29 company/models.py:647
-#: order/models.py:1012 order/models.py:1103 part/models.py:336
-#: part/models.py:2099 part/models.py:2114 part/models.py:2133
-#: part/models.py:2151 part/models.py:2250 part/models.py:2370
-#: part/models.py:2460 part/models.py:2545 part/models.py:2821
-#: part/serializers.py:793 part/templates/part/part_app_base.html:8
+#: order/models.py:1028 order/models.py:1119 part/models.py:336
+#: part/models.py:2087 part/models.py:2102 part/models.py:2121
+#: part/models.py:2139 part/models.py:2238 part/models.py:2358
+#: part/models.py:2448 part/models.py:2533 part/models.py:2809
+#: part/serializers.py:795 part/templates/part/part_app_base.html:8
#: part/templates/part/part_pricing.html:12
-#: part/templates/part/set_category.html:13
#: part/templates/part/upload_bom.html:52
#: report/templates/report/inventree_build_order_base.html:110
#: report/templates/report/inventree_po_report.html:89
@@ -687,22 +685,23 @@ msgstr ""
#: templates/InvenTree/search.html:80
#: templates/email/build_order_required_stock.html:17
#: templates/email/low_stock_notification.html:16
+#: templates/email/overdue_build_order.html:16
#: templates/js/translated/barcode.js:435 templates/js/translated/bom.js:552
-#: templates/js/translated/bom.js:687 templates/js/translated/bom.js:805
+#: templates/js/translated/bom.js:689 templates/js/translated/bom.js:799
#: templates/js/translated/build.js:1153 templates/js/translated/build.js:1647
#: templates/js/translated/build.js:2083 templates/js/translated/build.js:2481
-#: templates/js/translated/company.js:252
-#: templates/js/translated/company.js:486
-#: templates/js/translated/company.js:607
-#: templates/js/translated/company.js:866 templates/js/translated/order.js:100
+#: templates/js/translated/company.js:253
+#: templates/js/translated/company.js:482
+#: templates/js/translated/company.js:592
+#: templates/js/translated/company.js:851 templates/js/translated/order.js:100
#: templates/js/translated/order.js:883 templates/js/translated/order.js:1315
#: templates/js/translated/order.js:1873 templates/js/translated/order.js:2819
#: templates/js/translated/order.js:3217 templates/js/translated/order.js:3432
-#: templates/js/translated/part.js:1067 templates/js/translated/part.js:1137
-#: templates/js/translated/part.js:1333 templates/js/translated/stock.js:531
-#: templates/js/translated/stock.js:696 templates/js/translated/stock.js:903
-#: templates/js/translated/stock.js:1633 templates/js/translated/stock.js:2376
-#: templates/js/translated/stock.js:2571 templates/js/translated/stock.js:2705
+#: templates/js/translated/part.js:1111 templates/js/translated/part.js:1181
+#: templates/js/translated/part.js:1377 templates/js/translated/stock.js:530
+#: templates/js/translated/stock.js:695 templates/js/translated/stock.js:902
+#: templates/js/translated/stock.js:1643 templates/js/translated/stock.js:2386
+#: templates/js/translated/stock.js:2581 templates/js/translated/stock.js:2715
msgid "Part"
msgstr ""
@@ -768,12 +767,12 @@ msgstr ""
msgid "Batch code for this build output"
msgstr ""
-#: build/models.py:282 order/models.py:137 part/models.py:932
+#: build/models.py:282 order/models.py:138 part/models.py:932
#: part/templates/part/part_base.html:305 templates/js/translated/order.js:2489
msgid "Creation Date"
msgstr ""
-#: build/models.py:286 order/models.py:660
+#: build/models.py:286 order/models.py:676
msgid "Target completion date"
msgstr ""
@@ -781,7 +780,7 @@ msgstr ""
msgid "Target date for build completion. Build will be overdue after this date."
msgstr ""
-#: build/models.py:290 order/models.py:331
+#: build/models.py:290 order/models.py:336
#: templates/js/translated/build.js:2558
msgid "Completion Date"
msgstr ""
@@ -799,7 +798,7 @@ msgid "User who issued this build order"
msgstr ""
#: build/models.py:313 build/templates/build/build_base.html:190
-#: build/templates/build/detail.html:115 order/models.py:151
+#: build/templates/build/detail.html:115 order/models.py:152
#: order/templates/order/order_base.html:176
#: order/templates/order/sales_order_base.html:183 part/models.py:936
#: report/templates/report/inventree_build_order_base.html:159
@@ -822,20 +821,20 @@ msgstr ""
#: build/models.py:324 build/serializers.py:374
#: build/templates/build/sidebar.html:21 company/models.py:134
#: company/models.py:519 company/templates/company/sidebar.html:25
-#: order/models.py:155 order/models.py:918 order/models.py:1213
+#: order/models.py:156 order/models.py:934 order/models.py:1229
#: order/templates/order/po_sidebar.html:11
#: order/templates/order/so_sidebar.html:17 part/models.py:921
#: part/templates/part/part_sidebar.html:59
#: report/templates/report/inventree_build_order_base.html:173
-#: stock/models.py:713 stock/models.py:1985 stock/models.py:2093
+#: stock/models.py:713 stock/models.py:1989 stock/models.py:2097
#: stock/serializers.py:315 stock/serializers.py:444 stock/serializers.py:486
-#: stock/serializers.py:772 stock/serializers.py:871 stock/serializers.py:1003
+#: stock/serializers.py:759 stock/serializers.py:858 stock/serializers.py:990
#: stock/templates/stock/stock_sidebar.html:25
-#: templates/js/translated/barcode.js:100 templates/js/translated/bom.js:1044
-#: templates/js/translated/company.js:962 templates/js/translated/order.js:2040
+#: templates/js/translated/barcode.js:100 templates/js/translated/bom.js:1038
+#: templates/js/translated/company.js:947 templates/js/translated/order.js:2040
#: templates/js/translated/order.js:2191 templates/js/translated/order.js:2687
#: templates/js/translated/order.js:3632 templates/js/translated/order.js:4030
-#: templates/js/translated/stock.js:1307 templates/js/translated/stock.js:1916
+#: templates/js/translated/stock.js:1317 templates/js/translated/stock.js:1926
msgid "Notes"
msgstr ""
@@ -855,44 +854,44 @@ msgstr ""
msgid "Build output does not match Build Order"
msgstr ""
-#: build/models.py:1108
+#: build/models.py:1111
msgid "Build item must specify a build output, as master part is marked as trackable"
msgstr ""
-#: build/models.py:1117
+#: build/models.py:1120
#, python-brace-format
msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})"
msgstr ""
-#: build/models.py:1127
+#: build/models.py:1130
msgid "Stock item is over-allocated"
msgstr ""
-#: build/models.py:1133 order/models.py:1372
+#: build/models.py:1136 order/models.py:1388
msgid "Allocation quantity must be greater than zero"
msgstr ""
-#: build/models.py:1139
+#: build/models.py:1142
msgid "Quantity must be 1 for serialized stock"
msgstr ""
-#: build/models.py:1196
+#: build/models.py:1199
msgid "Selected stock item not found in BOM"
msgstr ""
-#: build/models.py:1265 stock/templates/stock/item_base.html:177
+#: build/models.py:1268 stock/templates/stock/item_base.html:177
#: templates/InvenTree/search.html:137 templates/js/translated/build.js:2454
#: templates/navbar.html:38
msgid "Build"
msgstr ""
-#: build/models.py:1266
+#: build/models.py:1269
msgid "Build to allocate parts"
msgstr ""
-#: build/models.py:1282 build/serializers.py:603 order/serializers.py:994
-#: order/serializers.py:1015 stock/serializers.py:382 stock/serializers.py:703
-#: stock/serializers.py:829 stock/templates/stock/item_base.html:10
+#: build/models.py:1285 build/serializers.py:603 order/serializers.py:996
+#: order/serializers.py:1017 stock/serializers.py:382 stock/serializers.py:690
+#: stock/serializers.py:816 stock/templates/stock/item_base.html:10
#: stock/templates/stock/item_base.html:23
#: stock/templates/stock/item_base.html:199
#: templates/js/translated/build.js:738 templates/js/translated/build.js:743
@@ -900,22 +899,22 @@ msgstr ""
#: templates/js/translated/order.js:101 templates/js/translated/order.js:2820
#: templates/js/translated/order.js:3124 templates/js/translated/order.js:3129
#: templates/js/translated/order.js:3224 templates/js/translated/order.js:3314
-#: templates/js/translated/stock.js:532 templates/js/translated/stock.js:697
-#: templates/js/translated/stock.js:2449
+#: templates/js/translated/stock.js:531 templates/js/translated/stock.js:696
+#: templates/js/translated/stock.js:2459
msgid "Stock Item"
msgstr ""
-#: build/models.py:1283
+#: build/models.py:1286
msgid "Source stock item"
msgstr ""
-#: build/models.py:1295 build/serializers.py:183
+#: build/models.py:1298 build/serializers.py:183
#: build/templates/build/build_base.html:82
-#: build/templates/build/detail.html:34 common/models.py:1536
+#: build/templates/build/detail.html:34 common/models.py:1543
#: company/forms.py:36 company/templates/company/supplier_part.html:258
-#: order/models.py:909 order/models.py:1412 order/serializers.py:1134
-#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:68
-#: part/forms.py:83 part/forms.py:98 part/models.py:2561
+#: order/models.py:925 order/models.py:1428 order/serializers.py:1136
+#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:59
+#: part/forms.py:74 part/forms.py:89 part/models.py:2549
#: part/templates/part/detail.html:935 part/templates/part/detail.html:1021
#: part/templates/part/part_pricing.html:16
#: part/templates/part/upload_bom.html:53
@@ -926,8 +925,8 @@ msgstr ""
#: report/templates/report/inventree_test_report_base.html:139
#: stock/serializers.py:279 stock/templates/stock/item_base.html:292
#: stock/templates/stock/item_base.html:300
-#: templates/js/translated/barcode.js:437 templates/js/translated/bom.js:689
-#: templates/js/translated/bom.js:866 templates/js/translated/build.js:422
+#: templates/js/translated/barcode.js:437 templates/js/translated/bom.js:691
+#: templates/js/translated/bom.js:860 templates/js/translated/build.js:422
#: templates/js/translated/build.js:574 templates/js/translated/build.js:765
#: templates/js/translated/build.js:1175 templates/js/translated/build.js:1673
#: templates/js/translated/build.js:2086
@@ -937,23 +936,23 @@ msgstr ""
#: templates/js/translated/order.js:2821 templates/js/translated/order.js:3143
#: templates/js/translated/order.js:3231 templates/js/translated/order.js:3320
#: templates/js/translated/order.js:3454 templates/js/translated/order.js:3965
-#: templates/js/translated/part.js:967 templates/js/translated/part.js:1969
-#: templates/js/translated/part.js:2200 templates/js/translated/part.js:2234
-#: templates/js/translated/part.js:2312 templates/js/translated/stock.js:403
-#: templates/js/translated/stock.js:557 templates/js/translated/stock.js:727
-#: templates/js/translated/stock.js:2498 templates/js/translated/stock.js:2583
+#: templates/js/translated/part.js:1011 templates/js/translated/part.js:2065
+#: templates/js/translated/part.js:2296 templates/js/translated/part.js:2330
+#: templates/js/translated/part.js:2408 templates/js/translated/stock.js:402
+#: templates/js/translated/stock.js:556 templates/js/translated/stock.js:726
+#: templates/js/translated/stock.js:2508 templates/js/translated/stock.js:2593
msgid "Quantity"
msgstr ""
-#: build/models.py:1296
+#: build/models.py:1299
msgid "Stock quantity to allocate to build"
msgstr ""
-#: build/models.py:1304
+#: build/models.py:1307
msgid "Install into"
msgstr ""
-#: build/models.py:1305
+#: build/models.py:1308
msgid "Destination stock item"
msgstr ""
@@ -982,9 +981,9 @@ msgstr ""
msgid "Enter quantity for build output"
msgstr ""
-#: build/serializers.py:198 build/serializers.py:623 order/models.py:363
-#: order/serializers.py:280 order/serializers.py:435 part/serializers.py:512
-#: part/serializers.py:956 stock/models.py:470 stock/models.py:1239
+#: build/serializers.py:198 build/serializers.py:623 order/models.py:368
+#: order/serializers.py:280 order/serializers.py:435 part/serializers.py:514
+#: part/serializers.py:958 stock/models.py:470 stock/models.py:1239
#: stock/serializers.py:288
msgid "Quantity must be greater than zero"
msgstr ""
@@ -997,9 +996,9 @@ msgstr ""
msgid "Integer quantity required, as the bill of materials contains trackable parts"
msgstr ""
-#: build/serializers.py:222 order/serializers.py:448 order/serializers.py:1138
+#: build/serializers.py:222 order/serializers.py:448 order/serializers.py:1140
#: stock/serializers.py:297 templates/js/translated/order.js:1186
-#: templates/js/translated/stock.js:238 templates/js/translated/stock.js:404
+#: templates/js/translated/stock.js:237 templates/js/translated/stock.js:403
msgid "Serial Numbers"
msgstr ""
@@ -1015,7 +1014,7 @@ msgstr ""
msgid "Automatically allocate required items with matching serial numbers"
msgstr ""
-#: build/serializers.py:268 stock/api.py:552
+#: build/serializers.py:268 stock/api.py:553
msgid "The following serial numbers already exist"
msgstr ""
@@ -1025,16 +1024,16 @@ msgstr ""
#: build/serializers.py:356 order/serializers.py:421 order/serializers.py:525
#: stock/serializers.py:308 stock/serializers.py:439 stock/serializers.py:481
-#: stock/serializers.py:864 stock/serializers.py:1097
+#: stock/serializers.py:851 stock/serializers.py:1084
#: stock/templates/stock/item_base.html:390
#: templates/js/translated/barcode.js:436
#: templates/js/translated/barcode.js:618 templates/js/translated/build.js:750
#: templates/js/translated/build.js:1685 templates/js/translated/order.js:1213
#: templates/js/translated/order.js:3136 templates/js/translated/order.js:3239
#: templates/js/translated/order.js:3247 templates/js/translated/order.js:3328
-#: templates/js/translated/part.js:180 templates/js/translated/stock.js:533
-#: templates/js/translated/stock.js:698 templates/js/translated/stock.js:905
-#: templates/js/translated/stock.js:1787 templates/js/translated/stock.js:2390
+#: templates/js/translated/part.js:180 templates/js/translated/stock.js:532
+#: templates/js/translated/stock.js:697 templates/js/translated/stock.js:904
+#: templates/js/translated/stock.js:1797 templates/js/translated/stock.js:2400
msgid "Location"
msgstr ""
@@ -1043,12 +1042,12 @@ msgid "Location for completed build outputs"
msgstr ""
#: build/serializers.py:363 build/templates/build/build_base.html:142
-#: build/templates/build/detail.html:62 order/models.py:654
+#: build/templates/build/detail.html:62 order/models.py:670
#: order/serializers.py:458 stock/templates/stock/item_base.html:423
#: templates/js/translated/barcode.js:182 templates/js/translated/build.js:2510
#: templates/js/translated/order.js:1320 templates/js/translated/order.js:1660
-#: templates/js/translated/order.js:2481 templates/js/translated/stock.js:1762
-#: templates/js/translated/stock.js:2467 templates/js/translated/stock.js:2599
+#: templates/js/translated/order.js:2481 templates/js/translated/stock.js:1772
+#: templates/js/translated/stock.js:2477 templates/js/translated/stock.js:2609
msgid "Status"
msgstr ""
@@ -1108,8 +1107,8 @@ msgstr ""
msgid "No build outputs have been created for this build order"
msgstr ""
-#: build/serializers.py:535 build/serializers.py:580 part/models.py:2679
-#: part/models.py:2813
+#: build/serializers.py:535 build/serializers.py:580 part/models.py:2667
+#: part/models.py:2801
msgid "BOM Item"
msgstr ""
@@ -1125,11 +1124,11 @@ msgstr ""
msgid "bom_item.part must point to the same part as the build order"
msgstr ""
-#: build/serializers.py:609 stock/serializers.py:716
+#: build/serializers.py:609 stock/serializers.py:703
msgid "Item must be in stock"
msgstr ""
-#: build/serializers.py:667 order/serializers.py:1052
+#: build/serializers.py:667 order/serializers.py:1054
#, python-brace-format
msgid "Available quantity ({q}) exceeded"
msgstr ""
@@ -1146,7 +1145,7 @@ msgstr ""
msgid "This stock item has already been allocated to this build output"
msgstr ""
-#: build/serializers.py:708 order/serializers.py:1298
+#: build/serializers.py:708 order/serializers.py:1300
msgid "Allocation items must be provided"
msgstr ""
@@ -1178,10 +1177,19 @@ msgstr ""
msgid "Allow allocation of substitute parts"
msgstr ""
-#: build/tasks.py:96
+#: build/tasks.py:100
msgid "Stock required for build order"
msgstr ""
+#: build/tasks.py:118
+msgid "Overdue Build Order"
+msgstr ""
+
+#: build/tasks.py:123
+#, python-brace-format
+msgid "Build order {bo} is now overdue"
+msgstr ""
+
#: build/templates/build/build_base.html:39
#: order/templates/order/order_base.html:28
#: order/templates/order/sales_order_base.html:38
@@ -1244,13 +1252,13 @@ msgid "Stock has not been fully allocated to this Build Order"
msgstr ""
#: build/templates/build/build_base.html:151
-#: build/templates/build/detail.html:131 order/models.py:922
+#: build/templates/build/detail.html:131 order/models.py:938
#: order/templates/order/order_base.html:162
#: order/templates/order/sales_order_base.html:164
#: report/templates/report/inventree_build_order_base.html:126
#: templates/js/translated/build.js:2550 templates/js/translated/order.js:1677
#: templates/js/translated/order.js:1987 templates/js/translated/order.js:2497
-#: templates/js/translated/order.js:3517 templates/js/translated/part.js:971
+#: templates/js/translated/order.js:3517 templates/js/translated/part.js:1015
msgid "Target Date"
msgstr ""
@@ -1277,13 +1285,14 @@ msgid "Completed"
msgstr ""
#: build/templates/build/build_base.html:176
-#: build/templates/build/detail.html:94 order/models.py:1100
-#: order/models.py:1185 order/models.py:1320
+#: build/templates/build/detail.html:94 order/models.py:1116
+#: order/models.py:1201 order/models.py:1336
#: order/templates/order/sales_order_base.html:9
#: order/templates/order/sales_order_base.html:28
#: report/templates/report/inventree_build_order_base.html:136
#: report/templates/report/inventree_so_report.html:77
#: stock/templates/stock/item_base.html:370
+#: templates/email/overdue_sales_order.html:15
#: templates/js/translated/order.js:2436
msgid "Sales Order"
msgstr ""
@@ -1319,7 +1328,7 @@ msgstr ""
msgid "Stock can be taken from any available location."
msgstr ""
-#: build/templates/build/detail.html:49 order/models.py:1034
+#: build/templates/build/detail.html:49 order/models.py:1050
#: templates/js/translated/order.js:1321 templates/js/translated/order.js:2029
msgid "Destination"
msgstr ""
@@ -1336,8 +1345,8 @@ msgstr ""
#: stock/templates/stock/item_base.html:170
#: templates/js/translated/build.js:1179
#: templates/js/translated/model_renderers.js:112
-#: templates/js/translated/stock.js:971 templates/js/translated/stock.js:1776
-#: templates/js/translated/stock.js:2606
+#: templates/js/translated/stock.js:970 templates/js/translated/stock.js:1786
+#: templates/js/translated/stock.js:2616
#: templates/js/translated/table_filters.js:151
#: templates/js/translated/table_filters.js:242
msgid "Batch"
@@ -1716,7 +1725,7 @@ msgstr ""
msgid "Copy category parameter templates when creating a part"
msgstr ""
-#: common/models.py:820 part/models.py:2372 report/models.py:157
+#: common/models.py:820 part/models.py:2360 report/models.py:157
#: templates/js/translated/table_filters.js:38
#: templates/js/translated/table_filters.js:444
msgid "Template"
@@ -1726,7 +1735,7 @@ msgstr ""
msgid "Parts are templates by default"
msgstr ""
-#: common/models.py:827 part/models.py:884 templates/js/translated/bom.js:1390
+#: common/models.py:827 part/models.py:884 templates/js/translated/bom.js:1384
#: templates/js/translated/table_filters.js:168
#: templates/js/translated/table_filters.js:460
msgid "Assembly"
@@ -1880,7 +1889,7 @@ msgid "Default page size for PDF reports"
msgstr ""
#: common/models.py:968
-msgid "Test Reports"
+msgid "Enable Test Reports"
msgstr ""
#: common/models.py:969
@@ -1888,568 +1897,576 @@ msgid "Enable generation of test reports"
msgstr ""
#: common/models.py:975
-msgid "Batch Code Template"
+msgid "Attach Test Reports"
msgstr ""
#: common/models.py:976
-msgid "Template for generating default batch codes for stock items"
-msgstr ""
-
-#: common/models.py:981
-msgid "Stock Expiry"
+msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item"
msgstr ""
#: common/models.py:982
-msgid "Enable stock expiry functionality"
+msgid "Batch Code Template"
+msgstr ""
+
+#: common/models.py:983
+msgid "Template for generating default batch codes for stock items"
msgstr ""
#: common/models.py:988
-msgid "Sell Expired Stock"
+msgid "Stock Expiry"
msgstr ""
#: common/models.py:989
-msgid "Allow sale of expired stock"
+msgid "Enable stock expiry functionality"
msgstr ""
#: common/models.py:995
-msgid "Stock Stale Time"
+msgid "Sell Expired Stock"
msgstr ""
#: common/models.py:996
-msgid "Number of days stock items are considered stale before expiring"
+msgid "Allow sale of expired stock"
msgstr ""
-#: common/models.py:998
-msgid "days"
+#: common/models.py:1002
+msgid "Stock Stale Time"
msgstr ""
#: common/models.py:1003
-msgid "Build Expired Stock"
+msgid "Number of days stock items are considered stale before expiring"
msgstr ""
-#: common/models.py:1004
-msgid "Allow building with expired stock"
+#: common/models.py:1005
+msgid "days"
msgstr ""
#: common/models.py:1010
-msgid "Stock Ownership Control"
+msgid "Build Expired Stock"
msgstr ""
#: common/models.py:1011
-msgid "Enable ownership control over stock locations and items"
+msgid "Allow building with expired stock"
msgstr ""
#: common/models.py:1017
-msgid "Build Order Reference Prefix"
+msgid "Stock Ownership Control"
msgstr ""
#: common/models.py:1018
-msgid "Prefix value for build order reference"
-msgstr ""
-
-#: common/models.py:1023
-msgid "Build Order Reference Regex"
+msgid "Enable ownership control over stock locations and items"
msgstr ""
#: common/models.py:1024
+msgid "Build Order Reference Prefix"
+msgstr ""
+
+#: common/models.py:1025
+msgid "Prefix value for build order reference"
+msgstr ""
+
+#: common/models.py:1030
+msgid "Build Order Reference Regex"
+msgstr ""
+
+#: common/models.py:1031
msgid "Regular expression pattern for matching build order reference"
msgstr ""
-#: common/models.py:1028
+#: common/models.py:1035
msgid "Sales Order Reference Prefix"
msgstr ""
-#: common/models.py:1029
+#: common/models.py:1036
msgid "Prefix value for sales order reference"
msgstr ""
-#: common/models.py:1034
+#: common/models.py:1041
msgid "Sales Order Default Shipment"
msgstr ""
-#: common/models.py:1035
+#: common/models.py:1042
msgid "Enable creation of default shipment with sales orders"
msgstr ""
-#: common/models.py:1041
+#: common/models.py:1048
msgid "Purchase Order Reference Prefix"
msgstr ""
-#: common/models.py:1042
+#: common/models.py:1049
msgid "Prefix value for purchase order reference"
msgstr ""
-#: common/models.py:1048
+#: common/models.py:1055
msgid "Enable password forgot"
msgstr ""
-#: common/models.py:1049
+#: common/models.py:1056
msgid "Enable password forgot function on the login pages"
msgstr ""
-#: common/models.py:1055
+#: common/models.py:1062
msgid "Enable registration"
msgstr ""
-#: common/models.py:1056
+#: common/models.py:1063
msgid "Enable self-registration for users on the login pages"
msgstr ""
-#: common/models.py:1062
+#: common/models.py:1069
msgid "Enable SSO"
msgstr ""
-#: common/models.py:1063
+#: common/models.py:1070
msgid "Enable SSO on the login pages"
msgstr ""
-#: common/models.py:1069
+#: common/models.py:1076
msgid "Email required"
msgstr ""
-#: common/models.py:1070
+#: common/models.py:1077
msgid "Require user to supply mail on signup"
msgstr ""
-#: common/models.py:1076
+#: common/models.py:1083
msgid "Auto-fill SSO users"
msgstr ""
-#: common/models.py:1077
+#: common/models.py:1084
msgid "Automatically fill out user-details from SSO account-data"
msgstr ""
-#: common/models.py:1083
+#: common/models.py:1090
msgid "Mail twice"
msgstr ""
-#: common/models.py:1084
+#: common/models.py:1091
msgid "On signup ask users twice for their mail"
msgstr ""
-#: common/models.py:1090
+#: common/models.py:1097
msgid "Password twice"
msgstr ""
-#: common/models.py:1091
+#: common/models.py:1098
msgid "On signup ask users twice for their password"
msgstr ""
-#: common/models.py:1097
+#: common/models.py:1104
msgid "Group on signup"
msgstr ""
-#: common/models.py:1098
+#: common/models.py:1105
msgid "Group to which new users are assigned on registration"
msgstr ""
-#: common/models.py:1104
+#: common/models.py:1111
msgid "Enforce MFA"
msgstr ""
-#: common/models.py:1105
+#: common/models.py:1112
msgid "Users must use multifactor security."
msgstr ""
-#: common/models.py:1111
+#: common/models.py:1118
msgid "Check plugins on startup"
msgstr ""
-#: common/models.py:1112
+#: common/models.py:1119
msgid "Check that all plugins are installed on startup - enable in container enviroments"
msgstr ""
-#: common/models.py:1120
+#: common/models.py:1127
msgid "Enable URL integration"
msgstr ""
-#: common/models.py:1121
+#: common/models.py:1128
msgid "Enable plugins to add URL routes"
msgstr ""
-#: common/models.py:1128
+#: common/models.py:1135
msgid "Enable navigation integration"
msgstr ""
-#: common/models.py:1129
+#: common/models.py:1136
msgid "Enable plugins to integrate into navigation"
msgstr ""
-#: common/models.py:1136
+#: common/models.py:1143
msgid "Enable app integration"
msgstr ""
-#: common/models.py:1137
+#: common/models.py:1144
msgid "Enable plugins to add apps"
msgstr ""
-#: common/models.py:1144
+#: common/models.py:1151
msgid "Enable schedule integration"
msgstr ""
-#: common/models.py:1145
+#: common/models.py:1152
msgid "Enable plugins to run scheduled tasks"
msgstr ""
-#: common/models.py:1152
+#: common/models.py:1159
msgid "Enable event integration"
msgstr ""
-#: common/models.py:1153
+#: common/models.py:1160
msgid "Enable plugins to respond to internal events"
msgstr ""
-#: common/models.py:1170 common/models.py:1492
+#: common/models.py:1177 common/models.py:1499
msgid "Settings key (must be unique - case insensitive"
msgstr ""
-#: common/models.py:1192
+#: common/models.py:1199
msgid "Show subscribed parts"
msgstr ""
-#: common/models.py:1193
+#: common/models.py:1200
msgid "Show subscribed parts on the homepage"
msgstr ""
-#: common/models.py:1199
+#: common/models.py:1206
msgid "Show subscribed categories"
msgstr ""
-#: common/models.py:1200
+#: common/models.py:1207
msgid "Show subscribed part categories on the homepage"
msgstr ""
-#: common/models.py:1206
+#: common/models.py:1213
msgid "Show latest parts"
msgstr ""
-#: common/models.py:1207
+#: common/models.py:1214
msgid "Show latest parts on the homepage"
msgstr ""
-#: common/models.py:1213
+#: common/models.py:1220
msgid "Recent Part Count"
msgstr ""
-#: common/models.py:1214
+#: common/models.py:1221
msgid "Number of recent parts to display on index page"
msgstr ""
-#: common/models.py:1220
+#: common/models.py:1227
msgid "Show unvalidated BOMs"
msgstr ""
-#: common/models.py:1221
+#: common/models.py:1228
msgid "Show BOMs that await validation on the homepage"
msgstr ""
-#: common/models.py:1227
+#: common/models.py:1234
msgid "Show recent stock changes"
msgstr ""
-#: common/models.py:1228
+#: common/models.py:1235
msgid "Show recently changed stock items on the homepage"
msgstr ""
-#: common/models.py:1234
+#: common/models.py:1241
msgid "Recent Stock Count"
msgstr ""
-#: common/models.py:1235
+#: common/models.py:1242
msgid "Number of recent stock items to display on index page"
msgstr ""
-#: common/models.py:1241
+#: common/models.py:1248
msgid "Show low stock"
msgstr ""
-#: common/models.py:1242
+#: common/models.py:1249
msgid "Show low stock items on the homepage"
msgstr ""
-#: common/models.py:1248
+#: common/models.py:1255
msgid "Show depleted stock"
msgstr ""
-#: common/models.py:1249
+#: common/models.py:1256
msgid "Show depleted stock items on the homepage"
msgstr ""
-#: common/models.py:1255
+#: common/models.py:1262
msgid "Show needed stock"
msgstr ""
-#: common/models.py:1256
+#: common/models.py:1263
msgid "Show stock items needed for builds on the homepage"
msgstr ""
-#: common/models.py:1262
+#: common/models.py:1269
msgid "Show expired stock"
msgstr ""
-#: common/models.py:1263
+#: common/models.py:1270
msgid "Show expired stock items on the homepage"
msgstr ""
-#: common/models.py:1269
+#: common/models.py:1276
msgid "Show stale stock"
msgstr ""
-#: common/models.py:1270
+#: common/models.py:1277
msgid "Show stale stock items on the homepage"
msgstr ""
-#: common/models.py:1276
+#: common/models.py:1283
msgid "Show pending builds"
msgstr ""
-#: common/models.py:1277
+#: common/models.py:1284
msgid "Show pending builds on the homepage"
msgstr ""
-#: common/models.py:1283
+#: common/models.py:1290
msgid "Show overdue builds"
msgstr ""
-#: common/models.py:1284
+#: common/models.py:1291
msgid "Show overdue builds on the homepage"
msgstr ""
-#: common/models.py:1290
+#: common/models.py:1297
msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:1291
+#: common/models.py:1298
msgid "Show outstanding POs on the homepage"
msgstr ""
-#: common/models.py:1297
+#: common/models.py:1304
msgid "Show overdue POs"
msgstr ""
-#: common/models.py:1298
+#: common/models.py:1305
msgid "Show overdue POs on the homepage"
msgstr ""
-#: common/models.py:1304
+#: common/models.py:1311
msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:1305
+#: common/models.py:1312
msgid "Show outstanding SOs on the homepage"
msgstr ""
-#: common/models.py:1311
+#: common/models.py:1318
msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:1312
+#: common/models.py:1319
msgid "Show overdue SOs on the homepage"
msgstr ""
-#: common/models.py:1317
+#: common/models.py:1324
msgid "Enable label printing"
msgstr ""
-#: common/models.py:1318
+#: common/models.py:1325
msgid "Enable label printing from the web interface"
msgstr ""
-#: common/models.py:1324
+#: common/models.py:1331
msgid "Inline label display"
msgstr ""
-#: common/models.py:1325
+#: common/models.py:1332
msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:1331
+#: common/models.py:1338
msgid "Inline report display"
msgstr ""
-#: common/models.py:1332
+#: common/models.py:1339
msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:1338
+#: common/models.py:1345
msgid "Search Parts"
msgstr ""
-#: common/models.py:1339
+#: common/models.py:1346
msgid "Display parts in search preview window"
msgstr ""
-#: common/models.py:1345
+#: common/models.py:1352
msgid "Seach Supplier Parts"
msgstr ""
-#: common/models.py:1346
+#: common/models.py:1353
msgid "Display supplier parts in search preview window"
msgstr ""
-#: common/models.py:1352
+#: common/models.py:1359
msgid "Search Manufacturer Parts"
msgstr ""
-#: common/models.py:1353
+#: common/models.py:1360
msgid "Display manufacturer parts in search preview window"
msgstr ""
-#: common/models.py:1359
+#: common/models.py:1366
msgid "Hide Inactive Parts"
msgstr ""
-#: common/models.py:1360
+#: common/models.py:1367
msgid "Excluded inactive parts from search preview window"
msgstr ""
-#: common/models.py:1366
+#: common/models.py:1373
msgid "Search Categories"
msgstr ""
-#: common/models.py:1367
+#: common/models.py:1374
msgid "Display part categories in search preview window"
msgstr ""
-#: common/models.py:1373
+#: common/models.py:1380
msgid "Search Stock"
msgstr ""
-#: common/models.py:1374
+#: common/models.py:1381
msgid "Display stock items in search preview window"
msgstr ""
-#: common/models.py:1380
+#: common/models.py:1387
msgid "Hide Unavailable Stock Items"
msgstr ""
-#: common/models.py:1381
+#: common/models.py:1388
msgid "Exclude stock items which are not available from the search preview window"
msgstr ""
-#: common/models.py:1387
+#: common/models.py:1394
msgid "Search Locations"
msgstr ""
-#: common/models.py:1388
+#: common/models.py:1395
msgid "Display stock locations in search preview window"
msgstr ""
-#: common/models.py:1394
+#: common/models.py:1401
msgid "Search Companies"
msgstr ""
-#: common/models.py:1395
+#: common/models.py:1402
msgid "Display companies in search preview window"
msgstr ""
-#: common/models.py:1401
+#: common/models.py:1408
msgid "Search Purchase Orders"
msgstr ""
-#: common/models.py:1402
+#: common/models.py:1409
msgid "Display purchase orders in search preview window"
msgstr ""
-#: common/models.py:1408
+#: common/models.py:1415
msgid "Exclude Inactive Purchase Orders"
msgstr ""
-#: common/models.py:1409
+#: common/models.py:1416
msgid "Exclude inactive purchase orders from search preview window"
msgstr ""
-#: common/models.py:1415
+#: common/models.py:1422
msgid "Search Sales Orders"
msgstr ""
-#: common/models.py:1416
+#: common/models.py:1423
msgid "Display sales orders in search preview window"
msgstr ""
-#: common/models.py:1422
+#: common/models.py:1429
msgid "Exclude Inactive Sales Orders"
msgstr ""
-#: common/models.py:1423
+#: common/models.py:1430
msgid "Exclude inactive sales orders from search preview window"
msgstr ""
-#: common/models.py:1429
+#: common/models.py:1436
msgid "Search Preview Results"
msgstr ""
-#: common/models.py:1430
+#: common/models.py:1437
msgid "Number of results to show in each section of the search preview window"
msgstr ""
-#: common/models.py:1436
+#: common/models.py:1443
msgid "Show Quantity in Forms"
msgstr ""
-#: common/models.py:1437
+#: common/models.py:1444
msgid "Display available part quantity in some forms"
msgstr ""
-#: common/models.py:1443
+#: common/models.py:1450
msgid "Escape Key Closes Forms"
msgstr ""
-#: common/models.py:1444
+#: common/models.py:1451
msgid "Use the escape key to close modal forms"
msgstr ""
-#: common/models.py:1450
+#: common/models.py:1457
msgid "Fixed Navbar"
msgstr ""
-#: common/models.py:1451
+#: common/models.py:1458
msgid "The navbar position is fixed to the top of the screen"
msgstr ""
-#: common/models.py:1457
+#: common/models.py:1464
msgid "Date Format"
msgstr ""
-#: common/models.py:1458
+#: common/models.py:1465
msgid "Preferred format for displaying dates"
msgstr ""
-#: common/models.py:1472 part/templates/part/detail.html:39
+#: common/models.py:1479 part/templates/part/detail.html:39
msgid "Part Scheduling"
msgstr ""
-#: common/models.py:1473
+#: common/models.py:1480
msgid "Display part scheduling information"
msgstr ""
-#: common/models.py:1537 company/forms.py:37
+#: common/models.py:1544 company/forms.py:37
msgid "Price break quantity"
msgstr ""
-#: common/models.py:1544 company/serializers.py:288
-#: company/templates/company/supplier_part.html:263 order/models.py:949
-#: templates/js/translated/part.js:998 templates/js/translated/part.js:1974
+#: common/models.py:1551 company/serializers.py:290
+#: company/templates/company/supplier_part.html:263 order/models.py:965
+#: templates/js/translated/part.js:1042 templates/js/translated/part.js:2070
msgid "Price"
msgstr ""
-#: common/models.py:1545
+#: common/models.py:1552
msgid "Unit price at specified quantity"
msgstr ""
-#: common/models.py:1705 common/models.py:1883
+#: common/models.py:1712 common/models.py:1890
msgid "Endpoint"
msgstr ""
-#: common/models.py:1706
+#: common/models.py:1713
msgid "Endpoint at which this webhook is received"
msgstr ""
-#: common/models.py:1715
+#: common/models.py:1722
msgid "Name for this webhook"
msgstr ""
-#: common/models.py:1720 part/models.py:911 plugin/models.py:99
+#: common/models.py:1727 part/models.py:911 plugin/models.py:99
#: templates/js/translated/table_filters.js:34
#: templates/js/translated/table_filters.js:96
#: templates/js/translated/table_filters.js:308
@@ -2457,79 +2474,89 @@ msgstr ""
msgid "Active"
msgstr ""
-#: common/models.py:1721
+#: common/models.py:1728
msgid "Is this webhook active"
msgstr ""
-#: common/models.py:1735
+#: common/models.py:1742
msgid "Token"
msgstr ""
-#: common/models.py:1736
+#: common/models.py:1743
msgid "Token for access"
msgstr ""
-#: common/models.py:1743
+#: common/models.py:1750
msgid "Secret"
msgstr ""
-#: common/models.py:1744
+#: common/models.py:1751
msgid "Shared secret for HMAC"
msgstr ""
-#: common/models.py:1850
+#: common/models.py:1857
msgid "Message ID"
msgstr ""
-#: common/models.py:1851
+#: common/models.py:1858
msgid "Unique identifier for this message"
msgstr ""
-#: common/models.py:1859
+#: common/models.py:1866
msgid "Host"
msgstr ""
-#: common/models.py:1860
+#: common/models.py:1867
msgid "Host from which this message was received"
msgstr ""
-#: common/models.py:1867
+#: common/models.py:1874
msgid "Header"
msgstr ""
-#: common/models.py:1868
+#: common/models.py:1875
msgid "Header of this message"
msgstr ""
-#: common/models.py:1874
+#: common/models.py:1881
msgid "Body"
msgstr ""
-#: common/models.py:1875
+#: common/models.py:1882
msgid "Body of this message"
msgstr ""
-#: common/models.py:1884
+#: common/models.py:1891
msgid "Endpoint on which this message was received"
msgstr ""
-#: common/models.py:1889
+#: common/models.py:1896
msgid "Worked on"
msgstr ""
-#: common/models.py:1890
+#: common/models.py:1897
msgid "Was the work on this message finished?"
msgstr ""
+#: common/notifications.py:292
+#, python-brace-format
+msgid "New {verbose_name}"
+msgstr ""
+
+#: common/notifications.py:294
+#, python-brace-format
+msgid "A new {verbose_name} has been created and ,assigned to you"
+msgstr ""
+
#: common/views.py:87 order/templates/order/purchase_order_detail.html:23
-#: order/views.py:102 part/views.py:191
+#: order/views.py:102 part/views.py:116
#: templates/patterns/wizard/upload.html:37
msgid "Upload File"
msgstr ""
#: common/views.py:88 order/views.py:103
#: part/templates/part/import_wizard/ajax_match_fields.html:45
-#: part/views.py:192 templates/patterns/wizard/match_fields.html:51
+#: part/views.py:117 templates/patterns/wizard/match_fields.html:51
msgid "Match Fields"
msgstr ""
@@ -2545,19 +2572,19 @@ msgstr ""
msgid "Parts imported"
msgstr ""
-#: common/views.py:507 order/templates/order/order_wizard/match_parts.html:19
+#: common/views.py:511 order/templates/order/order_wizard/match_parts.html:19
#: part/templates/part/import_wizard/match_references.html:19
#: templates/patterns/wizard/match_fields.html:26
#: templates/patterns/wizard/upload.html:35
msgid "Previous Step"
msgstr ""
-#: company/forms.py:16 part/forms.py:21
+#: company/forms.py:16 part/forms.py:18
#: templates/InvenTree/settings/mixins/urls.html:14
msgid "URL"
msgstr ""
-#: company/forms.py:17 part/forms.py:22
+#: company/forms.py:17 part/forms.py:19
msgid "Image URL"
msgstr ""
@@ -2571,7 +2598,7 @@ msgstr ""
#: company/models.py:104 company/templates/company/company_base.html:100
#: templates/InvenTree/settings/plugin_settings.html:55
-#: templates/js/translated/company.js:405
+#: templates/js/translated/company.js:399
msgid "Website"
msgstr ""
@@ -2644,9 +2671,9 @@ msgstr ""
msgid "Does this company manufacture parts?"
msgstr ""
-#: company/models.py:144 company/serializers.py:294
-#: company/templates/company/company_base.html:106 part/serializers.py:137
-#: part/serializers.py:168 stock/serializers.py:162
+#: company/models.py:144 company/serializers.py:296
+#: company/templates/company/company_base.html:106 part/serializers.py:139
+#: part/serializers.py:170 stock/serializers.py:162
msgid "Currency"
msgstr ""
@@ -2667,10 +2694,10 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:90
#: company/templates/company/supplier_part.html:103
#: stock/templates/stock/item_base.html:212
-#: templates/js/translated/company.js:389
-#: templates/js/translated/company.js:488
-#: templates/js/translated/company.js:632
-#: templates/js/translated/company.js:917 templates/js/translated/part.js:235
+#: templates/js/translated/company.js:383
+#: templates/js/translated/company.js:484
+#: templates/js/translated/company.js:617
+#: templates/js/translated/company.js:902 templates/js/translated/part.js:235
#: templates/js/translated/table_filters.js:411
msgid "Manufacturer"
msgstr ""
@@ -2681,11 +2708,11 @@ msgstr ""
#: company/models.py:266 company/templates/company/manufacturer_part.html:101
#: company/templates/company/supplier_part.html:111
-#: templates/js/translated/company.js:255
-#: templates/js/translated/company.js:487
-#: templates/js/translated/company.js:648
-#: templates/js/translated/company.js:935 templates/js/translated/order.js:1907
-#: templates/js/translated/part.js:246 templates/js/translated/part.js:956
+#: templates/js/translated/company.js:256
+#: templates/js/translated/company.js:483
+#: templates/js/translated/company.js:633
+#: templates/js/translated/company.js:920 templates/js/translated/order.js:1907
+#: templates/js/translated/part.js:246 templates/js/translated/part.js:1000
msgid "MPN"
msgstr ""
@@ -2714,9 +2741,9 @@ msgstr ""
#: company/models.py:361
#: report/templates/report/inventree_test_report_base.html:95
-#: stock/models.py:2080 templates/js/translated/company.js:540
-#: templates/js/translated/company.js:763 templates/js/translated/part.js:776
-#: templates/js/translated/stock.js:1294
+#: stock/models.py:2084 templates/js/translated/company.js:531
+#: templates/js/translated/company.js:748 templates/js/translated/part.js:820
+#: templates/js/translated/stock.js:1304
msgid "Value"
msgstr ""
@@ -2724,10 +2751,10 @@ msgstr ""
msgid "Parameter value"
msgstr ""
-#: company/models.py:368 part/models.py:878 part/models.py:2339
+#: company/models.py:368 part/models.py:878 part/models.py:2327
#: part/templates/part/part_base.html:280
#: templates/InvenTree/settings/settings.html:351
-#: templates/js/translated/company.js:769 templates/js/translated/part.js:782
+#: templates/js/translated/company.js:754 templates/js/translated/part.js:826
msgid "Units"
msgstr ""
@@ -2740,13 +2767,14 @@ msgid "Linked manufacturer part must reference the same base part"
msgstr ""
#: company/models.py:487 company/templates/company/company_base.html:81
-#: company/templates/company/supplier_part.html:87 order/models.py:303
+#: company/templates/company/supplier_part.html:87 order/models.py:308
#: order/templates/order/order_base.html:112 part/bom.py:237 part/bom.py:265
#: stock/templates/stock/item_base.html:229
-#: templates/js/translated/company.js:254
-#: templates/js/translated/company.js:393
-#: templates/js/translated/company.js:891 templates/js/translated/order.js:1643
-#: templates/js/translated/part.js:216 templates/js/translated/part.js:924
+#: templates/email/overdue_purchase_order.html:16
+#: templates/js/translated/company.js:255
+#: templates/js/translated/company.js:387
+#: templates/js/translated/company.js:876 templates/js/translated/order.js:1643
+#: templates/js/translated/part.js:216 templates/js/translated/part.js:968
#: templates/js/translated/table_filters.js:415
msgid "Supplier"
msgstr ""
@@ -2756,9 +2784,9 @@ msgid "Select supplier"
msgstr ""
#: company/models.py:493 company/templates/company/supplier_part.html:97
-#: part/bom.py:238 part/bom.py:266 templates/js/translated/company.js:253
+#: part/bom.py:238 part/bom.py:266 templates/js/translated/company.js:254
#: templates/js/translated/order.js:1894 templates/js/translated/part.js:227
-#: templates/js/translated/part.js:942
+#: templates/js/translated/part.js:986
msgid "SKU"
msgstr ""
@@ -2779,23 +2807,23 @@ msgid "Supplier part description"
msgstr ""
#: company/models.py:518 company/templates/company/supplier_part.html:125
-#: part/models.py:2573 part/templates/part/upload_bom.html:59
+#: part/models.py:2561 part/templates/part/upload_bom.html:59
#: report/templates/report/inventree_po_report.html:92
#: report/templates/report/inventree_so_report.html:93 stock/serializers.py:387
msgid "Note"
msgstr ""
-#: company/models.py:522 part/models.py:1688
+#: company/models.py:522 part/models.py:1683
msgid "base cost"
msgstr ""
-#: company/models.py:522 part/models.py:1688
+#: company/models.py:522 part/models.py:1683
msgid "Minimum charge (e.g. stocking fee)"
msgstr ""
#: company/models.py:524 company/templates/company/supplier_part.html:118
#: stock/models.py:608 stock/templates/stock/item_base.html:245
-#: templates/js/translated/company.js:967 templates/js/translated/stock.js:1912
+#: templates/js/translated/company.js:952 templates/js/translated/stock.js:1922
msgid "Packaging"
msgstr ""
@@ -2803,7 +2831,7 @@ msgstr ""
msgid "Part packaging"
msgstr ""
-#: company/models.py:526 part/models.py:1690
+#: company/models.py:526 part/models.py:1685
msgid "multiple"
msgstr ""
@@ -2825,7 +2853,7 @@ msgstr ""
#: company/templates/company/company_base.html:8
#: company/templates/company/company_base.html:12
-#: templates/InvenTree/search.html:177 templates/js/translated/company.js:378
+#: templates/InvenTree/search.html:177 templates/js/translated/company.js:372
msgid "Company"
msgstr ""
@@ -2843,7 +2871,7 @@ msgid "Edit company information"
msgstr ""
#: company/templates/company/company_base.html:34
-#: templates/js/translated/company.js:321
+#: templates/js/translated/company.js:315
msgid "Edit Company"
msgstr ""
@@ -2866,12 +2894,13 @@ msgstr ""
msgid "Download image from URL"
msgstr ""
-#: company/templates/company/company_base.html:86 order/models.py:649
+#: company/templates/company/company_base.html:86 order/models.py:665
#: order/templates/order/sales_order_base.html:116 stock/models.py:627
-#: stock/models.py:628 stock/serializers.py:758
+#: stock/models.py:628 stock/serializers.py:745
#: stock/templates/stock/item_base.html:401
-#: templates/js/translated/company.js:385 templates/js/translated/order.js:2458
-#: templates/js/translated/stock.js:2431
+#: templates/email/overdue_sales_order.html:16
+#: templates/js/translated/company.js:379 templates/js/translated/order.js:2458
+#: templates/js/translated/stock.js:2441
#: templates/js/translated/table_filters.js:419
msgid "Customer"
msgstr ""
@@ -2999,7 +3028,7 @@ msgid "Supplier List"
msgstr ""
#: company/templates/company/manufacturer_part.html:15 company/views.py:45
-#: part/templates/part/prices.html:170 templates/InvenTree/search.html:179
+#: part/templates/part/prices.html:172 templates/InvenTree/search.html:179
#: templates/navbar.html:49
msgid "Manufacturers"
msgstr ""
@@ -3012,12 +3041,12 @@ msgid "Order part"
msgstr ""
#: company/templates/company/manufacturer_part.html:39
-#: templates/js/translated/company.js:680
+#: templates/js/translated/company.js:665
msgid "Edit manufacturer part"
msgstr ""
#: company/templates/company/manufacturer_part.html:43
-#: templates/js/translated/company.js:681
+#: templates/js/translated/company.js:666
msgid "Delete manufacturer part"
msgstr ""
@@ -3032,7 +3061,7 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:119
#: company/templates/company/supplier_part.html:15 company/views.py:39
-#: part/templates/part/part_sidebar.html:35 part/templates/part/prices.html:166
+#: part/templates/part/part_sidebar.html:35 part/templates/part/prices.html:168
#: templates/InvenTree/search.html:189 templates/navbar.html:48
msgid "Suppliers"
msgstr ""
@@ -3092,18 +3121,18 @@ msgstr ""
#: company/templates/company/supplier_part.html:7
#: company/templates/company/supplier_part.html:24 stock/models.py:592
#: stock/templates/stock/item_base.html:238
-#: templates/js/translated/company.js:907 templates/js/translated/order.js:884
-#: templates/js/translated/stock.js:1869
+#: templates/js/translated/company.js:892 templates/js/translated/order.js:884
+#: templates/js/translated/stock.js:1879
msgid "Supplier Part"
msgstr ""
#: company/templates/company/supplier_part.html:38
-#: templates/js/translated/company.js:980
+#: templates/js/translated/company.js:965
msgid "Edit supplier part"
msgstr ""
#: company/templates/company/supplier_part.html:42
-#: templates/js/translated/company.js:981
+#: templates/js/translated/company.js:966
msgid "Delete supplier part"
msgstr ""
@@ -3123,7 +3152,7 @@ msgstr ""
#: company/templates/company/supplier_part.html:148
#: part/templates/part/detail.html:24 stock/templates/stock/location.html:177
-#: templates/js/translated/stock.js:380
+#: templates/js/translated/stock.js:379
msgid "New Stock Item"
msgstr ""
@@ -3144,7 +3173,7 @@ msgstr ""
#: company/templates/company/supplier_part.html:191
#: company/templates/company/supplier_part.html:305
-#: part/templates/part/prices.html:274 templates/js/translated/part.js:2046
+#: part/templates/part/prices.html:276 templates/js/translated/part.js:2142
msgid "Add Price Break"
msgstr ""
@@ -3153,12 +3182,12 @@ msgid "No price break information found"
msgstr ""
#: company/templates/company/supplier_part.html:231
-#: templates/js/translated/part.js:2056
+#: templates/js/translated/part.js:2152
msgid "Delete Price Break"
msgstr ""
#: company/templates/company/supplier_part.html:245
-#: templates/js/translated/part.js:2070
+#: templates/js/translated/part.js:2166
msgid "Edit Price Break"
msgstr ""
@@ -3180,9 +3209,9 @@ msgstr ""
#: stock/templates/stock/stock_app_base.html:10
#: templates/InvenTree/search.html:151
#: templates/InvenTree/settings/sidebar.html:43
-#: templates/js/translated/bom.js:554 templates/js/translated/part.js:678
-#: templates/js/translated/part.js:1226 templates/js/translated/part.js:1387
-#: templates/js/translated/stock.js:904 templates/js/translated/stock.js:1687
+#: templates/js/translated/bom.js:554 templates/js/translated/part.js:722
+#: templates/js/translated/part.js:1270 templates/js/translated/part.js:1431
+#: templates/js/translated/stock.js:903 templates/js/translated/stock.js:1697
#: templates/navbar.html:31
msgid "Stock"
msgstr ""
@@ -3209,7 +3238,7 @@ msgstr ""
#: stock/templates/stock/location.html:173
#: stock/templates/stock/location_sidebar.html:7
#: templates/InvenTree/search.html:153 templates/js/translated/search.js:223
-#: templates/js/translated/stock.js:2307 users/models.py:39
+#: templates/js/translated/stock.js:2317 users/models.py:39
msgid "Stock Items"
msgstr ""
@@ -3238,20 +3267,20 @@ msgstr ""
msgid "New Company"
msgstr ""
-#: company/views.py:112 part/views.py:576
+#: company/views.py:112 part/views.py:501
msgid "Download Image"
msgstr ""
-#: company/views.py:139 part/views.py:606
+#: company/views.py:139 part/views.py:531
msgid "Image size exceeds maximum allowable size for download"
msgstr ""
-#: company/views.py:146 part/views.py:613
+#: company/views.py:146 part/views.py:538
#, python-brace-format
msgid "Invalid response: {code}"
msgstr ""
-#: company/views.py:155 part/views.py:622
+#: company/views.py:155 part/views.py:547
msgid "Supplied URL is not a valid image file"
msgstr ""
@@ -3320,313 +3349,314 @@ msgstr ""
msgid "Part query filters (comma-separated value of key=value pairs)"
msgstr ""
-#: order/models.py:133
+#: order/models.py:134
msgid "Order description"
msgstr ""
-#: order/models.py:135 order/models.py:1236
+#: order/models.py:136 order/models.py:1252
msgid "Link to external page"
msgstr ""
-#: order/models.py:143
+#: order/models.py:144
msgid "Created By"
msgstr ""
-#: order/models.py:150
+#: order/models.py:151
msgid "User or group responsible for this order"
msgstr ""
-#: order/models.py:155
+#: order/models.py:156
msgid "Order notes"
msgstr ""
-#: order/models.py:289 order/models.py:639
+#: order/models.py:294 order/models.py:655
msgid "Order reference"
msgstr ""
-#: order/models.py:294 order/models.py:654
+#: order/models.py:299 order/models.py:670
msgid "Purchase order status"
msgstr ""
-#: order/models.py:304
+#: order/models.py:309
msgid "Company from which the items are being ordered"
msgstr ""
-#: order/models.py:307 order/templates/order/order_base.html:124
+#: order/models.py:312 order/templates/order/order_base.html:124
#: templates/js/translated/order.js:1652
msgid "Supplier Reference"
msgstr ""
-#: order/models.py:307
+#: order/models.py:312
msgid "Supplier order reference code"
msgstr ""
-#: order/models.py:314
+#: order/models.py:319
msgid "received by"
msgstr ""
-#: order/models.py:319
+#: order/models.py:324
msgid "Issue Date"
msgstr ""
-#: order/models.py:320
+#: order/models.py:325
msgid "Date order was issued"
msgstr ""
-#: order/models.py:325
+#: order/models.py:330
msgid "Target Delivery Date"
msgstr ""
-#: order/models.py:326
+#: order/models.py:331
msgid "Expected date for order delivery. Order will be overdue after this date."
msgstr ""
-#: order/models.py:332
+#: order/models.py:337
msgid "Date order was completed"
msgstr ""
-#: order/models.py:368
+#: order/models.py:373
msgid "Part supplier must match PO supplier"
msgstr ""
-#: order/models.py:512
+#: order/models.py:517
msgid "Quantity must be a positive number"
msgstr ""
-#: order/models.py:650
+#: order/models.py:666
msgid "Company to which the items are being sold"
msgstr ""
-#: order/models.py:656
+#: order/models.py:672
msgid "Customer Reference "
msgstr ""
-#: order/models.py:656
+#: order/models.py:672
msgid "Customer order reference code"
msgstr ""
-#: order/models.py:661
+#: order/models.py:677
msgid "Target date for order completion. Order will be overdue after this date."
msgstr ""
-#: order/models.py:664 order/models.py:1190
+#: order/models.py:680 order/models.py:1206
#: templates/js/translated/order.js:2505 templates/js/translated/order.js:2656
msgid "Shipment Date"
msgstr ""
-#: order/models.py:671
+#: order/models.py:687
msgid "shipped by"
msgstr ""
-#: order/models.py:726
+#: order/models.py:742
msgid "Order cannot be completed as no parts have been assigned"
msgstr ""
-#: order/models.py:730
+#: order/models.py:746
msgid "Only a pending order can be marked as complete"
msgstr ""
-#: order/models.py:733
+#: order/models.py:749
msgid "Order cannot be completed as there are incomplete shipments"
msgstr ""
-#: order/models.py:736
+#: order/models.py:752
msgid "Order cannot be completed as there are incomplete line items"
msgstr ""
-#: order/models.py:910
+#: order/models.py:926
msgid "Item quantity"
msgstr ""
-#: order/models.py:916
+#: order/models.py:932
msgid "Line item reference"
msgstr ""
-#: order/models.py:918
+#: order/models.py:934
msgid "Line item notes"
msgstr ""
-#: order/models.py:923
+#: order/models.py:939
msgid "Target shipping date for this line item"
msgstr ""
-#: order/models.py:941
+#: order/models.py:957
msgid "Context"
msgstr ""
-#: order/models.py:942
+#: order/models.py:958
msgid "Additional context for this line"
msgstr ""
-#: order/models.py:950
+#: order/models.py:966
msgid "Unit price"
msgstr ""
-#: order/models.py:980
+#: order/models.py:996
msgid "Supplier part must match supplier"
msgstr ""
-#: order/models.py:988
+#: order/models.py:1004
msgid "deleted"
msgstr ""
-#: order/models.py:994 order/models.py:1074 order/models.py:1099
-#: order/models.py:1184 order/models.py:1320
+#: order/models.py:1010 order/models.py:1090 order/models.py:1115
+#: order/models.py:1200 order/models.py:1336
#: templates/js/translated/order.js:3112
msgid "Order"
msgstr ""
-#: order/models.py:995 order/models.py:1074
+#: order/models.py:1011 order/models.py:1090
#: order/templates/order/order_base.html:9
#: order/templates/order/order_base.html:18
#: report/templates/report/inventree_po_report.html:76
#: stock/templates/stock/item_base.html:184
+#: templates/email/overdue_purchase_order.html:15
#: templates/js/translated/order.js:885 templates/js/translated/order.js:1621
-#: templates/js/translated/part.js:899 templates/js/translated/stock.js:1846
-#: templates/js/translated/stock.js:2412
+#: templates/js/translated/part.js:943 templates/js/translated/stock.js:1856
+#: templates/js/translated/stock.js:2422
msgid "Purchase Order"
msgstr ""
-#: order/models.py:1013
+#: order/models.py:1029
msgid "Supplier part"
msgstr ""
-#: order/models.py:1020 order/templates/order/order_base.html:169
+#: order/models.py:1036 order/templates/order/order_base.html:169
#: templates/js/translated/order.js:1318 templates/js/translated/order.js:2009
-#: templates/js/translated/part.js:993 templates/js/translated/part.js:1020
+#: templates/js/translated/part.js:1037 templates/js/translated/part.js:1064
#: templates/js/translated/table_filters.js:330
msgid "Received"
msgstr ""
-#: order/models.py:1021
+#: order/models.py:1037
msgid "Number of items received"
msgstr ""
-#: order/models.py:1028 part/templates/part/prices.html:179 stock/models.py:722
+#: order/models.py:1044 part/templates/part/prices.html:181 stock/models.py:722
#: stock/serializers.py:153 stock/templates/stock/item_base.html:191
-#: templates/js/translated/stock.js:1900
+#: templates/js/translated/stock.js:1910
msgid "Purchase Price"
msgstr ""
-#: order/models.py:1029
+#: order/models.py:1045
msgid "Unit purchase price"
msgstr ""
-#: order/models.py:1037
+#: order/models.py:1053
msgid "Where does the Purchaser want this item to be stored?"
msgstr ""
-#: order/models.py:1109 part/templates/part/part_pricing.html:112
-#: part/templates/part/prices.html:119 part/templates/part/prices.html:288
+#: order/models.py:1125 part/templates/part/part_pricing.html:115
+#: part/templates/part/prices.html:121 part/templates/part/prices.html:290
msgid "Sale Price"
msgstr ""
-#: order/models.py:1110
+#: order/models.py:1126
msgid "Unit sale price"
msgstr ""
-#: order/models.py:1115
+#: order/models.py:1131
msgid "Shipped quantity"
msgstr ""
-#: order/models.py:1191
+#: order/models.py:1207
msgid "Date of shipment"
msgstr ""
-#: order/models.py:1198
+#: order/models.py:1214
msgid "Checked By"
msgstr ""
-#: order/models.py:1199
+#: order/models.py:1215
msgid "User who checked this shipment"
msgstr ""
-#: order/models.py:1207
+#: order/models.py:1223
msgid "Shipment number"
msgstr ""
-#: order/models.py:1214
+#: order/models.py:1230
msgid "Shipment notes"
msgstr ""
-#: order/models.py:1221
+#: order/models.py:1237
msgid "Tracking Number"
msgstr ""
-#: order/models.py:1222
+#: order/models.py:1238
msgid "Shipment tracking information"
msgstr ""
-#: order/models.py:1229
+#: order/models.py:1245
msgid "Invoice Number"
msgstr ""
-#: order/models.py:1230
+#: order/models.py:1246
msgid "Reference number for associated invoice"
msgstr ""
-#: order/models.py:1248
+#: order/models.py:1264
msgid "Shipment has already been sent"
msgstr ""
-#: order/models.py:1251
+#: order/models.py:1267
msgid "Shipment has no allocated stock items"
msgstr ""
-#: order/models.py:1354 order/models.py:1356
+#: order/models.py:1370 order/models.py:1372
msgid "Stock item has not been assigned"
msgstr ""
-#: order/models.py:1360
+#: order/models.py:1376
msgid "Cannot allocate stock item to a line with a different part"
msgstr ""
-#: order/models.py:1362
+#: order/models.py:1378
msgid "Cannot allocate stock to a line without a part"
msgstr ""
-#: order/models.py:1365
+#: order/models.py:1381
msgid "Allocation quantity cannot exceed stock quantity"
msgstr ""
-#: order/models.py:1369
+#: order/models.py:1385
msgid "StockItem is over-allocated"
msgstr ""
-#: order/models.py:1375 order/serializers.py:1045
+#: order/models.py:1391 order/serializers.py:1047
msgid "Quantity must be 1 for serialized stock item"
msgstr ""
-#: order/models.py:1378
+#: order/models.py:1394
msgid "Sales order does not match shipment"
msgstr ""
-#: order/models.py:1379
+#: order/models.py:1395
msgid "Shipment does not match sales order"
msgstr ""
-#: order/models.py:1387
+#: order/models.py:1403
msgid "Line"
msgstr ""
-#: order/models.py:1395 order/serializers.py:1149 order/serializers.py:1273
+#: order/models.py:1411 order/serializers.py:1151 order/serializers.py:1275
#: templates/js/translated/model_renderers.js:301
msgid "Shipment"
msgstr ""
-#: order/models.py:1396
+#: order/models.py:1412
msgid "Sales order shipment reference"
msgstr ""
-#: order/models.py:1408 templates/InvenTree/notifications/notifications.html:70
+#: order/models.py:1424 templates/InvenTree/notifications/notifications.html:70
msgid "Item"
msgstr ""
-#: order/models.py:1409
+#: order/models.py:1425
msgid "Select stock item to allocate"
msgstr ""
-#: order/models.py:1412
+#: order/models.py:1428
msgid "Enter stock allocation quantity"
msgstr ""
@@ -3662,7 +3692,7 @@ msgstr ""
msgid "Purchase order must match supplier"
msgstr ""
-#: order/serializers.py:406 order/serializers.py:1117
+#: order/serializers.py:406 order/serializers.py:1119
msgid "Line Item"
msgstr ""
@@ -3710,42 +3740,60 @@ msgstr ""
msgid "Supplied barcode values must be unique"
msgstr ""
-#: order/serializers.py:866
+#: order/serializers.py:868
msgid "Sale price currency"
msgstr ""
-#: order/serializers.py:947
+#: order/serializers.py:949
msgid "No shipment details provided"
msgstr ""
-#: order/serializers.py:1006 order/serializers.py:1126
+#: order/serializers.py:1008 order/serializers.py:1128
msgid "Line item is not associated with this order"
msgstr ""
-#: order/serializers.py:1028
+#: order/serializers.py:1030
msgid "Quantity must be positive"
msgstr ""
-#: order/serializers.py:1139
+#: order/serializers.py:1141
msgid "Enter serial numbers to allocate"
msgstr ""
-#: order/serializers.py:1161 order/serializers.py:1281
+#: order/serializers.py:1163 order/serializers.py:1283
msgid "Shipment has already been shipped"
msgstr ""
-#: order/serializers.py:1164 order/serializers.py:1284
+#: order/serializers.py:1166 order/serializers.py:1286
msgid "Shipment is not associated with this order"
msgstr ""
-#: order/serializers.py:1214
+#: order/serializers.py:1216
msgid "No match found for the following serial numbers"
msgstr ""
-#: order/serializers.py:1224
+#: order/serializers.py:1226
msgid "The following serial numbers are already allocated"
msgstr ""
+#: order/tasks.py:26
+msgid "Overdue Purchase Order"
+msgstr ""
+
+#: order/tasks.py:31
+#, python-brace-format
+msgid "Purchase order {po} is now overdue"
+msgstr ""
+
+#: order/tasks.py:88
+msgid "Overdue Sales Order"
+msgstr ""
+
+#: order/tasks.py:93
+#, python-brace-format
+msgid "Sales order {so} is now overdue"
+msgstr ""
+
#: order/templates/order/order_base.html:33
msgid "Print purchase order report"
msgstr ""
@@ -3870,8 +3918,8 @@ msgstr ""
#: templates/js/translated/bom.js:77 templates/js/translated/build.js:427
#: templates/js/translated/build.js:579 templates/js/translated/build.js:1972
#: templates/js/translated/order.js:833 templates/js/translated/order.js:1265
-#: templates/js/translated/order.js:2731 templates/js/translated/stock.js:570
-#: templates/js/translated/stock.js:738
+#: templates/js/translated/order.js:2731 templates/js/translated/stock.js:569
+#: templates/js/translated/stock.js:737
#: templates/patterns/wizard/match_fields.html:70
msgid "Remove row"
msgstr ""
@@ -3990,7 +4038,7 @@ msgid "Pending Shipments"
msgstr ""
#: order/templates/order/sales_order_detail.html:70
-#: templates/attachment_table.html:6 templates/js/translated/bom.js:1053
+#: templates/attachment_table.html:6 templates/js/translated/bom.js:1047
#: templates/js/translated/build.js:1880
msgid "Actions"
msgstr ""
@@ -4021,47 +4069,47 @@ msgstr ""
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr ""
-#: part/api.py:481
+#: part/api.py:482
msgid "Incoming Purchase Order"
msgstr ""
-#: part/api.py:501
+#: part/api.py:502
msgid "Outgoing Sales Order"
msgstr ""
-#: part/api.py:519
+#: part/api.py:520
msgid "Stock produced by Build Order"
msgstr ""
-#: part/api.py:551
+#: part/api.py:552
msgid "Stock required for Build Order"
msgstr ""
-#: part/api.py:637
+#: part/api.py:638
msgid "Valid"
msgstr ""
-#: part/api.py:638
+#: part/api.py:639
msgid "Validate entire Bill of Materials"
msgstr ""
-#: part/api.py:644
+#: part/api.py:645
msgid "This option must be selected"
msgstr ""
-#: part/api.py:1010
+#: part/api.py:1011
msgid "Must be greater than zero"
msgstr ""
-#: part/api.py:1014
+#: part/api.py:1015
msgid "Must be a valid quantity"
msgstr ""
-#: part/api.py:1029
+#: part/api.py:1030
msgid "Specify location for initial part stock"
msgstr ""
-#: part/api.py:1060 part/api.py:1064 part/api.py:1079 part/api.py:1083
+#: part/api.py:1061 part/api.py:1065 part/api.py:1080 part/api.py:1084
msgid "This field is required"
msgstr ""
@@ -4080,17 +4128,13 @@ msgid "Available Stock"
msgstr ""
#: part/bom.py:130 part/templates/part/part_base.html:207
-#: templates/js/translated/part.js:517 templates/js/translated/part.js:537
-#: templates/js/translated/part.js:1229 templates/js/translated/part.js:1401
-#: templates/js/translated/part.js:1417
+#: templates/js/translated/part.js:561 templates/js/translated/part.js:581
+#: templates/js/translated/part.js:1273 templates/js/translated/part.js:1445
+#: templates/js/translated/part.js:1461
msgid "On Order"
msgstr ""
-#: part/forms.py:59
-msgid "Select part category"
-msgstr ""
-
-#: part/forms.py:69
+#: part/forms.py:60
msgid "Input quantity for price calculation"
msgstr ""
@@ -4106,7 +4150,7 @@ msgstr ""
msgid "Default keywords for parts in this category"
msgstr ""
-#: part/models.py:115 part/models.py:2415 part/templates/part/category.html:15
+#: part/models.py:115 part/models.py:2403 part/templates/part/category.html:15
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr ""
@@ -4123,7 +4167,7 @@ msgstr ""
#: part/templates/part/category_sidebar.html:9
#: templates/InvenTree/index.html:85 templates/InvenTree/search.html:82
#: templates/InvenTree/settings/sidebar.html:39
-#: templates/js/translated/part.js:1768 templates/js/translated/search.js:144
+#: templates/js/translated/part.js:1864 templates/js/translated/search.js:144
#: templates/navbar.html:24 users/models.py:37
msgid "Parts"
msgstr ""
@@ -4153,7 +4197,7 @@ msgstr ""
msgid "Duplicate IPN not allowed in part settings"
msgstr ""
-#: part/models.py:738 part/models.py:2469
+#: part/models.py:738 part/models.py:2457
msgid "Part name"
msgstr ""
@@ -4186,12 +4230,11 @@ msgstr ""
msgid "Part keywords to improve visibility in search results"
msgstr ""
-#: part/models.py:776 part/models.py:2171 part/models.py:2414
+#: part/models.py:776 part/models.py:2159 part/models.py:2402
#: part/templates/part/part_base.html:257
-#: part/templates/part/set_category.html:15
#: templates/InvenTree/notifications/notifications.html:65
#: templates/InvenTree/settings/settings.html:231
-#: templates/js/translated/part.js:1369
+#: templates/js/translated/part.js:1413 templates/js/translated/part.js:1639
msgid "Category"
msgstr ""
@@ -4200,8 +4243,8 @@ msgid "Part category"
msgstr ""
#: part/models.py:782 part/templates/part/part_base.html:266
-#: templates/js/translated/part.js:666 templates/js/translated/part.js:1322
-#: templates/js/translated/stock.js:1659
+#: templates/js/translated/part.js:710 templates/js/translated/part.js:1366
+#: templates/js/translated/stock.js:1669
msgid "IPN"
msgstr ""
@@ -4214,7 +4257,7 @@ msgid "Part revision or version number"
msgstr ""
#: part/models.py:790 part/templates/part/part_base.html:273
-#: report/models.py:170 templates/js/translated/part.js:670
+#: report/models.py:170 templates/js/translated/part.js:714
msgid "Revision"
msgstr ""
@@ -4302,317 +4345,321 @@ msgstr ""
msgid "Creation User"
msgstr ""
-#: part/models.py:1690
+#: part/models.py:1685
msgid "Sell multiple"
msgstr ""
-#: part/models.py:2218
+#: part/models.py:2206
msgid "Test templates can only be created for trackable parts"
msgstr ""
-#: part/models.py:2235
+#: part/models.py:2223
msgid "Test with this name already exists for this part"
msgstr ""
-#: part/models.py:2255 templates/js/translated/part.js:1819
-#: templates/js/translated/stock.js:1274
+#: part/models.py:2243 templates/js/translated/part.js:1915
+#: templates/js/translated/stock.js:1284
msgid "Test Name"
msgstr ""
-#: part/models.py:2256
+#: part/models.py:2244
msgid "Enter a name for the test"
msgstr ""
-#: part/models.py:2261
+#: part/models.py:2249
msgid "Test Description"
msgstr ""
-#: part/models.py:2262
+#: part/models.py:2250
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:2267 templates/js/translated/part.js:1828
+#: part/models.py:2255 templates/js/translated/part.js:1924
#: templates/js/translated/table_filters.js:294
msgid "Required"
msgstr ""
-#: part/models.py:2268
+#: part/models.py:2256
msgid "Is this test required to pass?"
msgstr ""
-#: part/models.py:2273 templates/js/translated/part.js:1836
+#: part/models.py:2261 templates/js/translated/part.js:1932
msgid "Requires Value"
msgstr ""
-#: part/models.py:2274
+#: part/models.py:2262
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:2279 templates/js/translated/part.js:1843
+#: part/models.py:2267 templates/js/translated/part.js:1939
msgid "Requires Attachment"
msgstr ""
-#: part/models.py:2280
+#: part/models.py:2268
msgid "Does this test require a file attachment when adding a test result?"
msgstr ""
-#: part/models.py:2288
+#: part/models.py:2276
#, python-brace-format
msgid "Illegal character in template name ({c})"
msgstr ""
-#: part/models.py:2324
+#: part/models.py:2312
msgid "Parameter template name must be unique"
msgstr ""
-#: part/models.py:2332
+#: part/models.py:2320
msgid "Parameter Name"
msgstr ""
-#: part/models.py:2339
+#: part/models.py:2327
msgid "Parameter Units"
msgstr ""
-#: part/models.py:2370
+#: part/models.py:2358
msgid "Parent Part"
msgstr ""
-#: part/models.py:2372 part/models.py:2420 part/models.py:2421
+#: part/models.py:2360 part/models.py:2408 part/models.py:2409
#: templates/InvenTree/settings/settings.html:226
msgid "Parameter Template"
msgstr ""
-#: part/models.py:2374
+#: part/models.py:2362
msgid "Data"
msgstr ""
-#: part/models.py:2374
+#: part/models.py:2362
msgid "Parameter Value"
msgstr ""
-#: part/models.py:2425 templates/InvenTree/settings/settings.html:235
+#: part/models.py:2413 templates/InvenTree/settings/settings.html:235
msgid "Default Value"
msgstr ""
-#: part/models.py:2426
+#: part/models.py:2414
msgid "Default Parameter Value"
msgstr ""
-#: part/models.py:2461
+#: part/models.py:2449
msgid "Part ID or part name"
msgstr ""
-#: part/models.py:2464 templates/js/translated/model_renderers.js:200
+#: part/models.py:2452 templates/js/translated/model_renderers.js:200
msgid "Part ID"
msgstr ""
-#: part/models.py:2465
+#: part/models.py:2453
msgid "Unique part ID value"
msgstr ""
-#: part/models.py:2468
+#: part/models.py:2456
msgid "Part Name"
msgstr ""
-#: part/models.py:2472
+#: part/models.py:2460
msgid "Part IPN"
msgstr ""
-#: part/models.py:2473
+#: part/models.py:2461
msgid "Part IPN value"
msgstr ""
-#: part/models.py:2476
+#: part/models.py:2464
msgid "Level"
msgstr ""
-#: part/models.py:2477
+#: part/models.py:2465
msgid "BOM level"
msgstr ""
-#: part/models.py:2546
+#: part/models.py:2534
msgid "Select parent part"
msgstr ""
-#: part/models.py:2554
+#: part/models.py:2542
msgid "Sub part"
msgstr ""
-#: part/models.py:2555
+#: part/models.py:2543
msgid "Select part to be used in BOM"
msgstr ""
-#: part/models.py:2561
+#: part/models.py:2549
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:2563 part/templates/part/upload_bom.html:58
-#: templates/js/translated/bom.js:877 templates/js/translated/bom.js:971
+#: part/models.py:2551 part/templates/part/upload_bom.html:58
+#: templates/js/translated/bom.js:871 templates/js/translated/bom.js:965
#: templates/js/translated/table_filters.js:92
msgid "Optional"
msgstr ""
-#: part/models.py:2563
+#: part/models.py:2551
msgid "This BOM item is optional"
msgstr ""
-#: part/models.py:2566 part/templates/part/upload_bom.html:55
+#: part/models.py:2554 part/templates/part/upload_bom.html:55
msgid "Overage"
msgstr ""
-#: part/models.py:2567
+#: part/models.py:2555
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr ""
-#: part/models.py:2570
+#: part/models.py:2558
msgid "BOM item reference"
msgstr ""
-#: part/models.py:2573
+#: part/models.py:2561
msgid "BOM item notes"
msgstr ""
-#: part/models.py:2575
+#: part/models.py:2563
msgid "Checksum"
msgstr ""
-#: part/models.py:2575
+#: part/models.py:2563
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:2579 part/templates/part/upload_bom.html:57
-#: templates/js/translated/bom.js:988
+#: part/models.py:2567 part/templates/part/upload_bom.html:57
+#: templates/js/translated/bom.js:982
#: templates/js/translated/table_filters.js:68
#: templates/js/translated/table_filters.js:88
msgid "Inherited"
msgstr ""
-#: part/models.py:2580
+#: part/models.py:2568
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr ""
-#: part/models.py:2585 part/templates/part/upload_bom.html:56
-#: templates/js/translated/bom.js:980
+#: part/models.py:2573 part/templates/part/upload_bom.html:56
+#: templates/js/translated/bom.js:974
msgid "Allow Variants"
msgstr ""
-#: part/models.py:2586
+#: part/models.py:2574
msgid "Stock items for variant parts can be used for this BOM item"
msgstr ""
-#: part/models.py:2664 stock/models.py:460
+#: part/models.py:2652 stock/models.py:460
msgid "Quantity must be integer value for trackable parts"
msgstr ""
-#: part/models.py:2673 part/models.py:2675
+#: part/models.py:2661 part/models.py:2663
msgid "Sub part must be specified"
msgstr ""
-#: part/models.py:2780
+#: part/models.py:2768
msgid "BOM Item Substitute"
msgstr ""
-#: part/models.py:2801
+#: part/models.py:2789
msgid "Substitute part cannot be the same as the master part"
msgstr ""
-#: part/models.py:2814
+#: part/models.py:2802
msgid "Parent BOM item"
msgstr ""
-#: part/models.py:2822
+#: part/models.py:2810
msgid "Substitute part"
msgstr ""
-#: part/models.py:2833
+#: part/models.py:2825
msgid "Part 1"
msgstr ""
-#: part/models.py:2837
+#: part/models.py:2829
msgid "Part 2"
msgstr ""
-#: part/models.py:2837
+#: part/models.py:2829
msgid "Select Related Part"
msgstr ""
-#: part/models.py:2868
-msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique"
+#: part/models.py:2847
+msgid "Part relationship cannot be created between a part and itself"
msgstr ""
-#: part/serializers.py:138 part/serializers.py:169 stock/serializers.py:163
+#: part/models.py:2851
+msgid "Duplicate relationship already exists"
+msgstr ""
+
+#: part/serializers.py:140 part/serializers.py:171 stock/serializers.py:163
msgid "Purchase currency of this stock item"
msgstr ""
-#: part/serializers.py:794
+#: part/serializers.py:796
msgid "Select part to copy BOM from"
msgstr ""
-#: part/serializers.py:802
+#: part/serializers.py:804
msgid "Remove Existing Data"
msgstr ""
-#: part/serializers.py:803
+#: part/serializers.py:805
msgid "Remove existing BOM items before copying"
msgstr ""
-#: part/serializers.py:808
+#: part/serializers.py:810
msgid "Include Inherited"
msgstr ""
-#: part/serializers.py:809
+#: part/serializers.py:811
msgid "Include BOM items which are inherited from templated parts"
msgstr ""
-#: part/serializers.py:814
+#: part/serializers.py:816
msgid "Skip Invalid Rows"
msgstr ""
-#: part/serializers.py:815
+#: part/serializers.py:817
msgid "Enable this option to skip invalid rows"
msgstr ""
-#: part/serializers.py:820
+#: part/serializers.py:822
msgid "Copy Substitute Parts"
msgstr ""
-#: part/serializers.py:821
+#: part/serializers.py:823
msgid "Copy substitute parts when duplicate BOM items"
msgstr ""
-#: part/serializers.py:861
+#: part/serializers.py:863
msgid "Clear Existing BOM"
msgstr ""
-#: part/serializers.py:862
+#: part/serializers.py:864
msgid "Delete existing BOM items before uploading"
msgstr ""
-#: part/serializers.py:892
+#: part/serializers.py:894
msgid "No part column specified"
msgstr ""
-#: part/serializers.py:935
+#: part/serializers.py:937
msgid "Multiple matching parts found"
msgstr ""
-#: part/serializers.py:938
+#: part/serializers.py:940
msgid "No matching part found"
msgstr ""
-#: part/serializers.py:941
+#: part/serializers.py:943
msgid "Part is not designated as a component"
msgstr ""
-#: part/serializers.py:950
+#: part/serializers.py:952
msgid "Quantity not provided"
msgstr ""
-#: part/serializers.py:958
+#: part/serializers.py:960
msgid "Invalid quantity"
msgstr ""
-#: part/serializers.py:979
+#: part/serializers.py:981
msgid "At least one BOM item is required"
msgstr ""
@@ -5088,10 +5135,10 @@ msgid "Part is virtual (not a physical part)"
msgstr ""
#: part/templates/part/part_base.html:143
-#: templates/js/translated/company.js:623
-#: templates/js/translated/company.js:882
+#: templates/js/translated/company.js:608
+#: templates/js/translated/company.js:867
#: templates/js/translated/model_renderers.js:192
-#: templates/js/translated/part.js:581 templates/js/translated/part.js:658
+#: templates/js/translated/part.js:625 templates/js/translated/part.js:702
msgid "Inactive"
msgstr ""
@@ -5120,13 +5167,13 @@ msgstr ""
msgid "Allocated to Sales Orders"
msgstr ""
-#: part/templates/part/part_base.html:232 templates/js/translated/bom.js:1009
+#: part/templates/part/part_base.html:232 templates/js/translated/bom.js:1003
msgid "Can Build"
msgstr ""
-#: part/templates/part/part_base.html:238 templates/js/translated/part.js:520
-#: templates/js/translated/part.js:540 templates/js/translated/part.js:1233
-#: templates/js/translated/part.js:1405 templates/js/translated/part.js:1421
+#: part/templates/part/part_base.html:238 templates/js/translated/part.js:564
+#: templates/js/translated/part.js:584 templates/js/translated/part.js:1277
+#: templates/js/translated/part.js:1449 templates/js/translated/part.js:1465
msgid "Building"
msgstr ""
@@ -5143,7 +5190,7 @@ msgstr ""
msgid "Search for serial number"
msgstr ""
-#: part/templates/part/part_base.html:443 part/templates/part/prices.html:147
+#: part/templates/part/part_base.html:443 part/templates/part/prices.html:149
msgid "Calculate"
msgstr ""
@@ -5161,54 +5208,55 @@ msgstr ""
#: part/templates/part/part_pricing.html:26
#: part/templates/part/part_pricing.html:52
-#: part/templates/part/part_pricing.html:100
-#: part/templates/part/part_pricing.html:115 part/templates/part/prices.html:28
-#: part/templates/part/prices.html:55 part/templates/part/prices.html:106
-#: part/templates/part/prices.html:123
+#: part/templates/part/part_pricing.html:103
+#: part/templates/part/part_pricing.html:118 part/templates/part/prices.html:28
+#: part/templates/part/prices.html:55 part/templates/part/prices.html:108
+#: part/templates/part/prices.html:125
msgid "Unit Cost"
msgstr ""
#: part/templates/part/part_pricing.html:32
#: part/templates/part/part_pricing.html:58
-#: part/templates/part/part_pricing.html:104
-#: part/templates/part/part_pricing.html:119 part/templates/part/prices.html:35
-#: part/templates/part/prices.html:62 part/templates/part/prices.html:111
-#: part/templates/part/prices.html:128
+#: part/templates/part/part_pricing.html:107
+#: part/templates/part/part_pricing.html:122 part/templates/part/prices.html:35
+#: part/templates/part/prices.html:62 part/templates/part/prices.html:113
+#: part/templates/part/prices.html:130
msgid "Total Cost"
msgstr ""
#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:43
-#: templates/js/translated/bom.js:963
+#: templates/js/translated/bom.js:957
msgid "No supplier pricing available"
msgstr ""
#: part/templates/part/part_pricing.html:48 part/templates/part/prices.html:52
-#: part/templates/part/prices.html:246
+#: part/templates/part/prices.html:248
msgid "BOM Pricing"
msgstr ""
-#: part/templates/part/part_pricing.html:65 part/templates/part/prices.html:72
+#: part/templates/part/part_pricing.html:66 part/templates/part/prices.html:72
msgid "Unit Purchase Price"
msgstr ""
-#: part/templates/part/part_pricing.html:71 part/templates/part/prices.html:79
+#: part/templates/part/part_pricing.html:72 part/templates/part/prices.html:79
msgid "Total Purchase Price"
msgstr ""
-#: part/templates/part/part_pricing.html:81 part/templates/part/prices.html:89
+#: part/templates/part/part_pricing.html:82 part/templates/part/prices.html:89
msgid "Note: BOM pricing is incomplete for this part"
msgstr ""
-#: part/templates/part/part_pricing.html:88 part/templates/part/prices.html:96
+#: part/templates/part/part_pricing.html:91 part/templates/part/prices.html:98
msgid "No BOM pricing available"
msgstr ""
-#: part/templates/part/part_pricing.html:97 part/templates/part/prices.html:105
+#: part/templates/part/part_pricing.html:100
+#: part/templates/part/prices.html:107
msgid "Internal Price"
msgstr ""
-#: part/templates/part/part_pricing.html:128
-#: part/templates/part/prices.html:137
+#: part/templates/part/part_pricing.html:131
+#: part/templates/part/prices.html:139
msgid "No pricing information is available for this part."
msgstr ""
@@ -5232,43 +5280,6 @@ msgstr ""
msgid "Select from existing images"
msgstr ""
-#: part/templates/part/partial_delete.html:9
-#, python-format
-msgid "Part '%(full_name)s' cannot be deleted as it is still marked as active.\n"
-"
Disable the \"Active\" part attribute and re-try.\n"
-" "
-msgstr ""
-
-#: part/templates/part/partial_delete.html:17
-#, python-format
-msgid "Are you sure you want to delete part '%(full_name)s'?"
-msgstr ""
-
-#: part/templates/part/partial_delete.html:22
-#, python-format
-msgid "This part is used in BOMs for %(count)s other parts. If you delete this part, the BOMs for the following parts will be updated"
-msgstr ""
-
-#: part/templates/part/partial_delete.html:32
-#, python-format
-msgid "There are %(count)s stock entries defined for this part. If you delete this part, the following stock entries will also be deleted:"
-msgstr ""
-
-#: part/templates/part/partial_delete.html:43
-#, python-format
-msgid "There are %(count)s manufacturers defined for this part. If you delete this part, the following manufacturer parts will also be deleted:"
-msgstr ""
-
-#: part/templates/part/partial_delete.html:54
-#, python-format
-msgid "There are %(count)s suppliers defined for this part. If you delete this part, the following supplier parts will also be deleted:"
-msgstr ""
-
-#: part/templates/part/partial_delete.html:67
-#, python-format
-msgid "There are %(count)s unique parts tracked for '%(full_name)s'. Deleting this part will permanently remove this tracking information."
-msgstr ""
-
#: part/templates/part/prices.html:19
msgid "Pricing ranges"
msgstr ""
@@ -5285,66 +5296,58 @@ msgstr ""
msgid "Show BOM cost"
msgstr ""
-#: part/templates/part/prices.html:120
+#: part/templates/part/prices.html:122
msgid "Show sale cost"
msgstr ""
-#: part/templates/part/prices.html:121
+#: part/templates/part/prices.html:123
msgid "Show sale price"
msgstr ""
-#: part/templates/part/prices.html:143
+#: part/templates/part/prices.html:145
msgid "Calculation parameters"
msgstr ""
-#: part/templates/part/prices.html:158 templates/js/translated/bom.js:957
+#: part/templates/part/prices.html:160 templates/js/translated/bom.js:951
msgid "Supplier Cost"
msgstr ""
-#: part/templates/part/prices.html:159 part/templates/part/prices.html:180
-#: part/templates/part/prices.html:204 part/templates/part/prices.html:234
-#: part/templates/part/prices.html:260 part/templates/part/prices.html:289
+#: part/templates/part/prices.html:161 part/templates/part/prices.html:182
+#: part/templates/part/prices.html:206 part/templates/part/prices.html:236
+#: part/templates/part/prices.html:262 part/templates/part/prices.html:291
msgid "Jump to overview"
msgstr ""
-#: part/templates/part/prices.html:184
+#: part/templates/part/prices.html:186
msgid "Stock Pricing"
msgstr ""
-#: part/templates/part/prices.html:193
+#: part/templates/part/prices.html:195
msgid "No stock pricing history is available for this part."
msgstr ""
-#: part/templates/part/prices.html:203
+#: part/templates/part/prices.html:205
msgid "Internal Cost"
msgstr ""
-#: part/templates/part/prices.html:218
+#: part/templates/part/prices.html:220
msgid "Add Internal Price Break"
msgstr ""
-#: part/templates/part/prices.html:233
+#: part/templates/part/prices.html:235
msgid "BOM Cost"
msgstr ""
-#: part/templates/part/prices.html:259
+#: part/templates/part/prices.html:261
msgid "Sale Cost"
msgstr ""
-#: part/templates/part/prices.html:300
+#: part/templates/part/prices.html:302
msgid "No sale pice history available for this part."
msgstr ""
-#: part/templates/part/set_category.html:9
-msgid "Set category for the following parts"
-msgstr ""
-
-#: part/templates/part/set_category.html:32
-msgid "Remove part"
-msgstr ""
-
-#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:543
-#: templates/js/translated/part.js:1221 templates/js/translated/part.js:1425
+#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:587
+#: templates/js/translated/part.js:1265 templates/js/translated/part.js:1469
msgid "No Stock"
msgstr ""
@@ -5407,56 +5410,39 @@ msgstr ""
msgid "{title} v{version}"
msgstr ""
-#: part/views.py:74
-msgid "Set Part Category"
-msgstr ""
-
-#: part/views.py:122
-#, python-brace-format
-msgid "Set category for {n} parts"
-msgstr ""
-
-#: part/views.py:193
+#: part/views.py:118
msgid "Match References"
msgstr ""
-#: part/views.py:494
+#: part/views.py:419
msgid "None"
msgstr ""
-#: part/views.py:556
+#: part/views.py:481
msgid "Part QR Code"
msgstr ""
-#: part/views.py:650
+#: part/views.py:575
msgid "Select Part Image"
msgstr ""
-#: part/views.py:676
+#: part/views.py:601
msgid "Updated part image"
msgstr ""
-#: part/views.py:679
+#: part/views.py:604
msgid "Part image not found"
msgstr ""
-#: part/views.py:768
-msgid "Confirm Part Deletion"
-msgstr ""
-
-#: part/views.py:776
-msgid "Part was deleted"
-msgstr ""
-
-#: part/views.py:785
+#: part/views.py:693
msgid "Part Pricing"
msgstr ""
-#: part/views.py:976
+#: part/views.py:884
msgid "Delete Part Category"
msgstr ""
-#: part/views.py:983
+#: part/views.py:891
msgid "Part category was deleted"
msgstr ""
@@ -5516,21 +5502,21 @@ msgstr ""
msgid "Label printing failed"
msgstr ""
-#: plugin/builtin/integration/core_notifications.py:28
+#: plugin/builtin/integration/core_notifications.py:29
msgid "InvenTree contributors"
msgstr ""
-#: plugin/builtin/integration/core_notifications.py:29
+#: plugin/builtin/integration/core_notifications.py:30
msgid "Integrated outgoing notificaton methods"
msgstr ""
-#: plugin/builtin/integration/core_notifications.py:33
-#: plugin/builtin/integration/core_notifications.py:52
-msgid "Enable email notifications"
-msgstr ""
-
#: plugin/builtin/integration/core_notifications.py:34
#: plugin/builtin/integration/core_notifications.py:53
+msgid "Enable email notifications"
+msgstr ""
+
+#: plugin/builtin/integration/core_notifications.py:35
+#: plugin/builtin/integration/core_notifications.py:54
msgid "Allow sending of emails for event notifications"
msgstr ""
@@ -5646,15 +5632,19 @@ msgstr ""
msgid "Either packagename of URL must be provided"
msgstr ""
-#: report/api.py:166
+#: report/api.py:179
msgid "No valid objects provided to template"
msgstr ""
-#: report/api.py:198 report/api.py:239
+#: report/api.py:215 report/api.py:256
#, python-brace-format
msgid "Template file '{template}' is missing or does not exist"
msgstr ""
+#: report/api.py:359
+msgid "Test report"
+msgstr ""
+
#: report/models.py:152
msgid "Template name"
msgstr ""
@@ -5757,7 +5747,7 @@ msgstr ""
#: templates/js/translated/build.js:1173 templates/js/translated/build.js:1671
#: templates/js/translated/model_renderers.js:106
#: templates/js/translated/order.js:115 templates/js/translated/order.js:3229
-#: templates/js/translated/order.js:3318 templates/js/translated/stock.js:435
+#: templates/js/translated/order.js:3318 templates/js/translated/stock.js:434
msgid "Serial Number"
msgstr ""
@@ -5766,19 +5756,19 @@ msgid "Test Results"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:93
-#: stock/models.py:2068
+#: stock/models.py:2072
msgid "Test"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:94
-#: stock/models.py:2074
+#: stock/models.py:2078
msgid "Result"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:97
#: templates/InvenTree/settings/plugin.html:51
#: templates/InvenTree/settings/plugin_settings.html:38
-#: templates/js/translated/order.js:1669 templates/js/translated/stock.js:2340
+#: templates/js/translated/order.js:1669 templates/js/translated/stock.js:2350
msgid "Date"
msgstr ""
@@ -5796,20 +5786,20 @@ msgid "Installed Items"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:137
-#: templates/js/translated/stock.js:555 templates/js/translated/stock.js:725
-#: templates/js/translated/stock.js:2589
+#: templates/js/translated/stock.js:554 templates/js/translated/stock.js:724
+#: templates/js/translated/stock.js:2599
msgid "Serial"
msgstr ""
-#: stock/api.py:504
+#: stock/api.py:505
msgid "Quantity is required"
msgstr ""
-#: stock/api.py:511
+#: stock/api.py:512
msgid "Valid part must be supplied"
msgstr ""
-#: stock/api.py:536
+#: stock/api.py:537
msgid "Serial numbers cannot be supplied for a non-trackable part"
msgstr ""
@@ -5917,7 +5907,7 @@ msgid "Destination Sales Order"
msgstr ""
#: stock/models.py:690 stock/templates/stock/item_base.html:429
-#: templates/js/translated/stock.js:1816
+#: templates/js/translated/stock.js:1826
msgid "Expiry Date"
msgstr ""
@@ -5971,79 +5961,79 @@ msgstr ""
msgid "Serial numbers already exist: {exists}"
msgstr ""
-#: stock/models.py:1321
+#: stock/models.py:1325
msgid "Stock item has been assigned to a sales order"
msgstr ""
-#: stock/models.py:1324
+#: stock/models.py:1328
msgid "Stock item is installed in another item"
msgstr ""
-#: stock/models.py:1327
+#: stock/models.py:1331
msgid "Stock item contains other items"
msgstr ""
-#: stock/models.py:1330
+#: stock/models.py:1334
msgid "Stock item has been assigned to a customer"
msgstr ""
-#: stock/models.py:1333
+#: stock/models.py:1337
msgid "Stock item is currently in production"
msgstr ""
-#: stock/models.py:1336
+#: stock/models.py:1340
msgid "Serialized stock cannot be merged"
msgstr ""
-#: stock/models.py:1343 stock/serializers.py:908
+#: stock/models.py:1347 stock/serializers.py:895
msgid "Duplicate stock items"
msgstr ""
-#: stock/models.py:1347
+#: stock/models.py:1351
msgid "Stock items must refer to the same part"
msgstr ""
-#: stock/models.py:1351
+#: stock/models.py:1355
msgid "Stock items must refer to the same supplier part"
msgstr ""
-#: stock/models.py:1355
+#: stock/models.py:1359
msgid "Stock status codes must match"
msgstr ""
-#: stock/models.py:1524
+#: stock/models.py:1528
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:1986
+#: stock/models.py:1990
msgid "Entry notes"
msgstr ""
-#: stock/models.py:2044
+#: stock/models.py:2048
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:2050
+#: stock/models.py:2054
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:2069
+#: stock/models.py:2073
msgid "Test name"
msgstr ""
-#: stock/models.py:2075
+#: stock/models.py:2079
msgid "Test result"
msgstr ""
-#: stock/models.py:2081
+#: stock/models.py:2085
msgid "Test output value"
msgstr ""
-#: stock/models.py:2088
+#: stock/models.py:2092
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:2094
+#: stock/models.py:2098
msgid "Test notes"
msgstr ""
@@ -6064,7 +6054,7 @@ msgstr ""
msgid "Enter serial numbers for new items"
msgstr ""
-#: stock/serializers.py:309 stock/serializers.py:865 stock/serializers.py:1098
+#: stock/serializers.py:309 stock/serializers.py:852 stock/serializers.py:1085
msgid "Destination stock location"
msgstr ""
@@ -6104,63 +6094,63 @@ msgstr ""
msgid "Destination location for returned item"
msgstr ""
-#: stock/serializers.py:720
+#: stock/serializers.py:707
msgid "Part must be salable"
msgstr ""
-#: stock/serializers.py:724
+#: stock/serializers.py:711
msgid "Item is allocated to a sales order"
msgstr ""
-#: stock/serializers.py:728
+#: stock/serializers.py:715
msgid "Item is allocated to a build order"
msgstr ""
-#: stock/serializers.py:759
+#: stock/serializers.py:746
msgid "Customer to assign stock items"
msgstr ""
-#: stock/serializers.py:765
+#: stock/serializers.py:752
msgid "Selected company is not a customer"
msgstr ""
-#: stock/serializers.py:773
+#: stock/serializers.py:760
msgid "Stock assignment notes"
msgstr ""
-#: stock/serializers.py:783 stock/serializers.py:1014
+#: stock/serializers.py:770 stock/serializers.py:1001
msgid "A list of stock items must be provided"
msgstr ""
-#: stock/serializers.py:872
+#: stock/serializers.py:859
msgid "Stock merging notes"
msgstr ""
-#: stock/serializers.py:877
+#: stock/serializers.py:864
msgid "Allow mismatched suppliers"
msgstr ""
-#: stock/serializers.py:878
+#: stock/serializers.py:865
msgid "Allow stock items with different supplier parts to be merged"
msgstr ""
-#: stock/serializers.py:883
+#: stock/serializers.py:870
msgid "Allow mismatched status"
msgstr ""
-#: stock/serializers.py:884
+#: stock/serializers.py:871
msgid "Allow stock items with different status codes to be merged"
msgstr ""
-#: stock/serializers.py:894
+#: stock/serializers.py:881
msgid "At least two stock items must be provided"
msgstr ""
-#: stock/serializers.py:976
+#: stock/serializers.py:963
msgid "StockItem primary key value"
msgstr ""
-#: stock/serializers.py:1004
+#: stock/serializers.py:991
msgid "Stock transaction notes"
msgstr ""
@@ -6185,7 +6175,7 @@ msgstr ""
msgid "Test Report"
msgstr ""
-#: stock/templates/stock/item.html:94
+#: stock/templates/stock/item.html:94 stock/templates/stock/item.html:298
msgid "Delete Test Data"
msgstr ""
@@ -6197,11 +6187,15 @@ msgstr ""
msgid "Installed Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:151 templates/js/translated/stock.js:2733
+#: stock/templates/stock/item.html:151 templates/js/translated/stock.js:2743
msgid "Install Stock Item"
msgstr ""
-#: stock/templates/stock/item.html:292 templates/js/translated/stock.js:1455
+#: stock/templates/stock/item.html:290
+msgid "Delete all test results for this stock item"
+msgstr ""
+
+#: stock/templates/stock/item.html:323 templates/js/translated/stock.js:1465
msgid "Add Test Result"
msgstr ""
@@ -6388,7 +6382,7 @@ msgid "Stale"
msgstr ""
#: stock/templates/stock/item_base.html:442
-#: templates/js/translated/stock.js:1832
+#: templates/js/translated/stock.js:1842
msgid "Last Updated"
msgstr ""
@@ -6529,7 +6523,7 @@ msgstr ""
msgid "Child Items"
msgstr ""
-#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:182
+#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:144
msgid "Convert Stock Item"
msgstr ""
@@ -6550,31 +6544,19 @@ msgstr ""
msgid "This action cannot be easily undone"
msgstr ""
-#: stock/views.py:113
+#: stock/views.py:111
msgid "Stock Location QR code"
msgstr ""
-#: stock/views.py:131
-msgid "Delete All Test Data"
-msgstr ""
-
-#: stock/views.py:149
-msgid "Confirm test data deletion"
-msgstr ""
-
-#: stock/views.py:150
-msgid "Check the confirmation box"
-msgstr ""
-
-#: stock/views.py:165
+#: stock/views.py:127
msgid "Stock Item QR Code"
msgstr ""
-#: stock/views.py:216
+#: stock/views.py:178
msgid "Delete Stock Location"
msgstr ""
-#: stock/views.py:229
+#: stock/views.py:191
msgid "Delete Stock Item"
msgstr ""
@@ -7317,8 +7299,8 @@ msgstr ""
#: templates/about.html:11 templates/about.html:105
#: templates/js/translated/bom.js:133 templates/js/translated/bom.js:621
-#: templates/js/translated/modals.js:56 templates/js/translated/modals.js:595
-#: templates/js/translated/modals.js:689 templates/js/translated/modals.js:997
+#: templates/js/translated/modals.js:56 templates/js/translated/modals.js:601
+#: templates/js/translated/modals.js:695 templates/js/translated/modals.js:1003
#: templates/js/translated/order.js:928 templates/modals.html:15
#: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50
msgid "Close"
@@ -7390,6 +7372,10 @@ msgstr ""
msgid "Please confirm that %(email)s is an email address for user %(user_display)s."
msgstr ""
+#: templates/account/email_confirm.html:20 templates/js/translated/forms.js:630
+msgid "Confirm"
+msgstr ""
+
#: templates/account/email_confirm.html:27
#, python-format
msgid "This email confirmation link expired or is invalid. Please issue a new email confirmation request."
@@ -7562,7 +7548,7 @@ msgstr ""
msgid "Delete selected attachments"
msgstr ""
-#: templates/attachment_table.html:12 templates/js/translated/attachment.js:110
+#: templates/attachment_table.html:12 templates/js/translated/attachment.js:112
msgid "Delete Attachments"
msgstr ""
@@ -7596,15 +7582,15 @@ msgid "The following parts are low on required stock"
msgstr ""
#: templates/email/build_order_required_stock.html:18
-#: templates/js/translated/bom.js:1425
+#: templates/js/translated/bom.js:1419
msgid "Required Quantity"
msgstr ""
#: templates/email/build_order_required_stock.html:19
#: templates/email/low_stock_notification.html:18
-#: templates/js/translated/bom.js:890 templates/js/translated/build.js:1787
-#: templates/js/translated/build.js:2650 templates/js/translated/part.js:527
-#: templates/js/translated/part.js:530
+#: templates/js/translated/bom.js:884 templates/js/translated/build.js:1787
+#: templates/js/translated/build.js:2650 templates/js/translated/part.js:571
+#: templates/js/translated/part.js:574
#: templates/js/translated/table_filters.js:178
msgid "Available"
msgstr ""
@@ -7622,6 +7608,13 @@ msgstr ""
msgid "Minimum Quantity"
msgstr ""
+#: templates/email/new_order_assigned.html:9
+#: templates/email/overdue_build_order.html:9
+#: templates/email/overdue_purchase_order.html:9
+#: templates/email/overdue_sales_order.html:9
+msgid "Click on the following link to view this order"
+msgstr ""
+
#: templates/image_download.html:8
msgid "Specify URL for downloading image"
msgstr ""
@@ -7638,91 +7631,91 @@ msgstr ""
msgid "Remote image must not exceed maximum allowable file size"
msgstr ""
-#: templates/js/translated/api.js:235 templates/js/translated/modals.js:1067
+#: templates/js/translated/api.js:195 templates/js/translated/modals.js:1073
msgid "No Response"
msgstr ""
-#: templates/js/translated/api.js:236 templates/js/translated/modals.js:1068
+#: templates/js/translated/api.js:196 templates/js/translated/modals.js:1074
msgid "No response from the InvenTree server"
msgstr ""
-#: templates/js/translated/api.js:242
+#: templates/js/translated/api.js:202
msgid "Error 400: Bad request"
msgstr ""
-#: templates/js/translated/api.js:243
+#: templates/js/translated/api.js:203
msgid "API request returned error code 400"
msgstr ""
-#: templates/js/translated/api.js:247 templates/js/translated/modals.js:1077
+#: templates/js/translated/api.js:207 templates/js/translated/modals.js:1083
msgid "Error 401: Not Authenticated"
msgstr ""
-#: templates/js/translated/api.js:248 templates/js/translated/modals.js:1078
+#: templates/js/translated/api.js:208 templates/js/translated/modals.js:1084
msgid "Authentication credentials not supplied"
msgstr ""
-#: templates/js/translated/api.js:252 templates/js/translated/modals.js:1082
+#: templates/js/translated/api.js:212 templates/js/translated/modals.js:1088
msgid "Error 403: Permission Denied"
msgstr ""
-#: templates/js/translated/api.js:253 templates/js/translated/modals.js:1083
+#: templates/js/translated/api.js:213 templates/js/translated/modals.js:1089
msgid "You do not have the required permissions to access this function"
msgstr ""
-#: templates/js/translated/api.js:257 templates/js/translated/modals.js:1087
+#: templates/js/translated/api.js:217 templates/js/translated/modals.js:1093
msgid "Error 404: Resource Not Found"
msgstr ""
-#: templates/js/translated/api.js:258 templates/js/translated/modals.js:1088
+#: templates/js/translated/api.js:218 templates/js/translated/modals.js:1094
msgid "The requested resource could not be located on the server"
msgstr ""
-#: templates/js/translated/api.js:262
+#: templates/js/translated/api.js:222
msgid "Error 405: Method Not Allowed"
msgstr ""
-#: templates/js/translated/api.js:263
+#: templates/js/translated/api.js:223
msgid "HTTP method not allowed at URL"
msgstr ""
-#: templates/js/translated/api.js:267 templates/js/translated/modals.js:1092
+#: templates/js/translated/api.js:227 templates/js/translated/modals.js:1098
msgid "Error 408: Timeout"
msgstr ""
-#: templates/js/translated/api.js:268 templates/js/translated/modals.js:1093
+#: templates/js/translated/api.js:228 templates/js/translated/modals.js:1099
msgid "Connection timeout while requesting data from server"
msgstr ""
-#: templates/js/translated/api.js:271
+#: templates/js/translated/api.js:231
msgid "Unhandled Error Code"
msgstr ""
-#: templates/js/translated/api.js:272
+#: templates/js/translated/api.js:232
msgid "Error code"
msgstr ""
-#: templates/js/translated/attachment.js:96
+#: templates/js/translated/attachment.js:98
msgid "All selected attachments will be deleted"
msgstr ""
-#: templates/js/translated/attachment.js:156
+#: templates/js/translated/attachment.js:152
msgid "No attachments found"
msgstr ""
-#: templates/js/translated/attachment.js:180
+#: templates/js/translated/attachment.js:176
msgid "Edit Attachment"
msgstr ""
-#: templates/js/translated/attachment.js:246
+#: templates/js/translated/attachment.js:242
msgid "Upload Date"
msgstr ""
-#: templates/js/translated/attachment.js:262
+#: templates/js/translated/attachment.js:264
msgid "Edit attachment"
msgstr ""
-#: templates/js/translated/attachment.js:269
+#: templates/js/translated/attachment.js:271
msgid "Delete attachment"
msgstr ""
@@ -7755,7 +7748,7 @@ msgid "Unknown response from server"
msgstr ""
#: templates/js/translated/barcode.js:182
-#: templates/js/translated/modals.js:1057
+#: templates/js/translated/modals.js:1063
msgid "Invalid server response"
msgstr ""
@@ -7783,7 +7776,7 @@ msgstr ""
msgid "Unlink"
msgstr ""
-#: templates/js/translated/barcode.js:456 templates/js/translated/stock.js:999
+#: templates/js/translated/barcode.js:456 templates/js/translated/stock.js:998
msgid "Remove stock item"
msgstr ""
@@ -7918,89 +7911,89 @@ msgstr ""
msgid "Edit BOM Item Substitutes"
msgstr ""
-#: templates/js/translated/bom.js:682
+#: templates/js/translated/bom.js:684
msgid "All selected BOM items will be deleted"
msgstr ""
-#: templates/js/translated/bom.js:697
+#: templates/js/translated/bom.js:699
msgid "Delete selected BOM items?"
msgstr ""
-#: templates/js/translated/bom.js:824
+#: templates/js/translated/bom.js:818
msgid "Load BOM for subassembly"
msgstr ""
-#: templates/js/translated/bom.js:834
+#: templates/js/translated/bom.js:828
msgid "Substitutes Available"
msgstr ""
-#: templates/js/translated/bom.js:838 templates/js/translated/build.js:1769
+#: templates/js/translated/bom.js:832 templates/js/translated/build.js:1769
msgid "Variant stock allowed"
msgstr ""
-#: templates/js/translated/bom.js:906 templates/js/translated/build.js:1814
+#: templates/js/translated/bom.js:900 templates/js/translated/build.js:1814
#: templates/js/translated/order.js:3562
msgid "No Stock Available"
msgstr ""
-#: templates/js/translated/bom.js:910 templates/js/translated/build.js:1818
+#: templates/js/translated/bom.js:904 templates/js/translated/build.js:1818
msgid "Includes variant and substitute stock"
msgstr ""
-#: templates/js/translated/bom.js:912 templates/js/translated/build.js:1820
-#: templates/js/translated/part.js:690
+#: templates/js/translated/bom.js:906 templates/js/translated/build.js:1820
+#: templates/js/translated/part.js:734
msgid "Includes variant stock"
msgstr ""
-#: templates/js/translated/bom.js:914 templates/js/translated/build.js:1822
+#: templates/js/translated/bom.js:908 templates/js/translated/build.js:1822
msgid "Includes substitute stock"
msgstr ""
-#: templates/js/translated/bom.js:928
+#: templates/js/translated/bom.js:922
msgid "Substitutes"
msgstr ""
-#: templates/js/translated/bom.js:943
+#: templates/js/translated/bom.js:937
msgid "Purchase Price Range"
msgstr ""
-#: templates/js/translated/bom.js:950
+#: templates/js/translated/bom.js:944
msgid "Purchase Price Average"
msgstr ""
-#: templates/js/translated/bom.js:999 templates/js/translated/bom.js:1090
+#: templates/js/translated/bom.js:993 templates/js/translated/bom.js:1084
msgid "View BOM"
msgstr ""
-#: templates/js/translated/bom.js:1061
+#: templates/js/translated/bom.js:1055
msgid "Validate BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:1063
+#: templates/js/translated/bom.js:1057
msgid "This line has been validated"
msgstr ""
-#: templates/js/translated/bom.js:1065
+#: templates/js/translated/bom.js:1059
msgid "Edit substitute parts"
msgstr ""
-#: templates/js/translated/bom.js:1067 templates/js/translated/bom.js:1228
+#: templates/js/translated/bom.js:1061 templates/js/translated/bom.js:1222
msgid "Edit BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:1069
+#: templates/js/translated/bom.js:1063
msgid "Delete BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:1164 templates/js/translated/build.js:1615
+#: templates/js/translated/bom.js:1158 templates/js/translated/build.js:1615
msgid "No BOM items found"
msgstr ""
-#: templates/js/translated/bom.js:1408 templates/js/translated/build.js:1753
+#: templates/js/translated/bom.js:1402 templates/js/translated/build.js:1753
msgid "Required Part"
msgstr ""
-#: templates/js/translated/bom.js:1430
+#: templates/js/translated/bom.js:1424
msgid "Inherited from parent BOM"
msgstr ""
@@ -8040,13 +8033,13 @@ msgstr ""
msgid "Complete Build Order"
msgstr ""
-#: templates/js/translated/build.js:259 templates/js/translated/stock.js:91
-#: templates/js/translated/stock.js:181
+#: templates/js/translated/build.js:259 templates/js/translated/stock.js:90
+#: templates/js/translated/stock.js:180
msgid "Next available serial number"
msgstr ""
-#: templates/js/translated/build.js:261 templates/js/translated/stock.js:93
-#: templates/js/translated/stock.js:183
+#: templates/js/translated/build.js:261 templates/js/translated/stock.js:92
+#: templates/js/translated/stock.js:182
msgid "Latest serial number"
msgstr ""
@@ -8259,9 +8252,9 @@ msgstr ""
msgid "No builds matching query"
msgstr ""
-#: templates/js/translated/build.js:2448 templates/js/translated/part.js:1314
-#: templates/js/translated/part.js:1729 templates/js/translated/stock.js:1619
-#: templates/js/translated/stock.js:2277
+#: templates/js/translated/build.js:2448 templates/js/translated/part.js:1358
+#: templates/js/translated/part.js:1825 templates/js/translated/stock.js:1629
+#: templates/js/translated/stock.js:2287
msgid "Select"
msgstr ""
@@ -8273,7 +8266,7 @@ msgstr ""
msgid "Progress"
msgstr ""
-#: templates/js/translated/build.js:2532 templates/js/translated/stock.js:2519
+#: templates/js/translated/build.js:2532 templates/js/translated/stock.js:2529
msgid "No user information"
msgstr ""
@@ -8285,107 +8278,107 @@ msgstr ""
msgid "No parts allocated for"
msgstr ""
-#: templates/js/translated/company.js:66
+#: templates/js/translated/company.js:65
msgid "Add Manufacturer"
msgstr ""
-#: templates/js/translated/company.js:79 templates/js/translated/company.js:169
+#: templates/js/translated/company.js:78 templates/js/translated/company.js:168
msgid "Add Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:100
+#: templates/js/translated/company.js:99
msgid "Edit Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:157 templates/js/translated/order.js:506
+#: templates/js/translated/company.js:156 templates/js/translated/order.js:506
msgid "Add Supplier"
msgstr ""
-#: templates/js/translated/company.js:185
+#: templates/js/translated/company.js:184
msgid "Add Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:200
+#: templates/js/translated/company.js:199
msgid "Edit Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:248
+#: templates/js/translated/company.js:249
msgid "All selected supplier parts will be deleted"
msgstr ""
-#: templates/js/translated/company.js:263
+#: templates/js/translated/company.js:264
msgid "Delete Supplier Parts"
msgstr ""
-#: templates/js/translated/company.js:342
+#: templates/js/translated/company.js:336
msgid "Add new Company"
msgstr ""
-#: templates/js/translated/company.js:419
+#: templates/js/translated/company.js:413
msgid "Parts Supplied"
msgstr ""
-#: templates/js/translated/company.js:428
+#: templates/js/translated/company.js:422
msgid "Parts Manufactured"
msgstr ""
-#: templates/js/translated/company.js:443
+#: templates/js/translated/company.js:437
msgid "No company information found"
msgstr ""
-#: templates/js/translated/company.js:482
+#: templates/js/translated/company.js:478
msgid "All selected manufacturer parts will be deleted"
msgstr ""
-#: templates/js/translated/company.js:496
+#: templates/js/translated/company.js:492
msgid "Delete Manufacturer Parts"
msgstr ""
-#: templates/js/translated/company.js:535
+#: templates/js/translated/company.js:526
msgid "All selected parameters will be deleted"
msgstr ""
-#: templates/js/translated/company.js:548
+#: templates/js/translated/company.js:539
msgid "Delete Parameters"
msgstr ""
-#: templates/js/translated/company.js:595
+#: templates/js/translated/company.js:580
msgid "No manufacturer parts found"
msgstr ""
-#: templates/js/translated/company.js:615
-#: templates/js/translated/company.js:874 templates/js/translated/part.js:565
-#: templates/js/translated/part.js:650
+#: templates/js/translated/company.js:600
+#: templates/js/translated/company.js:859 templates/js/translated/part.js:609
+#: templates/js/translated/part.js:694
msgid "Template part"
msgstr ""
-#: templates/js/translated/company.js:619
-#: templates/js/translated/company.js:878 templates/js/translated/part.js:569
-#: templates/js/translated/part.js:654
+#: templates/js/translated/company.js:604
+#: templates/js/translated/company.js:863 templates/js/translated/part.js:613
+#: templates/js/translated/part.js:698
msgid "Assembled part"
msgstr ""
-#: templates/js/translated/company.js:747 templates/js/translated/part.js:757
+#: templates/js/translated/company.js:732 templates/js/translated/part.js:801
msgid "No parameters found"
msgstr ""
-#: templates/js/translated/company.js:784 templates/js/translated/part.js:799
+#: templates/js/translated/company.js:769 templates/js/translated/part.js:843
msgid "Edit parameter"
msgstr ""
-#: templates/js/translated/company.js:785 templates/js/translated/part.js:800
+#: templates/js/translated/company.js:770 templates/js/translated/part.js:844
msgid "Delete parameter"
msgstr ""
-#: templates/js/translated/company.js:804 templates/js/translated/part.js:817
+#: templates/js/translated/company.js:789 templates/js/translated/part.js:861
msgid "Edit Parameter"
msgstr ""
-#: templates/js/translated/company.js:815 templates/js/translated/part.js:829
+#: templates/js/translated/company.js:800 templates/js/translated/part.js:873
msgid "Delete Parameter"
msgstr ""
-#: templates/js/translated/company.js:854
+#: templates/js/translated/company.js:839
msgid "No supplier parts found"
msgstr ""
@@ -8448,36 +8441,36 @@ msgstr ""
msgid "Keep this form open"
msgstr ""
-#: templates/js/translated/forms.js:756
+#: templates/js/translated/forms.js:757
msgid "Enter a valid number"
msgstr ""
-#: templates/js/translated/forms.js:1248 templates/modals.html:19
+#: templates/js/translated/forms.js:1249 templates/modals.html:19
#: templates/modals.html:43
msgid "Form errors exist"
msgstr ""
-#: templates/js/translated/forms.js:1681
+#: templates/js/translated/forms.js:1682
msgid "No results found"
msgstr ""
-#: templates/js/translated/forms.js:1896 templates/search.html:29
+#: templates/js/translated/forms.js:1897 templates/search.html:29
msgid "Searching"
msgstr ""
-#: templates/js/translated/forms.js:2149
+#: templates/js/translated/forms.js:2150
msgid "Clear input"
msgstr ""
-#: templates/js/translated/forms.js:2615
+#: templates/js/translated/forms.js:2616
msgid "File Column"
msgstr ""
-#: templates/js/translated/forms.js:2615
+#: templates/js/translated/forms.js:2616
msgid "Field Name"
msgstr ""
-#: templates/js/translated/forms.js:2627
+#: templates/js/translated/forms.js:2628
msgid "Select Columns"
msgstr ""
@@ -8498,7 +8491,7 @@ msgid "Labels sent to printer"
msgstr ""
#: templates/js/translated/label.js:60 templates/js/translated/report.js:118
-#: templates/js/translated/stock.js:1023
+#: templates/js/translated/stock.js:1022
msgid "Select Stock Items"
msgstr ""
@@ -8552,12 +8545,12 @@ msgid "Select Label Template"
msgstr ""
#: templates/js/translated/modals.js:82 templates/js/translated/modals.js:142
-#: templates/js/translated/modals.js:621
+#: templates/js/translated/modals.js:627
msgid "Cancel"
msgstr ""
#: templates/js/translated/modals.js:83 templates/js/translated/modals.js:141
-#: templates/js/translated/modals.js:688 templates/js/translated/modals.js:996
+#: templates/js/translated/modals.js:694 templates/js/translated/modals.js:1002
#: templates/modals.html:28 templates/modals.html:51
msgid "Submit"
msgstr ""
@@ -8566,47 +8559,47 @@ msgstr ""
msgid "Form Title"
msgstr ""
-#: templates/js/translated/modals.js:403
+#: templates/js/translated/modals.js:421
msgid "Waiting for server..."
msgstr ""
-#: templates/js/translated/modals.js:562
+#: templates/js/translated/modals.js:568
msgid "Show Error Information"
msgstr ""
-#: templates/js/translated/modals.js:620
+#: templates/js/translated/modals.js:626
msgid "Accept"
msgstr ""
-#: templates/js/translated/modals.js:677
+#: templates/js/translated/modals.js:683
msgid "Loading Data"
msgstr ""
-#: templates/js/translated/modals.js:948
+#: templates/js/translated/modals.js:954
msgid "Invalid response from server"
msgstr ""
-#: templates/js/translated/modals.js:948
+#: templates/js/translated/modals.js:954
msgid "Form data missing from server response"
msgstr ""
-#: templates/js/translated/modals.js:960
+#: templates/js/translated/modals.js:966
msgid "Error posting form data"
msgstr ""
-#: templates/js/translated/modals.js:1057
+#: templates/js/translated/modals.js:1063
msgid "JSON response missing form data"
msgstr ""
-#: templates/js/translated/modals.js:1072
+#: templates/js/translated/modals.js:1078
msgid "Error 400: Bad Request"
msgstr ""
-#: templates/js/translated/modals.js:1073
+#: templates/js/translated/modals.js:1079
msgid "Server returned error code 400"
msgstr ""
-#: templates/js/translated/modals.js:1096
+#: templates/js/translated/modals.js:1102
msgid "Error requesting form data"
msgstr ""
@@ -8656,11 +8649,11 @@ msgstr ""
msgid "Mark as read"
msgstr ""
-#: templates/js/translated/notification.js:259
+#: templates/js/translated/notification.js:260
msgid "No unread notifications"
msgstr ""
-#: templates/js/translated/notification.js:300 templates/notifications.html:10
+#: templates/js/translated/notification.js:302 templates/notifications.html:10
msgid "Notifications will load here"
msgstr ""
@@ -8804,7 +8797,7 @@ msgstr ""
msgid "Quantity to receive"
msgstr ""
-#: templates/js/translated/order.js:1225 templates/js/translated/stock.js:2080
+#: templates/js/translated/order.js:1225 templates/js/translated/stock.js:2090
msgid "Stock Status"
msgstr ""
@@ -8828,7 +8821,7 @@ msgstr ""
msgid "Receive Purchase Order Items"
msgstr ""
-#: templates/js/translated/order.js:1602 templates/js/translated/part.js:870
+#: templates/js/translated/order.js:1602 templates/js/translated/part.js:914
msgid "No purchase orders found"
msgstr ""
@@ -8863,7 +8856,7 @@ msgstr ""
#: templates/js/translated/order.js:1937 templates/js/translated/order.js:2139
#: templates/js/translated/order.js:3467 templates/js/translated/order.js:3978
-#: templates/js/translated/part.js:1948 templates/js/translated/part.js:2301
+#: templates/js/translated/part.js:2044 templates/js/translated/part.js:2397
msgid "Unit Price"
msgstr ""
@@ -8873,11 +8866,11 @@ msgid "Total Price"
msgstr ""
#: templates/js/translated/order.js:1993 templates/js/translated/order.js:3525
-#: templates/js/translated/part.js:979
+#: templates/js/translated/part.js:1023
msgid "This line item is overdue"
msgstr ""
-#: templates/js/translated/order.js:2052 templates/js/translated/part.js:1025
+#: templates/js/translated/order.js:2052 templates/js/translated/part.js:1069
msgid "Receive line item"
msgstr ""
@@ -8998,7 +8991,7 @@ msgid "Delete Stock Allocation"
msgstr ""
#: templates/js/translated/order.js:3243 templates/js/translated/order.js:3332
-#: templates/js/translated/stock.js:1535
+#: templates/js/translated/stock.js:1545
msgid "Shipped to customer"
msgstr ""
@@ -9138,165 +9131,209 @@ msgstr ""
msgid "Create Part Variant"
msgstr ""
+#: templates/js/translated/part.js:405
+msgid "Active Part"
+msgstr ""
+
+#: templates/js/translated/part.js:406
+msgid "Part cannot be deleted as it is currently active"
+msgstr ""
+
+#: templates/js/translated/part.js:420
+msgid "Deleting this part cannot be reversed"
+msgstr ""
+
+#: templates/js/translated/part.js:422
+msgid "Any stock items for this part will be deleted"
+msgstr ""
+
#: templates/js/translated/part.js:423
+msgid "This part will be removed from any Bills of Material"
+msgstr ""
+
+#: templates/js/translated/part.js:424
+msgid "All manufacturer and supplier information for this part will be deleted"
+msgstr ""
+
+#: templates/js/translated/part.js:431
+msgid "Delete Part"
+msgstr ""
+
+#: templates/js/translated/part.js:467
msgid "You are subscribed to notifications for this item"
msgstr ""
-#: templates/js/translated/part.js:425
+#: templates/js/translated/part.js:469
msgid "You have subscribed to notifications for this item"
msgstr ""
-#: templates/js/translated/part.js:430
+#: templates/js/translated/part.js:474
msgid "Subscribe to notifications for this item"
msgstr ""
-#: templates/js/translated/part.js:432
+#: templates/js/translated/part.js:476
msgid "You have unsubscribed to notifications for this item"
msgstr ""
-#: templates/js/translated/part.js:449
+#: templates/js/translated/part.js:493
msgid "Validating the BOM will mark each line item as valid"
msgstr ""
-#: templates/js/translated/part.js:459
+#: templates/js/translated/part.js:503
msgid "Validate Bill of Materials"
msgstr ""
-#: templates/js/translated/part.js:462
+#: templates/js/translated/part.js:506
msgid "Validated Bill of Materials"
msgstr ""
-#: templates/js/translated/part.js:487
+#: templates/js/translated/part.js:531
msgid "Copy Bill of Materials"
msgstr ""
-#: templates/js/translated/part.js:513 templates/js/translated/part.js:1397
+#: templates/js/translated/part.js:557 templates/js/translated/part.js:1441
#: templates/js/translated/table_filters.js:452
msgid "Low stock"
msgstr ""
-#: templates/js/translated/part.js:523 templates/js/translated/part.js:1409
+#: templates/js/translated/part.js:567 templates/js/translated/part.js:1453
msgid "No stock available"
msgstr ""
-#: templates/js/translated/part.js:557 templates/js/translated/part.js:642
+#: templates/js/translated/part.js:601 templates/js/translated/part.js:686
msgid "Trackable part"
msgstr ""
-#: templates/js/translated/part.js:561 templates/js/translated/part.js:646
+#: templates/js/translated/part.js:605 templates/js/translated/part.js:690
msgid "Virtual part"
msgstr ""
-#: templates/js/translated/part.js:573
+#: templates/js/translated/part.js:617
msgid "Subscribed part"
msgstr ""
-#: templates/js/translated/part.js:577
+#: templates/js/translated/part.js:621
msgid "Salable part"
msgstr ""
-#: templates/js/translated/part.js:705
+#: templates/js/translated/part.js:749
msgid "No variants found"
msgstr ""
-#: templates/js/translated/part.js:1095
+#: templates/js/translated/part.js:1139
msgid "Delete part relationship"
msgstr ""
-#: templates/js/translated/part.js:1119
+#: templates/js/translated/part.js:1163
msgid "Delete Part Relationship"
msgstr ""
-#: templates/js/translated/part.js:1184 templates/js/translated/part.js:1480
+#: templates/js/translated/part.js:1228 templates/js/translated/part.js:1524
msgid "No parts found"
msgstr ""
-#: templates/js/translated/part.js:1223
+#: templates/js/translated/part.js:1267
msgid "Not available"
msgstr ""
-#: templates/js/translated/part.js:1374
+#: templates/js/translated/part.js:1418
msgid "No category"
msgstr ""
-#: templates/js/translated/part.js:1504 templates/js/translated/part.js:1664
-#: templates/js/translated/stock.js:2238
+#: templates/js/translated/part.js:1548 templates/js/translated/part.js:1760
+#: templates/js/translated/stock.js:2248
msgid "Display as list"
msgstr ""
-#: templates/js/translated/part.js:1520
+#: templates/js/translated/part.js:1564
msgid "Display as grid"
msgstr ""
-#: templates/js/translated/part.js:1683 templates/js/translated/stock.js:2257
+#: templates/js/translated/part.js:1630
+msgid "Set the part category for the selected parts"
+msgstr ""
+
+#: templates/js/translated/part.js:1635
+msgid "Set Part Category"
+msgstr ""
+
+#: templates/js/translated/part.js:1640
+msgid "Select Part Category"
+msgstr ""
+
+#: templates/js/translated/part.js:1653
+msgid "Category is required"
+msgstr ""
+
+#: templates/js/translated/part.js:1779 templates/js/translated/stock.js:2267
msgid "Display as tree"
msgstr ""
-#: templates/js/translated/part.js:1747
+#: templates/js/translated/part.js:1843
msgid "Subscribed category"
msgstr ""
-#: templates/js/translated/part.js:1761 templates/js/translated/stock.js:2301
+#: templates/js/translated/part.js:1857 templates/js/translated/stock.js:2311
msgid "Path"
msgstr ""
-#: templates/js/translated/part.js:1805
+#: templates/js/translated/part.js:1901
msgid "No test templates matching query"
msgstr ""
-#: templates/js/translated/part.js:1856 templates/js/translated/stock.js:1233
+#: templates/js/translated/part.js:1952 templates/js/translated/stock.js:1243
msgid "Edit test result"
msgstr ""
-#: templates/js/translated/part.js:1857 templates/js/translated/stock.js:1234
-#: templates/js/translated/stock.js:1493
+#: templates/js/translated/part.js:1953 templates/js/translated/stock.js:1244
+#: templates/js/translated/stock.js:1503
msgid "Delete test result"
msgstr ""
-#: templates/js/translated/part.js:1863
+#: templates/js/translated/part.js:1959
msgid "This test is defined for a parent part"
msgstr ""
-#: templates/js/translated/part.js:1885
+#: templates/js/translated/part.js:1981
msgid "Edit Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:1899
+#: templates/js/translated/part.js:1995
msgid "Delete Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:1924
+#: templates/js/translated/part.js:2020
#, python-brace-format
msgid "No ${human_name} information found"
msgstr ""
-#: templates/js/translated/part.js:1981
+#: templates/js/translated/part.js:2077
#, python-brace-format
msgid "Edit ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:1982
+#: templates/js/translated/part.js:2078
#, python-brace-format
msgid "Delete ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:2096
+#: templates/js/translated/part.js:2192
msgid "Current Stock"
msgstr ""
-#: templates/js/translated/part.js:2129
+#: templates/js/translated/part.js:2225
msgid "No scheduling information available for this part"
msgstr ""
-#: templates/js/translated/part.js:2155
+#: templates/js/translated/part.js:2251
msgid "Scheduled Stock Quantities"
msgstr ""
-#: templates/js/translated/part.js:2225
+#: templates/js/translated/part.js:2321
msgid "Single Price"
msgstr ""
-#: templates/js/translated/part.js:2244
+#: templates/js/translated/part.js:2340
msgid "Single Price Difference"
msgstr ""
@@ -9378,360 +9415,360 @@ msgstr ""
msgid "Remove results"
msgstr ""
-#: templates/js/translated/stock.js:73
+#: templates/js/translated/stock.js:72
msgid "Serialize Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:101
+#: templates/js/translated/stock.js:100
msgid "Confirm Stock Serialization"
msgstr ""
-#: templates/js/translated/stock.js:110
+#: templates/js/translated/stock.js:109
msgid "Parent stock location"
msgstr ""
-#: templates/js/translated/stock.js:139
+#: templates/js/translated/stock.js:138
msgid "Edit Stock Location"
msgstr ""
-#: templates/js/translated/stock.js:154
+#: templates/js/translated/stock.js:153
msgid "New Stock Location"
msgstr ""
-#: templates/js/translated/stock.js:194
+#: templates/js/translated/stock.js:193
msgid "This part cannot be serialized"
msgstr ""
-#: templates/js/translated/stock.js:233
+#: templates/js/translated/stock.js:232
msgid "Enter initial quantity for this stock item"
msgstr ""
-#: templates/js/translated/stock.js:239
+#: templates/js/translated/stock.js:238
msgid "Enter serial numbers for new stock (or leave blank)"
msgstr ""
-#: templates/js/translated/stock.js:304
+#: templates/js/translated/stock.js:303
msgid "Stock item duplicated"
msgstr ""
-#: templates/js/translated/stock.js:324
+#: templates/js/translated/stock.js:323
msgid "Duplicate Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:344
+#: templates/js/translated/stock.js:343
msgid "Edit Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:394
+#: templates/js/translated/stock.js:393
msgid "Created new stock item"
msgstr ""
-#: templates/js/translated/stock.js:407
+#: templates/js/translated/stock.js:406
msgid "Created multiple stock items"
msgstr ""
-#: templates/js/translated/stock.js:432
+#: templates/js/translated/stock.js:431
msgid "Find Serial Number"
msgstr ""
-#: templates/js/translated/stock.js:436 templates/js/translated/stock.js:437
+#: templates/js/translated/stock.js:435 templates/js/translated/stock.js:436
msgid "Enter serial number"
msgstr ""
-#: templates/js/translated/stock.js:453
+#: templates/js/translated/stock.js:452
msgid "Enter a serial number"
msgstr ""
-#: templates/js/translated/stock.js:473
+#: templates/js/translated/stock.js:472
msgid "No matching serial number"
msgstr ""
-#: templates/js/translated/stock.js:482
+#: templates/js/translated/stock.js:481
msgid "More than one matching result found"
msgstr ""
-#: templates/js/translated/stock.js:605
+#: templates/js/translated/stock.js:604
msgid "Confirm stock assignment"
msgstr ""
-#: templates/js/translated/stock.js:606
+#: templates/js/translated/stock.js:605
msgid "Assign Stock to Customer"
msgstr ""
-#: templates/js/translated/stock.js:683
+#: templates/js/translated/stock.js:682
msgid "Warning: Merge operation cannot be reversed"
msgstr ""
-#: templates/js/translated/stock.js:684
+#: templates/js/translated/stock.js:683
msgid "Some information will be lost when merging stock items"
msgstr ""
-#: templates/js/translated/stock.js:686
+#: templates/js/translated/stock.js:685
msgid "Stock transaction history will be deleted for merged items"
msgstr ""
-#: templates/js/translated/stock.js:687
+#: templates/js/translated/stock.js:686
msgid "Supplier part information will be deleted for merged items"
msgstr ""
-#: templates/js/translated/stock.js:773
+#: templates/js/translated/stock.js:772
msgid "Confirm stock item merge"
msgstr ""
-#: templates/js/translated/stock.js:774
+#: templates/js/translated/stock.js:773
msgid "Merge Stock Items"
msgstr ""
-#: templates/js/translated/stock.js:869
+#: templates/js/translated/stock.js:868
msgid "Transfer Stock"
msgstr ""
-#: templates/js/translated/stock.js:870
+#: templates/js/translated/stock.js:869
msgid "Move"
msgstr ""
-#: templates/js/translated/stock.js:876
+#: templates/js/translated/stock.js:875
msgid "Count Stock"
msgstr ""
-#: templates/js/translated/stock.js:877
+#: templates/js/translated/stock.js:876
msgid "Count"
msgstr ""
-#: templates/js/translated/stock.js:881
+#: templates/js/translated/stock.js:880
msgid "Remove Stock"
msgstr ""
-#: templates/js/translated/stock.js:882
+#: templates/js/translated/stock.js:881
msgid "Take"
msgstr ""
-#: templates/js/translated/stock.js:886
+#: templates/js/translated/stock.js:885
msgid "Add Stock"
msgstr ""
-#: templates/js/translated/stock.js:887 users/models.py:215
+#: templates/js/translated/stock.js:886 users/models.py:215
msgid "Add"
msgstr ""
-#: templates/js/translated/stock.js:891
+#: templates/js/translated/stock.js:890
msgid "Delete Stock"
msgstr ""
-#: templates/js/translated/stock.js:984
+#: templates/js/translated/stock.js:983
msgid "Quantity cannot be adjusted for serialized stock"
msgstr ""
-#: templates/js/translated/stock.js:984
+#: templates/js/translated/stock.js:983
msgid "Specify stock quantity"
msgstr ""
-#: templates/js/translated/stock.js:1024
+#: templates/js/translated/stock.js:1023
msgid "You must select at least one available stock item"
msgstr ""
-#: templates/js/translated/stock.js:1047
+#: templates/js/translated/stock.js:1046
msgid "Confirm stock adjustment"
msgstr ""
-#: templates/js/translated/stock.js:1172
+#: templates/js/translated/stock.js:1182
msgid "PASS"
msgstr ""
-#: templates/js/translated/stock.js:1174
+#: templates/js/translated/stock.js:1184
msgid "FAIL"
msgstr ""
-#: templates/js/translated/stock.js:1179
+#: templates/js/translated/stock.js:1189
msgid "NO RESULT"
msgstr ""
-#: templates/js/translated/stock.js:1226
+#: templates/js/translated/stock.js:1236
msgid "Pass test"
msgstr ""
-#: templates/js/translated/stock.js:1229
+#: templates/js/translated/stock.js:1239
msgid "Add test result"
msgstr ""
-#: templates/js/translated/stock.js:1255
+#: templates/js/translated/stock.js:1265
msgid "No test results found"
msgstr ""
-#: templates/js/translated/stock.js:1311
+#: templates/js/translated/stock.js:1321
msgid "Test Date"
msgstr ""
-#: templates/js/translated/stock.js:1476
+#: templates/js/translated/stock.js:1486
msgid "Edit Test Result"
msgstr ""
-#: templates/js/translated/stock.js:1498
+#: templates/js/translated/stock.js:1508
msgid "Delete Test Result"
msgstr ""
-#: templates/js/translated/stock.js:1527
+#: templates/js/translated/stock.js:1537
msgid "In production"
msgstr ""
-#: templates/js/translated/stock.js:1531
+#: templates/js/translated/stock.js:1541
msgid "Installed in Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:1539
+#: templates/js/translated/stock.js:1549
msgid "Assigned to Sales Order"
msgstr ""
-#: templates/js/translated/stock.js:1545
+#: templates/js/translated/stock.js:1555
msgid "No stock location set"
msgstr ""
-#: templates/js/translated/stock.js:1712
+#: templates/js/translated/stock.js:1722
msgid "Stock item is in production"
msgstr ""
-#: templates/js/translated/stock.js:1717
+#: templates/js/translated/stock.js:1727
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:1720
+#: templates/js/translated/stock.js:1730
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:1723
+#: templates/js/translated/stock.js:1733
msgid "Serialized stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:1725
+#: templates/js/translated/stock.js:1735
msgid "Stock item has been fully allocated"
msgstr ""
-#: templates/js/translated/stock.js:1727
+#: templates/js/translated/stock.js:1737
msgid "Stock item has been partially allocated"
msgstr ""
-#: templates/js/translated/stock.js:1730
+#: templates/js/translated/stock.js:1740
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:1734
+#: templates/js/translated/stock.js:1744
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:1736
+#: templates/js/translated/stock.js:1746
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:1743
+#: templates/js/translated/stock.js:1753
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:1745
+#: templates/js/translated/stock.js:1755
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:1747
+#: templates/js/translated/stock.js:1757
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:1751
+#: templates/js/translated/stock.js:1761
#: templates/js/translated/table_filters.js:188
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:1802
+#: templates/js/translated/stock.js:1812
msgid "Stocktake"
msgstr ""
-#: templates/js/translated/stock.js:1884
+#: templates/js/translated/stock.js:1894
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:1922
+#: templates/js/translated/stock.js:1932
msgid "No stock items matching query"
msgstr ""
-#: templates/js/translated/stock.js:2095
+#: templates/js/translated/stock.js:2105
msgid "Set Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:2109
+#: templates/js/translated/stock.js:2119
msgid "Select Status Code"
msgstr ""
-#: templates/js/translated/stock.js:2110
+#: templates/js/translated/stock.js:2120
msgid "Status code must be selected"
msgstr ""
-#: templates/js/translated/stock.js:2365
+#: templates/js/translated/stock.js:2375
msgid "Details"
msgstr ""
-#: templates/js/translated/stock.js:2381
+#: templates/js/translated/stock.js:2391
msgid "Part information unavailable"
msgstr ""
-#: templates/js/translated/stock.js:2403
+#: templates/js/translated/stock.js:2413
msgid "Location no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2422
+#: templates/js/translated/stock.js:2432
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2441
+#: templates/js/translated/stock.js:2451
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2459
+#: templates/js/translated/stock.js:2469
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2482
+#: templates/js/translated/stock.js:2492
msgid "Added"
msgstr ""
-#: templates/js/translated/stock.js:2490
+#: templates/js/translated/stock.js:2500
msgid "Removed"
msgstr ""
-#: templates/js/translated/stock.js:2566
+#: templates/js/translated/stock.js:2576
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:2617 templates/js/translated/stock.js:2653
+#: templates/js/translated/stock.js:2627 templates/js/translated/stock.js:2663
msgid "Uninstall Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:2666
+#: templates/js/translated/stock.js:2676
msgid "Select stock item to uninstall"
msgstr ""
-#: templates/js/translated/stock.js:2687
+#: templates/js/translated/stock.js:2697
msgid "Install another stock item into this item"
msgstr ""
-#: templates/js/translated/stock.js:2688
+#: templates/js/translated/stock.js:2698
msgid "Stock items can only be installed if they meet the following criteria"
msgstr ""
-#: templates/js/translated/stock.js:2690
+#: templates/js/translated/stock.js:2700
msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:2691
+#: templates/js/translated/stock.js:2701
msgid "The Stock Item is currently available in stock"
msgstr ""
-#: templates/js/translated/stock.js:2692
+#: templates/js/translated/stock.js:2702
msgid "The Stock Item is not already installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:2693
+#: templates/js/translated/stock.js:2703
msgid "The Stock Item is tracked by either a batch code or serial number"
msgstr ""
-#: templates/js/translated/stock.js:2706
+#: templates/js/translated/stock.js:2716
msgid "Select part to install"
msgstr ""
diff --git a/InvenTree/locale/es_MX/LC_MESSAGES/django.po b/InvenTree/locale/es_MX/LC_MESSAGES/django.po
index b17d3d6faf..496dd91aef 100644
--- a/InvenTree/locale/es_MX/LC_MESSAGES/django.po
+++ b/InvenTree/locale/es_MX/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-06-03 10:21+0000\n"
+"POT-Creation-Date: 2022-06-06 11:28+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
@@ -30,48 +30,39 @@ msgstr ""
msgid "Enter date"
msgstr ""
-#: InvenTree/forms.py:117 templates/account/email_confirm.html:20
-#: templates/js/translated/forms.js:630
-msgid "Confirm"
-msgstr ""
-
-#: InvenTree/forms.py:134
+#: InvenTree/forms.py:117
msgid "Confirm delete"
msgstr ""
-#: InvenTree/forms.py:135
+#: InvenTree/forms.py:118
msgid "Confirm item deletion"
msgstr ""
-#: InvenTree/forms.py:167
+#: InvenTree/forms.py:150
msgid "Enter password"
msgstr ""
-#: InvenTree/forms.py:168
+#: InvenTree/forms.py:151
msgid "Enter new password"
msgstr ""
-#: InvenTree/forms.py:175
+#: InvenTree/forms.py:158
msgid "Confirm password"
msgstr ""
-#: InvenTree/forms.py:176
+#: InvenTree/forms.py:159
msgid "Confirm new password"
msgstr ""
-#: InvenTree/forms.py:213
-msgid "Select Category"
-msgstr ""
-
-#: InvenTree/forms.py:234
+#: InvenTree/forms.py:184
msgid "Email (again)"
msgstr ""
-#: InvenTree/forms.py:238
+#: InvenTree/forms.py:188
msgid "Email address confirmation"
msgstr ""
-#: InvenTree/forms.py:259
+#: InvenTree/forms.py:209
msgid "You must type the same email each time."
msgstr ""
@@ -80,7 +71,7 @@ msgstr ""
msgid "Duplicate serial: {sn}"
msgstr ""
-#: InvenTree/helpers.py:409 order/models.py:365 order/models.py:517
+#: InvenTree/helpers.py:409 order/models.py:369 order/models.py:521
msgid "Invalid quantity provided"
msgstr ""
@@ -117,114 +108,113 @@ msgstr ""
msgid "Number of unique serial numbers ({s}) must match quantity ({q})"
msgstr ""
-#: InvenTree/models.py:174
+#: InvenTree/models.py:178
msgid "Missing file"
msgstr ""
-#: InvenTree/models.py:175
+#: InvenTree/models.py:179
msgid "Missing external link"
msgstr ""
-#: InvenTree/models.py:187 stock/models.py:2087
+#: InvenTree/models.py:191 stock/models.py:2091
#: templates/js/translated/attachment.js:101
#: templates/js/translated/attachment.js:198
msgid "Attachment"
msgstr ""
-#: InvenTree/models.py:188
+#: InvenTree/models.py:192
msgid "Select file to attach"
msgstr ""
-#: InvenTree/models.py:194 company/models.py:123 company/models.py:272
-#: company/models.py:506 order/models.py:135 order/models.py:1235
+#: InvenTree/models.py:198 company/models.py:123 company/models.py:272
+#: company/models.py:506 order/models.py:135 order/models.py:1239
#: part/models.py:795
#: report/templates/report/inventree_build_order_base.html:165
#: templates/js/translated/company.js:655
#: templates/js/translated/company.js:946 templates/js/translated/order.js:2676
-#: templates/js/translated/part.js:1441
+#: templates/js/translated/part.js:1485
msgid "Link"
msgstr ""
-#: InvenTree/models.py:195 build/models.py:320 part/models.py:796
+#: InvenTree/models.py:199 build/models.py:320 part/models.py:796
#: stock/models.py:642
msgid "Link to external URL"
msgstr ""
-#: InvenTree/models.py:198 templates/js/translated/attachment.js:102
+#: InvenTree/models.py:202 templates/js/translated/attachment.js:102
#: templates/js/translated/attachment.js:242
msgid "Comment"
msgstr ""
-#: InvenTree/models.py:198
+#: InvenTree/models.py:202
msgid "File comment"
msgstr ""
-#: InvenTree/models.py:204 InvenTree/models.py:205 common/models.py:1499
-#: common/models.py:1500 common/models.py:1728 common/models.py:1729
-#: common/models.py:1991 common/models.py:1992 part/models.py:2153
-#: part/models.py:2173 plugin/models.py:238 plugin/models.py:239
+#: InvenTree/models.py:208 InvenTree/models.py:209 common/models.py:1506
+#: common/models.py:1507 common/models.py:1735 common/models.py:1736
+#: common/models.py:1998 common/models.py:1999 part/models.py:2141
+#: part/models.py:2161 plugin/models.py:238 plugin/models.py:239
#: report/templates/report/inventree_test_report_base.html:96
#: templates/js/translated/stock.js:2513
msgid "User"
msgstr ""
-#: InvenTree/models.py:208
+#: InvenTree/models.py:212
msgid "upload date"
msgstr ""
-#: InvenTree/models.py:230
+#: InvenTree/models.py:234
msgid "Filename must not be empty"
msgstr ""
-#: InvenTree/models.py:253
+#: InvenTree/models.py:257
msgid "Invalid attachment directory"
msgstr ""
-#: InvenTree/models.py:263
+#: InvenTree/models.py:267
#, python-brace-format
msgid "Filename contains illegal character '{c}'"
msgstr ""
-#: InvenTree/models.py:266
+#: InvenTree/models.py:270
msgid "Filename missing extension"
msgstr ""
-#: InvenTree/models.py:273
+#: InvenTree/models.py:277
msgid "Attachment with this filename already exists"
msgstr ""
-#: InvenTree/models.py:280
+#: InvenTree/models.py:284
msgid "Error renaming file"
msgstr ""
-#: InvenTree/models.py:314
+#: InvenTree/models.py:318
msgid "Invalid choice"
msgstr ""
-#: InvenTree/models.py:333 InvenTree/models.py:334 common/models.py:1714
+#: InvenTree/models.py:337 InvenTree/models.py:338 common/models.py:1721
#: company/models.py:354 label/models.py:101 part/models.py:739
-#: part/models.py:2331 plugin/models.py:93 report/models.py:151
+#: part/models.py:2319 plugin/models.py:93 report/models.py:151
#: templates/InvenTree/notifications/notifications.html:84
#: templates/InvenTree/settings/mixins/urls.html:13
#: templates/InvenTree/settings/plugin.html:49
#: templates/InvenTree/settings/plugin.html:132
#: templates/InvenTree/settings/plugin_settings.html:23
-#: templates/InvenTree/settings/settings.html:327
+#: templates/InvenTree/settings/settings.html:346
#: templates/js/translated/company.js:539
-#: templates/js/translated/company.js:757 templates/js/translated/part.js:615
-#: templates/js/translated/part.js:767 templates/js/translated/part.js:1736
+#: templates/js/translated/company.js:757 templates/js/translated/part.js:659
+#: templates/js/translated/part.js:811 templates/js/translated/part.js:1832
#: templates/js/translated/stock.js:2283
msgid "Name"
msgstr ""
-#: InvenTree/models.py:340 build/models.py:197
+#: InvenTree/models.py:344 build/models.py:197
#: build/templates/build/detail.html:24 company/models.py:278
#: company/models.py:512 company/templates/company/company_base.html:71
#: company/templates/company/manufacturer_part.html:75
#: company/templates/company/supplier_part.html:73 label/models.py:108
#: order/models.py:133 part/models.py:762 part/templates/part/category.html:74
-#: part/templates/part/part_base.html:167
-#: part/templates/part/set_category.html:14 report/models.py:164
+#: part/templates/part/part_base.html:167 report/models.py:164
#: report/models.py:509 report/models.py:550
#: report/templates/report/inventree_build_order_base.html:118
#: stock/templates/stock/location.html:103
@@ -234,71 +224,79 @@ msgstr ""
#: templates/js/translated/company.js:666
#: templates/js/translated/company.js:957 templates/js/translated/order.js:1656
#: templates/js/translated/order.js:1888 templates/js/translated/order.js:2476
-#: templates/js/translated/part.js:674 templates/js/translated/part.js:1082
-#: templates/js/translated/part.js:1355 templates/js/translated/part.js:1755
-#: templates/js/translated/part.js:1824 templates/js/translated/stock.js:1676
+#: templates/js/translated/part.js:718 templates/js/translated/part.js:1126
+#: templates/js/translated/part.js:1399 templates/js/translated/part.js:1851
+#: templates/js/translated/part.js:1920 templates/js/translated/stock.js:1676
#: templates/js/translated/stock.js:2295 templates/js/translated/stock.js:2350
msgid "Description"
msgstr ""
-#: InvenTree/models.py:341
+#: InvenTree/models.py:345
msgid "Description (optional)"
msgstr ""
-#: InvenTree/models.py:349
+#: InvenTree/models.py:353
msgid "parent"
msgstr ""
-#: InvenTree/serializers.py:52 part/models.py:2650
+#: InvenTree/models.py:466
+msgid "Server Error"
+msgstr ""
+
+#: InvenTree/models.py:467
+msgid "An error has been logged by the server."
+msgstr ""
+
+#: InvenTree/serializers.py:52 part/models.py:2640
msgid "Must be a valid number"
msgstr ""
-#: InvenTree/serializers.py:271
+#: InvenTree/serializers.py:263
msgid "Filename"
msgstr ""
-#: InvenTree/serializers.py:306
+#: InvenTree/serializers.py:298
msgid "Invalid value"
msgstr ""
-#: InvenTree/serializers.py:328
+#: InvenTree/serializers.py:320
msgid "Data File"
msgstr ""
-#: InvenTree/serializers.py:329
+#: InvenTree/serializers.py:321
msgid "Select data file for upload"
msgstr ""
-#: InvenTree/serializers.py:350
+#: InvenTree/serializers.py:342
msgid "Unsupported file type"
msgstr ""
-#: InvenTree/serializers.py:356
+#: InvenTree/serializers.py:348
msgid "File is too large"
msgstr ""
-#: InvenTree/serializers.py:377
+#: InvenTree/serializers.py:369
msgid "No columns found in file"
msgstr ""
-#: InvenTree/serializers.py:380
+#: InvenTree/serializers.py:372
msgid "No data rows found in file"
msgstr ""
-#: InvenTree/serializers.py:503
+#: InvenTree/serializers.py:495
msgid "No data rows provided"
msgstr ""
-#: InvenTree/serializers.py:506
+#: InvenTree/serializers.py:498
msgid "No data columns supplied"
msgstr ""
-#: InvenTree/serializers.py:583
+#: InvenTree/serializers.py:575
#, python-brace-format
msgid "Missing required column: '{name}'"
msgstr ""
-#: InvenTree/serializers.py:592
+#: InvenTree/serializers.py:584
#, python-brace-format
msgid "Duplicate column: '{col}'"
msgstr ""
@@ -441,7 +439,7 @@ msgstr ""
msgid "Returned"
msgstr ""
-#: InvenTree/status_codes.py:141 order/models.py:1114
+#: InvenTree/status_codes.py:141 order/models.py:1118
#: templates/js/translated/order.js:3264 templates/js/translated/order.js:3607
msgid "Shipped"
msgstr ""
@@ -598,27 +596,27 @@ msgstr ""
msgid "Invalid value for overage"
msgstr ""
-#: InvenTree/views.py:522
+#: InvenTree/views.py:521
msgid "Delete Item"
msgstr ""
-#: InvenTree/views.py:571
+#: InvenTree/views.py:570
msgid "Check box to confirm item deletion"
msgstr ""
-#: InvenTree/views.py:586 templates/InvenTree/settings/user.html:22
+#: InvenTree/views.py:585 templates/InvenTree/settings/user.html:22
msgid "Edit User Information"
msgstr ""
-#: InvenTree/views.py:598 templates/InvenTree/settings/user.html:19
+#: InvenTree/views.py:597 templates/InvenTree/settings/user.html:19
msgid "Set Password"
msgstr ""
-#: InvenTree/views.py:618
+#: InvenTree/views.py:617
msgid "Password fields must match"
msgstr ""
-#: InvenTree/views.py:842 templates/navbar.html:152
+#: InvenTree/views.py:807 templates/navbar.html:152
msgid "System Information"
msgstr ""
@@ -629,6 +627,7 @@ msgstr ""
#: build/models.py:131 build/templates/build/build_base.html:9
#: build/templates/build/build_base.html:27
#: report/templates/report/inventree_build_order_base.html:106
+#: templates/email/overdue_build_order.html:15
#: templates/js/translated/build.js:727
msgid "Build Order"
msgstr ""
@@ -647,8 +646,8 @@ msgstr ""
msgid "Build Order Reference"
msgstr ""
-#: build/models.py:189 order/models.py:288 order/models.py:638
-#: order/models.py:916 part/models.py:2568
+#: build/models.py:189 order/models.py:292 order/models.py:642
+#: order/models.py:920 part/models.py:2558
#: part/templates/part/upload_bom.html:54
#: report/templates/report/inventree_po_report.html:91
#: report/templates/report/inventree_so_report.html:92
@@ -674,13 +673,12 @@ msgstr ""
#: build/models.py:215 build/templates/build/build_base.html:77
#: build/templates/build/detail.html:29 company/models.py:647
-#: order/models.py:1012 order/models.py:1103 part/models.py:336
-#: part/models.py:2099 part/models.py:2114 part/models.py:2133
-#: part/models.py:2151 part/models.py:2250 part/models.py:2370
-#: part/models.py:2458 part/models.py:2543 part/models.py:2819
-#: part/serializers.py:793 part/templates/part/part_app_base.html:8
+#: order/models.py:1016 order/models.py:1107 part/models.py:336
+#: part/models.py:2087 part/models.py:2102 part/models.py:2121
+#: part/models.py:2139 part/models.py:2238 part/models.py:2358
+#: part/models.py:2448 part/models.py:2533 part/models.py:2809
+#: part/serializers.py:795 part/templates/part/part_app_base.html:8
#: part/templates/part/part_pricing.html:12
-#: part/templates/part/set_category.html:13
#: part/templates/part/upload_bom.html:52
#: report/templates/report/inventree_build_order_base.html:110
#: report/templates/report/inventree_po_report.html:89
@@ -688,6 +686,7 @@ msgstr ""
#: templates/InvenTree/search.html:80
#: templates/email/build_order_required_stock.html:17
#: templates/email/low_stock_notification.html:16
+#: templates/email/overdue_build_order.html:16
#: templates/js/translated/barcode.js:435 templates/js/translated/bom.js:552
#: templates/js/translated/bom.js:687 templates/js/translated/bom.js:805
#: templates/js/translated/build.js:1153 templates/js/translated/build.js:1647
@@ -699,8 +698,8 @@ msgstr ""
#: templates/js/translated/order.js:883 templates/js/translated/order.js:1315
#: templates/js/translated/order.js:1873 templates/js/translated/order.js:2819
#: templates/js/translated/order.js:3217 templates/js/translated/order.js:3432
-#: templates/js/translated/part.js:1067 templates/js/translated/part.js:1137
-#: templates/js/translated/part.js:1333 templates/js/translated/stock.js:531
+#: templates/js/translated/part.js:1111 templates/js/translated/part.js:1181
+#: templates/js/translated/part.js:1377 templates/js/translated/stock.js:531
#: templates/js/translated/stock.js:696 templates/js/translated/stock.js:903
#: templates/js/translated/stock.js:1633 templates/js/translated/stock.js:2376
#: templates/js/translated/stock.js:2571 templates/js/translated/stock.js:2705
@@ -774,7 +773,7 @@ msgstr ""
msgid "Creation Date"
msgstr ""
-#: build/models.py:286 order/models.py:660
+#: build/models.py:286 order/models.py:664
msgid "Target completion date"
msgstr ""
@@ -782,7 +781,7 @@ msgstr ""
msgid "Target date for build completion. Build will be overdue after this date."
msgstr ""
-#: build/models.py:290 order/models.py:331
+#: build/models.py:290 order/models.py:335
#: templates/js/translated/build.js:2558
msgid "Completion Date"
msgstr ""
@@ -823,14 +822,14 @@ msgstr ""
#: build/models.py:324 build/serializers.py:374
#: build/templates/build/sidebar.html:21 company/models.py:134
#: company/models.py:519 company/templates/company/sidebar.html:25
-#: order/models.py:155 order/models.py:918 order/models.py:1213
+#: order/models.py:155 order/models.py:922 order/models.py:1217
#: order/templates/order/po_sidebar.html:11
#: order/templates/order/so_sidebar.html:17 part/models.py:921
#: part/templates/part/part_sidebar.html:59
#: report/templates/report/inventree_build_order_base.html:173
-#: stock/models.py:713 stock/models.py:1985 stock/models.py:2093
+#: stock/models.py:713 stock/models.py:1989 stock/models.py:2097
#: stock/serializers.py:315 stock/serializers.py:444 stock/serializers.py:486
-#: stock/serializers.py:772 stock/serializers.py:871 stock/serializers.py:1003
+#: stock/serializers.py:759 stock/serializers.py:858 stock/serializers.py:990
#: stock/templates/stock/stock_sidebar.html:25
#: templates/js/translated/barcode.js:100 templates/js/translated/bom.js:1044
#: templates/js/translated/company.js:962 templates/js/translated/order.js:2040
@@ -869,7 +868,7 @@ msgstr ""
msgid "Stock item is over-allocated"
msgstr ""
-#: build/models.py:1133 order/models.py:1372
+#: build/models.py:1133 order/models.py:1376
msgid "Allocation quantity must be greater than zero"
msgstr ""
@@ -891,9 +890,9 @@ msgstr ""
msgid "Build to allocate parts"
msgstr ""
-#: build/models.py:1282 build/serializers.py:603 order/serializers.py:994
-#: order/serializers.py:1015 stock/serializers.py:382 stock/serializers.py:703
-#: stock/serializers.py:829 stock/templates/stock/item_base.html:10
+#: build/models.py:1282 build/serializers.py:603 order/serializers.py:996
+#: order/serializers.py:1017 stock/serializers.py:382 stock/serializers.py:690
+#: stock/serializers.py:816 stock/templates/stock/item_base.html:10
#: stock/templates/stock/item_base.html:23
#: stock/templates/stock/item_base.html:199
#: templates/js/translated/build.js:738 templates/js/translated/build.js:743
@@ -912,11 +911,11 @@ msgstr ""
#: build/models.py:1295 build/serializers.py:183
#: build/templates/build/build_base.html:82
-#: build/templates/build/detail.html:34 common/models.py:1536
+#: build/templates/build/detail.html:34 common/models.py:1543
#: company/forms.py:36 company/templates/company/supplier_part.html:258
-#: order/models.py:909 order/models.py:1412 order/serializers.py:1134
-#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:91
-#: part/forms.py:106 part/forms.py:121 part/models.py:2559
+#: order/models.py:913 order/models.py:1416 order/serializers.py:1136
+#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:59
+#: part/forms.py:74 part/forms.py:89 part/models.py:2549
#: part/templates/part/detail.html:935 part/templates/part/detail.html:1021
#: part/templates/part/part_pricing.html:16
#: part/templates/part/upload_bom.html:53
@@ -938,9 +937,9 @@ msgstr ""
#: templates/js/translated/order.js:2821 templates/js/translated/order.js:3143
#: templates/js/translated/order.js:3231 templates/js/translated/order.js:3320
#: templates/js/translated/order.js:3454 templates/js/translated/order.js:3965
-#: templates/js/translated/part.js:967 templates/js/translated/part.js:1969
-#: templates/js/translated/part.js:2200 templates/js/translated/part.js:2234
-#: templates/js/translated/part.js:2312 templates/js/translated/stock.js:403
+#: templates/js/translated/part.js:1011 templates/js/translated/part.js:2065
+#: templates/js/translated/part.js:2296 templates/js/translated/part.js:2330
+#: templates/js/translated/part.js:2408 templates/js/translated/stock.js:403
#: templates/js/translated/stock.js:557 templates/js/translated/stock.js:727
#: templates/js/translated/stock.js:2498 templates/js/translated/stock.js:2583
msgid "Quantity"
@@ -983,9 +982,9 @@ msgstr ""
msgid "Enter quantity for build output"
msgstr ""
-#: build/serializers.py:198 build/serializers.py:623 order/models.py:363
-#: order/serializers.py:280 order/serializers.py:435 part/serializers.py:512
-#: part/serializers.py:956 stock/models.py:470 stock/models.py:1239
+#: build/serializers.py:198 build/serializers.py:623 order/models.py:367
+#: order/serializers.py:280 order/serializers.py:435 part/serializers.py:514
+#: part/serializers.py:958 stock/models.py:470 stock/models.py:1239
#: stock/serializers.py:288
msgid "Quantity must be greater than zero"
msgstr ""
@@ -998,7 +997,7 @@ msgstr ""
msgid "Integer quantity required, as the bill of materials contains trackable parts"
msgstr ""
-#: build/serializers.py:222 order/serializers.py:448 order/serializers.py:1138
+#: build/serializers.py:222 order/serializers.py:448 order/serializers.py:1140
#: stock/serializers.py:297 templates/js/translated/order.js:1186
#: templates/js/translated/stock.js:238 templates/js/translated/stock.js:404
msgid "Serial Numbers"
@@ -1026,7 +1025,7 @@ msgstr ""
#: build/serializers.py:356 order/serializers.py:421 order/serializers.py:525
#: stock/serializers.py:308 stock/serializers.py:439 stock/serializers.py:481
-#: stock/serializers.py:864 stock/serializers.py:1097
+#: stock/serializers.py:851 stock/serializers.py:1084
#: stock/templates/stock/item_base.html:390
#: templates/js/translated/barcode.js:436
#: templates/js/translated/barcode.js:618 templates/js/translated/build.js:750
@@ -1044,7 +1043,7 @@ msgid "Location for completed build outputs"
msgstr ""
#: build/serializers.py:363 build/templates/build/build_base.html:142
-#: build/templates/build/detail.html:62 order/models.py:654
+#: build/templates/build/detail.html:62 order/models.py:658
#: order/serializers.py:458 stock/templates/stock/item_base.html:423
#: templates/js/translated/barcode.js:182 templates/js/translated/build.js:2510
#: templates/js/translated/order.js:1320 templates/js/translated/order.js:1660
@@ -1109,8 +1108,8 @@ msgstr ""
msgid "No build outputs have been created for this build order"
msgstr ""
-#: build/serializers.py:535 build/serializers.py:580 part/models.py:2677
-#: part/models.py:2811
+#: build/serializers.py:535 build/serializers.py:580 part/models.py:2667
+#: part/models.py:2801
msgid "BOM Item"
msgstr ""
@@ -1126,11 +1125,11 @@ msgstr ""
msgid "bom_item.part must point to the same part as the build order"
msgstr ""
-#: build/serializers.py:609 stock/serializers.py:716
+#: build/serializers.py:609 stock/serializers.py:703
msgid "Item must be in stock"
msgstr ""
-#: build/serializers.py:667 order/serializers.py:1052
+#: build/serializers.py:667 order/serializers.py:1054
#, python-brace-format
msgid "Available quantity ({q}) exceeded"
msgstr ""
@@ -1147,7 +1146,7 @@ msgstr ""
msgid "This stock item has already been allocated to this build output"
msgstr ""
-#: build/serializers.py:708 order/serializers.py:1298
+#: build/serializers.py:708 order/serializers.py:1300
msgid "Allocation items must be provided"
msgstr ""
@@ -1179,10 +1178,19 @@ msgstr ""
msgid "Allow allocation of substitute parts"
msgstr ""
-#: build/tasks.py:96
+#: build/tasks.py:100
msgid "Stock required for build order"
msgstr ""
+#: build/tasks.py:118
+msgid "Overdue Build Order"
+msgstr ""
+
+#: build/tasks.py:123
+#, python-brace-format
+msgid "Build order {bo} is now overdue"
+msgstr ""
+
#: build/templates/build/build_base.html:39
#: order/templates/order/order_base.html:28
#: order/templates/order/sales_order_base.html:38
@@ -1245,13 +1253,13 @@ msgid "Stock has not been fully allocated to this Build Order"
msgstr ""
#: build/templates/build/build_base.html:151
-#: build/templates/build/detail.html:131 order/models.py:922
+#: build/templates/build/detail.html:131 order/models.py:926
#: order/templates/order/order_base.html:162
#: order/templates/order/sales_order_base.html:164
#: report/templates/report/inventree_build_order_base.html:126
#: templates/js/translated/build.js:2550 templates/js/translated/order.js:1677
#: templates/js/translated/order.js:1987 templates/js/translated/order.js:2497
-#: templates/js/translated/order.js:3517 templates/js/translated/part.js:971
+#: templates/js/translated/order.js:3517 templates/js/translated/part.js:1015
msgid "Target Date"
msgstr ""
@@ -1278,13 +1286,14 @@ msgid "Completed"
msgstr ""
#: build/templates/build/build_base.html:176
-#: build/templates/build/detail.html:94 order/models.py:1100
-#: order/models.py:1185 order/models.py:1320
+#: build/templates/build/detail.html:94 order/models.py:1104
+#: order/models.py:1189 order/models.py:1324
#: order/templates/order/sales_order_base.html:9
#: order/templates/order/sales_order_base.html:28
#: report/templates/report/inventree_build_order_base.html:136
#: report/templates/report/inventree_so_report.html:77
#: stock/templates/stock/item_base.html:370
+#: templates/email/overdue_sales_order.html:15
#: templates/js/translated/order.js:2436
msgid "Sales Order"
msgstr ""
@@ -1320,7 +1329,7 @@ msgstr ""
msgid "Stock can be taken from any available location."
msgstr ""
-#: build/templates/build/detail.html:49 order/models.py:1034
+#: build/templates/build/detail.html:49 order/models.py:1038
#: templates/js/translated/order.js:1321 templates/js/translated/order.js:2029
msgid "Destination"
msgstr ""
@@ -1717,7 +1726,7 @@ msgstr ""
msgid "Copy category parameter templates when creating a part"
msgstr ""
-#: common/models.py:820 part/models.py:2372 report/models.py:157
+#: common/models.py:820 part/models.py:2360 report/models.py:157
#: templates/js/translated/table_filters.js:38
#: templates/js/translated/table_filters.js:444
msgid "Template"
@@ -1881,7 +1890,7 @@ msgid "Default page size for PDF reports"
msgstr ""
#: common/models.py:968
-msgid "Test Reports"
+msgid "Enable Test Reports"
msgstr ""
#: common/models.py:969
@@ -1889,568 +1898,576 @@ msgid "Enable generation of test reports"
msgstr ""
#: common/models.py:975
-msgid "Batch Code Template"
+msgid "Attach Test Reports"
msgstr ""
#: common/models.py:976
-msgid "Template for generating default batch codes for stock items"
-msgstr ""
-
-#: common/models.py:981
-msgid "Stock Expiry"
+msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item"
msgstr ""
#: common/models.py:982
-msgid "Enable stock expiry functionality"
+msgid "Batch Code Template"
+msgstr ""
+
+#: common/models.py:983
+msgid "Template for generating default batch codes for stock items"
msgstr ""
#: common/models.py:988
-msgid "Sell Expired Stock"
+msgid "Stock Expiry"
msgstr ""
#: common/models.py:989
-msgid "Allow sale of expired stock"
+msgid "Enable stock expiry functionality"
msgstr ""
#: common/models.py:995
-msgid "Stock Stale Time"
+msgid "Sell Expired Stock"
msgstr ""
#: common/models.py:996
-msgid "Number of days stock items are considered stale before expiring"
+msgid "Allow sale of expired stock"
msgstr ""
-#: common/models.py:998
-msgid "days"
+#: common/models.py:1002
+msgid "Stock Stale Time"
msgstr ""
#: common/models.py:1003
-msgid "Build Expired Stock"
+msgid "Number of days stock items are considered stale before expiring"
msgstr ""
-#: common/models.py:1004
-msgid "Allow building with expired stock"
+#: common/models.py:1005
+msgid "days"
msgstr ""
#: common/models.py:1010
-msgid "Stock Ownership Control"
+msgid "Build Expired Stock"
msgstr ""
#: common/models.py:1011
-msgid "Enable ownership control over stock locations and items"
+msgid "Allow building with expired stock"
msgstr ""
#: common/models.py:1017
-msgid "Build Order Reference Prefix"
+msgid "Stock Ownership Control"
msgstr ""
#: common/models.py:1018
-msgid "Prefix value for build order reference"
-msgstr ""
-
-#: common/models.py:1023
-msgid "Build Order Reference Regex"
+msgid "Enable ownership control over stock locations and items"
msgstr ""
#: common/models.py:1024
+msgid "Build Order Reference Prefix"
+msgstr ""
+
+#: common/models.py:1025
+msgid "Prefix value for build order reference"
+msgstr ""
+
+#: common/models.py:1030
+msgid "Build Order Reference Regex"
+msgstr ""
+
+#: common/models.py:1031
msgid "Regular expression pattern for matching build order reference"
msgstr ""
-#: common/models.py:1028
+#: common/models.py:1035
msgid "Sales Order Reference Prefix"
msgstr ""
-#: common/models.py:1029
+#: common/models.py:1036
msgid "Prefix value for sales order reference"
msgstr ""
-#: common/models.py:1034
+#: common/models.py:1041
msgid "Sales Order Default Shipment"
msgstr ""
-#: common/models.py:1035
+#: common/models.py:1042
msgid "Enable creation of default shipment with sales orders"
msgstr ""
-#: common/models.py:1041
+#: common/models.py:1048
msgid "Purchase Order Reference Prefix"
msgstr ""
-#: common/models.py:1042
+#: common/models.py:1049
msgid "Prefix value for purchase order reference"
msgstr ""
-#: common/models.py:1048
+#: common/models.py:1055
msgid "Enable password forgot"
msgstr ""
-#: common/models.py:1049
+#: common/models.py:1056
msgid "Enable password forgot function on the login pages"
msgstr ""
-#: common/models.py:1055
+#: common/models.py:1062
msgid "Enable registration"
msgstr ""
-#: common/models.py:1056
+#: common/models.py:1063
msgid "Enable self-registration for users on the login pages"
msgstr ""
-#: common/models.py:1062
+#: common/models.py:1069
msgid "Enable SSO"
msgstr ""
-#: common/models.py:1063
+#: common/models.py:1070
msgid "Enable SSO on the login pages"
msgstr ""
-#: common/models.py:1069
+#: common/models.py:1076
msgid "Email required"
msgstr ""
-#: common/models.py:1070
+#: common/models.py:1077
msgid "Require user to supply mail on signup"
msgstr ""
-#: common/models.py:1076
+#: common/models.py:1083
msgid "Auto-fill SSO users"
msgstr ""
-#: common/models.py:1077
+#: common/models.py:1084
msgid "Automatically fill out user-details from SSO account-data"
msgstr ""
-#: common/models.py:1083
+#: common/models.py:1090
msgid "Mail twice"
msgstr ""
-#: common/models.py:1084
+#: common/models.py:1091
msgid "On signup ask users twice for their mail"
msgstr ""
-#: common/models.py:1090
+#: common/models.py:1097
msgid "Password twice"
msgstr ""
-#: common/models.py:1091
+#: common/models.py:1098
msgid "On signup ask users twice for their password"
msgstr ""
-#: common/models.py:1097
+#: common/models.py:1104
msgid "Group on signup"
msgstr ""
-#: common/models.py:1098
+#: common/models.py:1105
msgid "Group to which new users are assigned on registration"
msgstr ""
-#: common/models.py:1104
+#: common/models.py:1111
msgid "Enforce MFA"
msgstr ""
-#: common/models.py:1105
+#: common/models.py:1112
msgid "Users must use multifactor security."
msgstr ""
-#: common/models.py:1111
+#: common/models.py:1118
msgid "Check plugins on startup"
msgstr ""
-#: common/models.py:1112
+#: common/models.py:1119
msgid "Check that all plugins are installed on startup - enable in container enviroments"
msgstr ""
-#: common/models.py:1120
+#: common/models.py:1127
msgid "Enable URL integration"
msgstr ""
-#: common/models.py:1121
+#: common/models.py:1128
msgid "Enable plugins to add URL routes"
msgstr ""
-#: common/models.py:1128
+#: common/models.py:1135
msgid "Enable navigation integration"
msgstr ""
-#: common/models.py:1129
+#: common/models.py:1136
msgid "Enable plugins to integrate into navigation"
msgstr ""
-#: common/models.py:1136
+#: common/models.py:1143
msgid "Enable app integration"
msgstr ""
-#: common/models.py:1137
+#: common/models.py:1144
msgid "Enable plugins to add apps"
msgstr ""
-#: common/models.py:1144
+#: common/models.py:1151
msgid "Enable schedule integration"
msgstr ""
-#: common/models.py:1145
+#: common/models.py:1152
msgid "Enable plugins to run scheduled tasks"
msgstr ""
-#: common/models.py:1152
+#: common/models.py:1159
msgid "Enable event integration"
msgstr ""
-#: common/models.py:1153
+#: common/models.py:1160
msgid "Enable plugins to respond to internal events"
msgstr ""
-#: common/models.py:1170 common/models.py:1492
+#: common/models.py:1177 common/models.py:1499
msgid "Settings key (must be unique - case insensitive"
msgstr ""
-#: common/models.py:1192
+#: common/models.py:1199
msgid "Show subscribed parts"
msgstr ""
-#: common/models.py:1193
+#: common/models.py:1200
msgid "Show subscribed parts on the homepage"
msgstr ""
-#: common/models.py:1199
+#: common/models.py:1206
msgid "Show subscribed categories"
msgstr ""
-#: common/models.py:1200
+#: common/models.py:1207
msgid "Show subscribed part categories on the homepage"
msgstr ""
-#: common/models.py:1206
+#: common/models.py:1213
msgid "Show latest parts"
msgstr ""
-#: common/models.py:1207
+#: common/models.py:1214
msgid "Show latest parts on the homepage"
msgstr ""
-#: common/models.py:1213
+#: common/models.py:1220
msgid "Recent Part Count"
msgstr ""
-#: common/models.py:1214
+#: common/models.py:1221
msgid "Number of recent parts to display on index page"
msgstr ""
-#: common/models.py:1220
+#: common/models.py:1227
msgid "Show unvalidated BOMs"
msgstr ""
-#: common/models.py:1221
+#: common/models.py:1228
msgid "Show BOMs that await validation on the homepage"
msgstr ""
-#: common/models.py:1227
+#: common/models.py:1234
msgid "Show recent stock changes"
msgstr ""
-#: common/models.py:1228
+#: common/models.py:1235
msgid "Show recently changed stock items on the homepage"
msgstr ""
-#: common/models.py:1234
+#: common/models.py:1241
msgid "Recent Stock Count"
msgstr ""
-#: common/models.py:1235
+#: common/models.py:1242
msgid "Number of recent stock items to display on index page"
msgstr ""
-#: common/models.py:1241
+#: common/models.py:1248
msgid "Show low stock"
msgstr ""
-#: common/models.py:1242
+#: common/models.py:1249
msgid "Show low stock items on the homepage"
msgstr ""
-#: common/models.py:1248
+#: common/models.py:1255
msgid "Show depleted stock"
msgstr ""
-#: common/models.py:1249
+#: common/models.py:1256
msgid "Show depleted stock items on the homepage"
msgstr ""
-#: common/models.py:1255
+#: common/models.py:1262
msgid "Show needed stock"
msgstr ""
-#: common/models.py:1256
+#: common/models.py:1263
msgid "Show stock items needed for builds on the homepage"
msgstr ""
-#: common/models.py:1262
+#: common/models.py:1269
msgid "Show expired stock"
msgstr ""
-#: common/models.py:1263
+#: common/models.py:1270
msgid "Show expired stock items on the homepage"
msgstr ""
-#: common/models.py:1269
+#: common/models.py:1276
msgid "Show stale stock"
msgstr ""
-#: common/models.py:1270
+#: common/models.py:1277
msgid "Show stale stock items on the homepage"
msgstr ""
-#: common/models.py:1276
+#: common/models.py:1283
msgid "Show pending builds"
msgstr ""
-#: common/models.py:1277
+#: common/models.py:1284
msgid "Show pending builds on the homepage"
msgstr ""
-#: common/models.py:1283
+#: common/models.py:1290
msgid "Show overdue builds"
msgstr ""
-#: common/models.py:1284
+#: common/models.py:1291
msgid "Show overdue builds on the homepage"
msgstr ""
-#: common/models.py:1290
+#: common/models.py:1297
msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:1291
+#: common/models.py:1298
msgid "Show outstanding POs on the homepage"
msgstr ""
-#: common/models.py:1297
+#: common/models.py:1304
msgid "Show overdue POs"
msgstr ""
-#: common/models.py:1298
+#: common/models.py:1305
msgid "Show overdue POs on the homepage"
msgstr ""
-#: common/models.py:1304
+#: common/models.py:1311
msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:1305
+#: common/models.py:1312
msgid "Show outstanding SOs on the homepage"
msgstr ""
-#: common/models.py:1311
+#: common/models.py:1318
msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:1312
+#: common/models.py:1319
msgid "Show overdue SOs on the homepage"
msgstr ""
-#: common/models.py:1317
+#: common/models.py:1324
msgid "Enable label printing"
msgstr ""
-#: common/models.py:1318
+#: common/models.py:1325
msgid "Enable label printing from the web interface"
msgstr ""
-#: common/models.py:1324
+#: common/models.py:1331
msgid "Inline label display"
msgstr ""
-#: common/models.py:1325
+#: common/models.py:1332
msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:1331
+#: common/models.py:1338
msgid "Inline report display"
msgstr ""
-#: common/models.py:1332
+#: common/models.py:1339
msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:1338
+#: common/models.py:1345
msgid "Search Parts"
msgstr ""
-#: common/models.py:1339
+#: common/models.py:1346
msgid "Display parts in search preview window"
msgstr ""
-#: common/models.py:1345
+#: common/models.py:1352
msgid "Seach Supplier Parts"
msgstr ""
-#: common/models.py:1346
+#: common/models.py:1353
msgid "Display supplier parts in search preview window"
msgstr ""
-#: common/models.py:1352
+#: common/models.py:1359
msgid "Search Manufacturer Parts"
msgstr ""
-#: common/models.py:1353
+#: common/models.py:1360
msgid "Display manufacturer parts in search preview window"
msgstr ""
-#: common/models.py:1359
+#: common/models.py:1366
msgid "Hide Inactive Parts"
msgstr ""
-#: common/models.py:1360
+#: common/models.py:1367
msgid "Excluded inactive parts from search preview window"
msgstr ""
-#: common/models.py:1366
+#: common/models.py:1373
msgid "Search Categories"
msgstr ""
-#: common/models.py:1367
+#: common/models.py:1374
msgid "Display part categories in search preview window"
msgstr ""
-#: common/models.py:1373
+#: common/models.py:1380
msgid "Search Stock"
msgstr ""
-#: common/models.py:1374
+#: common/models.py:1381
msgid "Display stock items in search preview window"
msgstr ""
-#: common/models.py:1380
+#: common/models.py:1387
msgid "Hide Unavailable Stock Items"
msgstr ""
-#: common/models.py:1381
+#: common/models.py:1388
msgid "Exclude stock items which are not available from the search preview window"
msgstr ""
-#: common/models.py:1387
+#: common/models.py:1394
msgid "Search Locations"
msgstr ""
-#: common/models.py:1388
+#: common/models.py:1395
msgid "Display stock locations in search preview window"
msgstr ""
-#: common/models.py:1394
+#: common/models.py:1401
msgid "Search Companies"
msgstr ""
-#: common/models.py:1395
+#: common/models.py:1402
msgid "Display companies in search preview window"
msgstr ""
-#: common/models.py:1401
+#: common/models.py:1408
msgid "Search Purchase Orders"
msgstr ""
-#: common/models.py:1402
+#: common/models.py:1409
msgid "Display purchase orders in search preview window"
msgstr ""
-#: common/models.py:1408
+#: common/models.py:1415
msgid "Exclude Inactive Purchase Orders"
msgstr ""
-#: common/models.py:1409
+#: common/models.py:1416
msgid "Exclude inactive purchase orders from search preview window"
msgstr ""
-#: common/models.py:1415
+#: common/models.py:1422
msgid "Search Sales Orders"
msgstr ""
-#: common/models.py:1416
+#: common/models.py:1423
msgid "Display sales orders in search preview window"
msgstr ""
-#: common/models.py:1422
+#: common/models.py:1429
msgid "Exclude Inactive Sales Orders"
msgstr ""
-#: common/models.py:1423
+#: common/models.py:1430
msgid "Exclude inactive sales orders from search preview window"
msgstr ""
-#: common/models.py:1429
+#: common/models.py:1436
msgid "Search Preview Results"
msgstr ""
-#: common/models.py:1430
+#: common/models.py:1437
msgid "Number of results to show in each section of the search preview window"
msgstr ""
-#: common/models.py:1436
+#: common/models.py:1443
msgid "Show Quantity in Forms"
msgstr ""
-#: common/models.py:1437
+#: common/models.py:1444
msgid "Display available part quantity in some forms"
msgstr ""
-#: common/models.py:1443
+#: common/models.py:1450
msgid "Escape Key Closes Forms"
msgstr ""
-#: common/models.py:1444
+#: common/models.py:1451
msgid "Use the escape key to close modal forms"
msgstr ""
-#: common/models.py:1450
+#: common/models.py:1457
msgid "Fixed Navbar"
msgstr ""
-#: common/models.py:1451
+#: common/models.py:1458
msgid "The navbar position is fixed to the top of the screen"
msgstr ""
-#: common/models.py:1457
+#: common/models.py:1464
msgid "Date Format"
msgstr ""
-#: common/models.py:1458
+#: common/models.py:1465
msgid "Preferred format for displaying dates"
msgstr ""
-#: common/models.py:1472 part/templates/part/detail.html:39
+#: common/models.py:1479 part/templates/part/detail.html:39
msgid "Part Scheduling"
msgstr ""
-#: common/models.py:1473
+#: common/models.py:1480
msgid "Display part scheduling information"
msgstr ""
-#: common/models.py:1537 company/forms.py:37
+#: common/models.py:1544 company/forms.py:37
msgid "Price break quantity"
msgstr ""
-#: common/models.py:1544 company/serializers.py:288
-#: company/templates/company/supplier_part.html:263 order/models.py:949
-#: templates/js/translated/part.js:998 templates/js/translated/part.js:1974
+#: common/models.py:1551 company/serializers.py:290
+#: company/templates/company/supplier_part.html:263 order/models.py:953
+#: templates/js/translated/part.js:1042 templates/js/translated/part.js:2070
msgid "Price"
msgstr ""
-#: common/models.py:1545
+#: common/models.py:1552
msgid "Unit price at specified quantity"
msgstr ""
-#: common/models.py:1705 common/models.py:1883
+#: common/models.py:1712 common/models.py:1890
msgid "Endpoint"
msgstr ""
-#: common/models.py:1706
+#: common/models.py:1713
msgid "Endpoint at which this webhook is received"
msgstr ""
-#: common/models.py:1715
+#: common/models.py:1722
msgid "Name for this webhook"
msgstr ""
-#: common/models.py:1720 part/models.py:911 plugin/models.py:99
+#: common/models.py:1727 part/models.py:911 plugin/models.py:99
#: templates/js/translated/table_filters.js:34
#: templates/js/translated/table_filters.js:96
#: templates/js/translated/table_filters.js:308
@@ -2458,79 +2475,79 @@ msgstr ""
msgid "Active"
msgstr ""
-#: common/models.py:1721
+#: common/models.py:1728
msgid "Is this webhook active"
msgstr ""
-#: common/models.py:1735
+#: common/models.py:1742
msgid "Token"
msgstr ""
-#: common/models.py:1736
+#: common/models.py:1743
msgid "Token for access"
msgstr ""
-#: common/models.py:1743
+#: common/models.py:1750
msgid "Secret"
msgstr ""
-#: common/models.py:1744
+#: common/models.py:1751
msgid "Shared secret for HMAC"
msgstr ""
-#: common/models.py:1850
+#: common/models.py:1857
msgid "Message ID"
msgstr ""
-#: common/models.py:1851
+#: common/models.py:1858
msgid "Unique identifier for this message"
msgstr ""
-#: common/models.py:1859
+#: common/models.py:1866
msgid "Host"
msgstr ""
-#: common/models.py:1860
+#: common/models.py:1867
msgid "Host from which this message was received"
msgstr ""
-#: common/models.py:1867
+#: common/models.py:1874
msgid "Header"
msgstr ""
-#: common/models.py:1868
+#: common/models.py:1875
msgid "Header of this message"
msgstr ""
-#: common/models.py:1874
+#: common/models.py:1881
msgid "Body"
msgstr ""
-#: common/models.py:1875
+#: common/models.py:1882
msgid "Body of this message"
msgstr ""
-#: common/models.py:1884
+#: common/models.py:1891
msgid "Endpoint on which this message was received"
msgstr ""
-#: common/models.py:1889
+#: common/models.py:1896
msgid "Worked on"
msgstr ""
-#: common/models.py:1890
+#: common/models.py:1897
msgid "Was the work on this message finished?"
msgstr ""
#: common/views.py:87 order/templates/order/purchase_order_detail.html:23
-#: order/views.py:102 part/views.py:193
+#: order/views.py:102 part/views.py:116
#: templates/patterns/wizard/upload.html:37
msgid "Upload File"
msgstr ""
#: common/views.py:88 order/views.py:103
#: part/templates/part/import_wizard/ajax_match_fields.html:45
-#: part/views.py:194 templates/patterns/wizard/match_fields.html:51
+#: part/views.py:117 templates/patterns/wizard/match_fields.html:51
msgid "Match Fields"
msgstr ""
@@ -2546,19 +2563,19 @@ msgstr ""
msgid "Parts imported"
msgstr ""
-#: common/views.py:507 order/templates/order/order_wizard/match_parts.html:19
+#: common/views.py:511 order/templates/order/order_wizard/match_parts.html:19
#: part/templates/part/import_wizard/match_references.html:19
#: templates/patterns/wizard/match_fields.html:26
#: templates/patterns/wizard/upload.html:35
msgid "Previous Step"
msgstr ""
-#: company/forms.py:16 part/forms.py:21
+#: company/forms.py:16 part/forms.py:18
#: templates/InvenTree/settings/mixins/urls.html:14
msgid "URL"
msgstr ""
-#: company/forms.py:17 part/forms.py:22
+#: company/forms.py:17 part/forms.py:19
msgid "Image URL"
msgstr ""
@@ -2645,9 +2662,9 @@ msgstr ""
msgid "Does this company manufacture parts?"
msgstr ""
-#: company/models.py:144 company/serializers.py:294
-#: company/templates/company/company_base.html:106 part/serializers.py:137
-#: part/serializers.py:168 stock/serializers.py:162
+#: company/models.py:144 company/serializers.py:296
+#: company/templates/company/company_base.html:106 part/serializers.py:139
+#: part/serializers.py:170 stock/serializers.py:162
msgid "Currency"
msgstr ""
@@ -2686,7 +2703,7 @@ msgstr ""
#: templates/js/translated/company.js:487
#: templates/js/translated/company.js:648
#: templates/js/translated/company.js:935 templates/js/translated/order.js:1907
-#: templates/js/translated/part.js:246 templates/js/translated/part.js:956
+#: templates/js/translated/part.js:246 templates/js/translated/part.js:1000
msgid "MPN"
msgstr ""
@@ -2715,8 +2732,8 @@ msgstr ""
#: company/models.py:361
#: report/templates/report/inventree_test_report_base.html:95
-#: stock/models.py:2080 templates/js/translated/company.js:540
-#: templates/js/translated/company.js:763 templates/js/translated/part.js:776
+#: stock/models.py:2084 templates/js/translated/company.js:540
+#: templates/js/translated/company.js:763 templates/js/translated/part.js:820
#: templates/js/translated/stock.js:1294
msgid "Value"
msgstr ""
@@ -2725,10 +2742,10 @@ msgstr ""
msgid "Parameter value"
msgstr ""
-#: company/models.py:368 part/models.py:878 part/models.py:2339
+#: company/models.py:368 part/models.py:878 part/models.py:2327
#: part/templates/part/part_base.html:280
-#: templates/InvenTree/settings/settings.html:332
-#: templates/js/translated/company.js:769 templates/js/translated/part.js:782
+#: templates/InvenTree/settings/settings.html:351
+#: templates/js/translated/company.js:769 templates/js/translated/part.js:826
msgid "Units"
msgstr ""
@@ -2741,13 +2758,14 @@ msgid "Linked manufacturer part must reference the same base part"
msgstr ""
#: company/models.py:487 company/templates/company/company_base.html:81
-#: company/templates/company/supplier_part.html:87 order/models.py:303
+#: company/templates/company/supplier_part.html:87 order/models.py:307
#: order/templates/order/order_base.html:112 part/bom.py:237 part/bom.py:265
#: stock/templates/stock/item_base.html:229
+#: templates/email/overdue_purchase_order.html:16
#: templates/js/translated/company.js:254
#: templates/js/translated/company.js:393
#: templates/js/translated/company.js:891 templates/js/translated/order.js:1643
-#: templates/js/translated/part.js:216 templates/js/translated/part.js:924
+#: templates/js/translated/part.js:216 templates/js/translated/part.js:968
#: templates/js/translated/table_filters.js:415
msgid "Supplier"
msgstr ""
@@ -2759,7 +2777,7 @@ msgstr ""
#: company/models.py:493 company/templates/company/supplier_part.html:97
#: part/bom.py:238 part/bom.py:266 templates/js/translated/company.js:253
#: templates/js/translated/order.js:1894 templates/js/translated/part.js:227
-#: templates/js/translated/part.js:942
+#: templates/js/translated/part.js:986
msgid "SKU"
msgstr ""
@@ -2780,17 +2798,17 @@ msgid "Supplier part description"
msgstr ""
#: company/models.py:518 company/templates/company/supplier_part.html:125
-#: part/models.py:2571 part/templates/part/upload_bom.html:59
+#: part/models.py:2561 part/templates/part/upload_bom.html:59
#: report/templates/report/inventree_po_report.html:92
#: report/templates/report/inventree_so_report.html:93 stock/serializers.py:387
msgid "Note"
msgstr ""
-#: company/models.py:522 part/models.py:1688
+#: company/models.py:522 part/models.py:1683
msgid "base cost"
msgstr ""
-#: company/models.py:522 part/models.py:1688
+#: company/models.py:522 part/models.py:1683
msgid "Minimum charge (e.g. stocking fee)"
msgstr ""
@@ -2804,7 +2822,7 @@ msgstr ""
msgid "Part packaging"
msgstr ""
-#: company/models.py:526 part/models.py:1690
+#: company/models.py:526 part/models.py:1685
msgid "multiple"
msgstr ""
@@ -2867,10 +2885,11 @@ msgstr ""
msgid "Download image from URL"
msgstr ""
-#: company/templates/company/company_base.html:86 order/models.py:649
+#: company/templates/company/company_base.html:86 order/models.py:653
#: order/templates/order/sales_order_base.html:116 stock/models.py:627
-#: stock/models.py:628 stock/serializers.py:758
+#: stock/models.py:628 stock/serializers.py:745
#: stock/templates/stock/item_base.html:401
+#: templates/email/overdue_sales_order.html:16
#: templates/js/translated/company.js:385 templates/js/translated/order.js:2458
#: templates/js/translated/stock.js:2431
#: templates/js/translated/table_filters.js:419
@@ -3000,7 +3019,7 @@ msgid "Supplier List"
msgstr ""
#: company/templates/company/manufacturer_part.html:15 company/views.py:45
-#: part/templates/part/prices.html:170 templates/InvenTree/search.html:179
+#: part/templates/part/prices.html:172 templates/InvenTree/search.html:179
#: templates/navbar.html:49
msgid "Manufacturers"
msgstr ""
@@ -3033,7 +3052,7 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:119
#: company/templates/company/supplier_part.html:15 company/views.py:39
-#: part/templates/part/part_sidebar.html:35 part/templates/part/prices.html:166
+#: part/templates/part/part_sidebar.html:35 part/templates/part/prices.html:168
#: templates/InvenTree/search.html:189 templates/navbar.html:48
msgid "Suppliers"
msgstr ""
@@ -3145,7 +3164,7 @@ msgstr ""
#: company/templates/company/supplier_part.html:191
#: company/templates/company/supplier_part.html:305
-#: part/templates/part/prices.html:274 templates/js/translated/part.js:2046
+#: part/templates/part/prices.html:276 templates/js/translated/part.js:2142
msgid "Add Price Break"
msgstr ""
@@ -3154,12 +3173,12 @@ msgid "No price break information found"
msgstr ""
#: company/templates/company/supplier_part.html:231
-#: templates/js/translated/part.js:2056
+#: templates/js/translated/part.js:2152
msgid "Delete Price Break"
msgstr ""
#: company/templates/company/supplier_part.html:245
-#: templates/js/translated/part.js:2070
+#: templates/js/translated/part.js:2166
msgid "Edit Price Break"
msgstr ""
@@ -3181,8 +3200,8 @@ msgstr ""
#: stock/templates/stock/stock_app_base.html:10
#: templates/InvenTree/search.html:151
#: templates/InvenTree/settings/sidebar.html:43
-#: templates/js/translated/bom.js:554 templates/js/translated/part.js:678
-#: templates/js/translated/part.js:1226 templates/js/translated/part.js:1387
+#: templates/js/translated/bom.js:554 templates/js/translated/part.js:722
+#: templates/js/translated/part.js:1270 templates/js/translated/part.js:1431
#: templates/js/translated/stock.js:904 templates/js/translated/stock.js:1687
#: templates/navbar.html:31
msgid "Stock"
@@ -3239,20 +3258,20 @@ msgstr ""
msgid "New Company"
msgstr ""
-#: company/views.py:112 part/views.py:578
+#: company/views.py:112 part/views.py:501
msgid "Download Image"
msgstr ""
-#: company/views.py:139 part/views.py:608
+#: company/views.py:139 part/views.py:531
msgid "Image size exceeds maximum allowable size for download"
msgstr ""
-#: company/views.py:146 part/views.py:615
+#: company/views.py:146 part/views.py:538
#, python-brace-format
msgid "Invalid response: {code}"
msgstr ""
-#: company/views.py:155 part/views.py:624
+#: company/views.py:155 part/views.py:547
msgid "Supplied URL is not a valid image file"
msgstr ""
@@ -3325,7 +3344,7 @@ msgstr ""
msgid "Order description"
msgstr ""
-#: order/models.py:135 order/models.py:1236
+#: order/models.py:135 order/models.py:1240
msgid "Link to external page"
msgstr ""
@@ -3341,293 +3360,294 @@ msgstr ""
msgid "Order notes"
msgstr ""
-#: order/models.py:289 order/models.py:639
+#: order/models.py:293 order/models.py:643
msgid "Order reference"
msgstr ""
-#: order/models.py:294 order/models.py:654
+#: order/models.py:298 order/models.py:658
msgid "Purchase order status"
msgstr ""
-#: order/models.py:304
+#: order/models.py:308
msgid "Company from which the items are being ordered"
msgstr ""
-#: order/models.py:307 order/templates/order/order_base.html:124
+#: order/models.py:311 order/templates/order/order_base.html:124
#: templates/js/translated/order.js:1652
msgid "Supplier Reference"
msgstr ""
-#: order/models.py:307
+#: order/models.py:311
msgid "Supplier order reference code"
msgstr ""
-#: order/models.py:314
+#: order/models.py:318
msgid "received by"
msgstr ""
-#: order/models.py:319
+#: order/models.py:323
msgid "Issue Date"
msgstr ""
-#: order/models.py:320
+#: order/models.py:324
msgid "Date order was issued"
msgstr ""
-#: order/models.py:325
+#: order/models.py:329
msgid "Target Delivery Date"
msgstr ""
-#: order/models.py:326
+#: order/models.py:330
msgid "Expected date for order delivery. Order will be overdue after this date."
msgstr ""
-#: order/models.py:332
+#: order/models.py:336
msgid "Date order was completed"
msgstr ""
-#: order/models.py:368
+#: order/models.py:372
msgid "Part supplier must match PO supplier"
msgstr ""
-#: order/models.py:512
+#: order/models.py:516
msgid "Quantity must be a positive number"
msgstr ""
-#: order/models.py:650
+#: order/models.py:654
msgid "Company to which the items are being sold"
msgstr ""
-#: order/models.py:656
+#: order/models.py:660
msgid "Customer Reference "
msgstr ""
-#: order/models.py:656
+#: order/models.py:660
msgid "Customer order reference code"
msgstr ""
-#: order/models.py:661
+#: order/models.py:665
msgid "Target date for order completion. Order will be overdue after this date."
msgstr ""
-#: order/models.py:664 order/models.py:1190
+#: order/models.py:668 order/models.py:1194
#: templates/js/translated/order.js:2505 templates/js/translated/order.js:2656
msgid "Shipment Date"
msgstr ""
-#: order/models.py:671
+#: order/models.py:675
msgid "shipped by"
msgstr ""
-#: order/models.py:726
+#: order/models.py:730
msgid "Order cannot be completed as no parts have been assigned"
msgstr ""
-#: order/models.py:730
+#: order/models.py:734
msgid "Only a pending order can be marked as complete"
msgstr ""
-#: order/models.py:733
+#: order/models.py:737
msgid "Order cannot be completed as there are incomplete shipments"
msgstr ""
-#: order/models.py:736
+#: order/models.py:740
msgid "Order cannot be completed as there are incomplete line items"
msgstr ""
-#: order/models.py:910
+#: order/models.py:914
msgid "Item quantity"
msgstr ""
-#: order/models.py:916
+#: order/models.py:920
msgid "Line item reference"
msgstr ""
-#: order/models.py:918
+#: order/models.py:922
msgid "Line item notes"
msgstr ""
-#: order/models.py:923
+#: order/models.py:927
msgid "Target shipping date for this line item"
msgstr ""
-#: order/models.py:941
+#: order/models.py:945
msgid "Context"
msgstr ""
-#: order/models.py:942
+#: order/models.py:946
msgid "Additional context for this line"
msgstr ""
-#: order/models.py:950
+#: order/models.py:954
msgid "Unit price"
msgstr ""
-#: order/models.py:980
+#: order/models.py:984
msgid "Supplier part must match supplier"
msgstr ""
-#: order/models.py:988
+#: order/models.py:992
msgid "deleted"
msgstr ""
-#: order/models.py:994 order/models.py:1074 order/models.py:1099
-#: order/models.py:1184 order/models.py:1320
+#: order/models.py:998 order/models.py:1078 order/models.py:1103
+#: order/models.py:1188 order/models.py:1324
#: templates/js/translated/order.js:3112
msgid "Order"
msgstr ""
-#: order/models.py:995 order/models.py:1074
+#: order/models.py:999 order/models.py:1078
#: order/templates/order/order_base.html:9
#: order/templates/order/order_base.html:18
#: report/templates/report/inventree_po_report.html:76
#: stock/templates/stock/item_base.html:184
+#: templates/email/overdue_purchase_order.html:15
#: templates/js/translated/order.js:885 templates/js/translated/order.js:1621
-#: templates/js/translated/part.js:899 templates/js/translated/stock.js:1846
+#: templates/js/translated/part.js:943 templates/js/translated/stock.js:1846
#: templates/js/translated/stock.js:2412
msgid "Purchase Order"
msgstr ""
-#: order/models.py:1013
+#: order/models.py:1017
msgid "Supplier part"
msgstr ""
-#: order/models.py:1020 order/templates/order/order_base.html:169
+#: order/models.py:1024 order/templates/order/order_base.html:169
#: templates/js/translated/order.js:1318 templates/js/translated/order.js:2009
-#: templates/js/translated/part.js:993 templates/js/translated/part.js:1020
+#: templates/js/translated/part.js:1037 templates/js/translated/part.js:1064
#: templates/js/translated/table_filters.js:330
msgid "Received"
msgstr ""
-#: order/models.py:1021
+#: order/models.py:1025
msgid "Number of items received"
msgstr ""
-#: order/models.py:1028 part/templates/part/prices.html:179 stock/models.py:722
+#: order/models.py:1032 part/templates/part/prices.html:181 stock/models.py:722
#: stock/serializers.py:153 stock/templates/stock/item_base.html:191
#: templates/js/translated/stock.js:1900
msgid "Purchase Price"
msgstr ""
-#: order/models.py:1029
+#: order/models.py:1033
msgid "Unit purchase price"
msgstr ""
-#: order/models.py:1037
+#: order/models.py:1041
msgid "Where does the Purchaser want this item to be stored?"
msgstr ""
-#: order/models.py:1109 part/templates/part/part_pricing.html:112
-#: part/templates/part/prices.html:119 part/templates/part/prices.html:288
+#: order/models.py:1113 part/templates/part/part_pricing.html:115
+#: part/templates/part/prices.html:121 part/templates/part/prices.html:290
msgid "Sale Price"
msgstr ""
-#: order/models.py:1110
+#: order/models.py:1114
msgid "Unit sale price"
msgstr ""
-#: order/models.py:1115
+#: order/models.py:1119
msgid "Shipped quantity"
msgstr ""
-#: order/models.py:1191
+#: order/models.py:1195
msgid "Date of shipment"
msgstr ""
-#: order/models.py:1198
+#: order/models.py:1202
msgid "Checked By"
msgstr ""
-#: order/models.py:1199
+#: order/models.py:1203
msgid "User who checked this shipment"
msgstr ""
-#: order/models.py:1207
+#: order/models.py:1211
msgid "Shipment number"
msgstr ""
-#: order/models.py:1214
+#: order/models.py:1218
msgid "Shipment notes"
msgstr ""
-#: order/models.py:1221
+#: order/models.py:1225
msgid "Tracking Number"
msgstr ""
-#: order/models.py:1222
+#: order/models.py:1226
msgid "Shipment tracking information"
msgstr ""
-#: order/models.py:1229
+#: order/models.py:1233
msgid "Invoice Number"
msgstr ""
-#: order/models.py:1230
+#: order/models.py:1234
msgid "Reference number for associated invoice"
msgstr ""
-#: order/models.py:1248
+#: order/models.py:1252
msgid "Shipment has already been sent"
msgstr ""
-#: order/models.py:1251
+#: order/models.py:1255
msgid "Shipment has no allocated stock items"
msgstr ""
-#: order/models.py:1354 order/models.py:1356
+#: order/models.py:1358 order/models.py:1360
msgid "Stock item has not been assigned"
msgstr ""
-#: order/models.py:1360
+#: order/models.py:1364
msgid "Cannot allocate stock item to a line with a different part"
msgstr ""
-#: order/models.py:1362
+#: order/models.py:1366
msgid "Cannot allocate stock to a line without a part"
msgstr ""
-#: order/models.py:1365
+#: order/models.py:1369
msgid "Allocation quantity cannot exceed stock quantity"
msgstr ""
-#: order/models.py:1369
+#: order/models.py:1373
msgid "StockItem is over-allocated"
msgstr ""
-#: order/models.py:1375 order/serializers.py:1045
+#: order/models.py:1379 order/serializers.py:1047
msgid "Quantity must be 1 for serialized stock item"
msgstr ""
-#: order/models.py:1378
+#: order/models.py:1382
msgid "Sales order does not match shipment"
msgstr ""
-#: order/models.py:1379
+#: order/models.py:1383
msgid "Shipment does not match sales order"
msgstr ""
-#: order/models.py:1387
+#: order/models.py:1391
msgid "Line"
msgstr ""
-#: order/models.py:1395 order/serializers.py:1149 order/serializers.py:1273
+#: order/models.py:1399 order/serializers.py:1151 order/serializers.py:1275
#: templates/js/translated/model_renderers.js:301
msgid "Shipment"
msgstr ""
-#: order/models.py:1396
+#: order/models.py:1400
msgid "Sales order shipment reference"
msgstr ""
-#: order/models.py:1408 templates/InvenTree/notifications/notifications.html:70
+#: order/models.py:1412 templates/InvenTree/notifications/notifications.html:70
msgid "Item"
msgstr ""
-#: order/models.py:1409
+#: order/models.py:1413
msgid "Select stock item to allocate"
msgstr ""
-#: order/models.py:1412
+#: order/models.py:1416
msgid "Enter stock allocation quantity"
msgstr ""
@@ -3663,7 +3683,7 @@ msgstr ""
msgid "Purchase order must match supplier"
msgstr ""
-#: order/serializers.py:406 order/serializers.py:1117
+#: order/serializers.py:406 order/serializers.py:1119
msgid "Line Item"
msgstr ""
@@ -3711,42 +3731,60 @@ msgstr ""
msgid "Supplied barcode values must be unique"
msgstr ""
-#: order/serializers.py:866
+#: order/serializers.py:868
msgid "Sale price currency"
msgstr ""
-#: order/serializers.py:947
+#: order/serializers.py:949
msgid "No shipment details provided"
msgstr ""
-#: order/serializers.py:1006 order/serializers.py:1126
+#: order/serializers.py:1008 order/serializers.py:1128
msgid "Line item is not associated with this order"
msgstr ""
-#: order/serializers.py:1028
+#: order/serializers.py:1030
msgid "Quantity must be positive"
msgstr ""
-#: order/serializers.py:1139
+#: order/serializers.py:1141
msgid "Enter serial numbers to allocate"
msgstr ""
-#: order/serializers.py:1161 order/serializers.py:1281
+#: order/serializers.py:1163 order/serializers.py:1283
msgid "Shipment has already been shipped"
msgstr ""
-#: order/serializers.py:1164 order/serializers.py:1284
+#: order/serializers.py:1166 order/serializers.py:1286
msgid "Shipment is not associated with this order"
msgstr ""
-#: order/serializers.py:1214
+#: order/serializers.py:1216
msgid "No match found for the following serial numbers"
msgstr ""
-#: order/serializers.py:1224
+#: order/serializers.py:1226
msgid "The following serial numbers are already allocated"
msgstr ""
+#: order/tasks.py:26
+msgid "Overdue Purchase Order"
+msgstr ""
+
+#: order/tasks.py:31
+#, python-brace-format
+msgid "Purchase order {po} is now overdue"
+msgstr ""
+
+#: order/tasks.py:88
+msgid "Overdue Sales Order"
+msgstr ""
+
+#: order/tasks.py:93
+#, python-brace-format
+msgid "Sales order {so} is now overdue"
+msgstr ""
+
#: order/templates/order/order_base.html:33
msgid "Print purchase order report"
msgstr ""
@@ -4022,47 +4060,47 @@ msgstr ""
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr ""
-#: part/api.py:474
+#: part/api.py:481
msgid "Incoming Purchase Order"
msgstr ""
-#: part/api.py:494
+#: part/api.py:501
msgid "Outgoing Sales Order"
msgstr ""
-#: part/api.py:512
+#: part/api.py:519
msgid "Stock produced by Build Order"
msgstr ""
-#: part/api.py:544
+#: part/api.py:551
msgid "Stock required for Build Order"
msgstr ""
-#: part/api.py:630
+#: part/api.py:637
msgid "Valid"
msgstr ""
-#: part/api.py:631
+#: part/api.py:638
msgid "Validate entire Bill of Materials"
msgstr ""
-#: part/api.py:637
+#: part/api.py:644
msgid "This option must be selected"
msgstr ""
-#: part/api.py:1003
+#: part/api.py:1010
msgid "Must be greater than zero"
msgstr ""
-#: part/api.py:1007
+#: part/api.py:1014
msgid "Must be a valid quantity"
msgstr ""
-#: part/api.py:1022
+#: part/api.py:1029
msgid "Specify location for initial part stock"
msgstr ""
-#: part/api.py:1053 part/api.py:1057 part/api.py:1072 part/api.py:1076
+#: part/api.py:1060 part/api.py:1064 part/api.py:1079 part/api.py:1083
msgid "This field is required"
msgstr ""
@@ -4081,25 +4119,13 @@ msgid "Available Stock"
msgstr ""
#: part/bom.py:130 part/templates/part/part_base.html:207
-#: templates/js/translated/part.js:517 templates/js/translated/part.js:537
-#: templates/js/translated/part.js:1229 templates/js/translated/part.js:1401
-#: templates/js/translated/part.js:1417
+#: templates/js/translated/part.js:561 templates/js/translated/part.js:581
+#: templates/js/translated/part.js:1273 templates/js/translated/part.js:1445
+#: templates/js/translated/part.js:1461
msgid "On Order"
msgstr ""
-#: part/forms.py:59
-msgid "Select part category"
-msgstr ""
-
-#: part/forms.py:67
-msgid "Add parameter template to same level categories"
-msgstr ""
-
-#: part/forms.py:71
-msgid "Add parameter template to all categories"
-msgstr ""
-
-#: part/forms.py:92
+#: part/forms.py:60
msgid "Input quantity for price calculation"
msgstr ""
@@ -4115,7 +4141,7 @@ msgstr ""
msgid "Default keywords for parts in this category"
msgstr ""
-#: part/models.py:115 part/models.py:2413 part/templates/part/category.html:15
+#: part/models.py:115 part/models.py:2403 part/templates/part/category.html:15
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr ""
@@ -4132,7 +4158,7 @@ msgstr ""
#: part/templates/part/category_sidebar.html:9
#: templates/InvenTree/index.html:85 templates/InvenTree/search.html:82
#: templates/InvenTree/settings/sidebar.html:39
-#: templates/js/translated/part.js:1768 templates/js/translated/search.js:144
+#: templates/js/translated/part.js:1864 templates/js/translated/search.js:144
#: templates/navbar.html:24 users/models.py:37
msgid "Parts"
msgstr ""
@@ -4162,7 +4188,7 @@ msgstr ""
msgid "Duplicate IPN not allowed in part settings"
msgstr ""
-#: part/models.py:738 part/models.py:2467
+#: part/models.py:738 part/models.py:2457
msgid "Part name"
msgstr ""
@@ -4195,12 +4221,11 @@ msgstr ""
msgid "Part keywords to improve visibility in search results"
msgstr ""
-#: part/models.py:776 part/models.py:2171 part/models.py:2412
+#: part/models.py:776 part/models.py:2159 part/models.py:2402
#: part/templates/part/part_base.html:257
-#: part/templates/part/set_category.html:15
#: templates/InvenTree/notifications/notifications.html:65
#: templates/InvenTree/settings/settings.html:231
-#: templates/js/translated/part.js:1369
+#: templates/js/translated/part.js:1413 templates/js/translated/part.js:1639
msgid "Category"
msgstr ""
@@ -4209,7 +4234,7 @@ msgid "Part category"
msgstr ""
#: part/models.py:782 part/templates/part/part_base.html:266
-#: templates/js/translated/part.js:666 templates/js/translated/part.js:1322
+#: templates/js/translated/part.js:710 templates/js/translated/part.js:1366
#: templates/js/translated/stock.js:1659
msgid "IPN"
msgstr ""
@@ -4223,7 +4248,7 @@ msgid "Part revision or version number"
msgstr ""
#: part/models.py:790 part/templates/part/part_base.html:273
-#: report/models.py:170 templates/js/translated/part.js:670
+#: report/models.py:170 templates/js/translated/part.js:714
msgid "Revision"
msgstr ""
@@ -4311,317 +4336,321 @@ msgstr ""
msgid "Creation User"
msgstr ""
-#: part/models.py:1690
+#: part/models.py:1685
msgid "Sell multiple"
msgstr ""
-#: part/models.py:2218
+#: part/models.py:2206
msgid "Test templates can only be created for trackable parts"
msgstr ""
-#: part/models.py:2235
+#: part/models.py:2223
msgid "Test with this name already exists for this part"
msgstr ""
-#: part/models.py:2255 templates/js/translated/part.js:1819
+#: part/models.py:2243 templates/js/translated/part.js:1915
#: templates/js/translated/stock.js:1274
msgid "Test Name"
msgstr ""
-#: part/models.py:2256
+#: part/models.py:2244
msgid "Enter a name for the test"
msgstr ""
-#: part/models.py:2261
+#: part/models.py:2249
msgid "Test Description"
msgstr ""
-#: part/models.py:2262
+#: part/models.py:2250
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:2267 templates/js/translated/part.js:1828
+#: part/models.py:2255 templates/js/translated/part.js:1924
#: templates/js/translated/table_filters.js:294
msgid "Required"
msgstr ""
-#: part/models.py:2268
+#: part/models.py:2256
msgid "Is this test required to pass?"
msgstr ""
-#: part/models.py:2273 templates/js/translated/part.js:1836
+#: part/models.py:2261 templates/js/translated/part.js:1932
msgid "Requires Value"
msgstr ""
-#: part/models.py:2274
+#: part/models.py:2262
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:2279 templates/js/translated/part.js:1843
+#: part/models.py:2267 templates/js/translated/part.js:1939
msgid "Requires Attachment"
msgstr ""
-#: part/models.py:2280
+#: part/models.py:2268
msgid "Does this test require a file attachment when adding a test result?"
msgstr ""
-#: part/models.py:2288
+#: part/models.py:2276
#, python-brace-format
msgid "Illegal character in template name ({c})"
msgstr ""
-#: part/models.py:2324
+#: part/models.py:2312
msgid "Parameter template name must be unique"
msgstr ""
-#: part/models.py:2332
+#: part/models.py:2320
msgid "Parameter Name"
msgstr ""
-#: part/models.py:2339
+#: part/models.py:2327
msgid "Parameter Units"
msgstr ""
-#: part/models.py:2370
+#: part/models.py:2358
msgid "Parent Part"
msgstr ""
-#: part/models.py:2372 part/models.py:2418 part/models.py:2419
+#: part/models.py:2360 part/models.py:2408 part/models.py:2409
#: templates/InvenTree/settings/settings.html:226
msgid "Parameter Template"
msgstr ""
-#: part/models.py:2374
+#: part/models.py:2362
msgid "Data"
msgstr ""
-#: part/models.py:2374
+#: part/models.py:2362
msgid "Parameter Value"
msgstr ""
-#: part/models.py:2423 templates/InvenTree/settings/settings.html:235
+#: part/models.py:2413 templates/InvenTree/settings/settings.html:235
msgid "Default Value"
msgstr ""
-#: part/models.py:2424
+#: part/models.py:2414
msgid "Default Parameter Value"
msgstr ""
-#: part/models.py:2459
+#: part/models.py:2449
msgid "Part ID or part name"
msgstr ""
-#: part/models.py:2462 templates/js/translated/model_renderers.js:200
+#: part/models.py:2452 templates/js/translated/model_renderers.js:200
msgid "Part ID"
msgstr ""
-#: part/models.py:2463
+#: part/models.py:2453
msgid "Unique part ID value"
msgstr ""
-#: part/models.py:2466
+#: part/models.py:2456
msgid "Part Name"
msgstr ""
-#: part/models.py:2470
+#: part/models.py:2460
msgid "Part IPN"
msgstr ""
-#: part/models.py:2471
+#: part/models.py:2461
msgid "Part IPN value"
msgstr ""
-#: part/models.py:2474
+#: part/models.py:2464
msgid "Level"
msgstr ""
-#: part/models.py:2475
+#: part/models.py:2465
msgid "BOM level"
msgstr ""
-#: part/models.py:2544
+#: part/models.py:2534
msgid "Select parent part"
msgstr ""
-#: part/models.py:2552
+#: part/models.py:2542
msgid "Sub part"
msgstr ""
-#: part/models.py:2553
+#: part/models.py:2543
msgid "Select part to be used in BOM"
msgstr ""
-#: part/models.py:2559
+#: part/models.py:2549
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:2561 part/templates/part/upload_bom.html:58
+#: part/models.py:2551 part/templates/part/upload_bom.html:58
#: templates/js/translated/bom.js:877 templates/js/translated/bom.js:971
#: templates/js/translated/table_filters.js:92
msgid "Optional"
msgstr ""
-#: part/models.py:2561
+#: part/models.py:2551
msgid "This BOM item is optional"
msgstr ""
-#: part/models.py:2564 part/templates/part/upload_bom.html:55
+#: part/models.py:2554 part/templates/part/upload_bom.html:55
msgid "Overage"
msgstr ""
-#: part/models.py:2565
+#: part/models.py:2555
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr ""
-#: part/models.py:2568
+#: part/models.py:2558
msgid "BOM item reference"
msgstr ""
-#: part/models.py:2571
+#: part/models.py:2561
msgid "BOM item notes"
msgstr ""
-#: part/models.py:2573
+#: part/models.py:2563
msgid "Checksum"
msgstr ""
-#: part/models.py:2573
+#: part/models.py:2563
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:2577 part/templates/part/upload_bom.html:57
+#: part/models.py:2567 part/templates/part/upload_bom.html:57
#: templates/js/translated/bom.js:988
#: templates/js/translated/table_filters.js:68
#: templates/js/translated/table_filters.js:88
msgid "Inherited"
msgstr ""
-#: part/models.py:2578
+#: part/models.py:2568
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr ""
-#: part/models.py:2583 part/templates/part/upload_bom.html:56
+#: part/models.py:2573 part/templates/part/upload_bom.html:56
#: templates/js/translated/bom.js:980
msgid "Allow Variants"
msgstr ""
-#: part/models.py:2584
+#: part/models.py:2574
msgid "Stock items for variant parts can be used for this BOM item"
msgstr ""
-#: part/models.py:2662 stock/models.py:460
+#: part/models.py:2652 stock/models.py:460
msgid "Quantity must be integer value for trackable parts"
msgstr ""
-#: part/models.py:2671 part/models.py:2673
+#: part/models.py:2661 part/models.py:2663
msgid "Sub part must be specified"
msgstr ""
-#: part/models.py:2778
+#: part/models.py:2768
msgid "BOM Item Substitute"
msgstr ""
-#: part/models.py:2799
+#: part/models.py:2789
msgid "Substitute part cannot be the same as the master part"
msgstr ""
-#: part/models.py:2812
+#: part/models.py:2802
msgid "Parent BOM item"
msgstr ""
-#: part/models.py:2820
+#: part/models.py:2810
msgid "Substitute part"
msgstr ""
-#: part/models.py:2831
+#: part/models.py:2825
msgid "Part 1"
msgstr ""
-#: part/models.py:2835
+#: part/models.py:2829
msgid "Part 2"
msgstr ""
-#: part/models.py:2835
+#: part/models.py:2829
msgid "Select Related Part"
msgstr ""
-#: part/models.py:2866
-msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique"
+#: part/models.py:2847
+msgid "Part relationship cannot be created between a part and itself"
msgstr ""
-#: part/serializers.py:138 part/serializers.py:169 stock/serializers.py:163
+#: part/models.py:2851
+msgid "Duplicate relationship already exists"
+msgstr ""
+
+#: part/serializers.py:140 part/serializers.py:171 stock/serializers.py:163
msgid "Purchase currency of this stock item"
msgstr ""
-#: part/serializers.py:794
+#: part/serializers.py:796
msgid "Select part to copy BOM from"
msgstr ""
-#: part/serializers.py:802
+#: part/serializers.py:804
msgid "Remove Existing Data"
msgstr ""
-#: part/serializers.py:803
+#: part/serializers.py:805
msgid "Remove existing BOM items before copying"
msgstr ""
-#: part/serializers.py:808
+#: part/serializers.py:810
msgid "Include Inherited"
msgstr ""
-#: part/serializers.py:809
+#: part/serializers.py:811
msgid "Include BOM items which are inherited from templated parts"
msgstr ""
-#: part/serializers.py:814
+#: part/serializers.py:816
msgid "Skip Invalid Rows"
msgstr ""
-#: part/serializers.py:815
+#: part/serializers.py:817
msgid "Enable this option to skip invalid rows"
msgstr ""
-#: part/serializers.py:820
+#: part/serializers.py:822
msgid "Copy Substitute Parts"
msgstr ""
-#: part/serializers.py:821
+#: part/serializers.py:823
msgid "Copy substitute parts when duplicate BOM items"
msgstr ""
-#: part/serializers.py:861
+#: part/serializers.py:863
msgid "Clear Existing BOM"
msgstr ""
-#: part/serializers.py:862
+#: part/serializers.py:864
msgid "Delete existing BOM items before uploading"
msgstr ""
-#: part/serializers.py:892
+#: part/serializers.py:894
msgid "No part column specified"
msgstr ""
-#: part/serializers.py:935
+#: part/serializers.py:937
msgid "Multiple matching parts found"
msgstr ""
-#: part/serializers.py:938
+#: part/serializers.py:940
msgid "No matching part found"
msgstr ""
-#: part/serializers.py:941
+#: part/serializers.py:943
msgid "Part is not designated as a component"
msgstr ""
-#: part/serializers.py:950
+#: part/serializers.py:952
msgid "Quantity not provided"
msgstr ""
-#: part/serializers.py:958
+#: part/serializers.py:960
msgid "Invalid quantity"
msgstr ""
-#: part/serializers.py:979
+#: part/serializers.py:981
msgid "At least one BOM item is required"
msgstr ""
@@ -5100,7 +5129,7 @@ msgstr ""
#: templates/js/translated/company.js:623
#: templates/js/translated/company.js:882
#: templates/js/translated/model_renderers.js:192
-#: templates/js/translated/part.js:581 templates/js/translated/part.js:658
+#: templates/js/translated/part.js:625 templates/js/translated/part.js:702
msgid "Inactive"
msgstr ""
@@ -5133,9 +5162,9 @@ msgstr ""
msgid "Can Build"
msgstr ""
-#: part/templates/part/part_base.html:238 templates/js/translated/part.js:520
-#: templates/js/translated/part.js:540 templates/js/translated/part.js:1233
-#: templates/js/translated/part.js:1405 templates/js/translated/part.js:1421
+#: part/templates/part/part_base.html:238 templates/js/translated/part.js:564
+#: templates/js/translated/part.js:584 templates/js/translated/part.js:1277
+#: templates/js/translated/part.js:1449 templates/js/translated/part.js:1465
msgid "Building"
msgstr ""
@@ -5152,7 +5181,7 @@ msgstr ""
msgid "Search for serial number"
msgstr ""
-#: part/templates/part/part_base.html:443 part/templates/part/prices.html:147
+#: part/templates/part/part_base.html:443 part/templates/part/prices.html:149
msgid "Calculate"
msgstr ""
@@ -5170,19 +5199,19 @@ msgstr ""
#: part/templates/part/part_pricing.html:26
#: part/templates/part/part_pricing.html:52
-#: part/templates/part/part_pricing.html:100
-#: part/templates/part/part_pricing.html:115 part/templates/part/prices.html:28
-#: part/templates/part/prices.html:55 part/templates/part/prices.html:106
-#: part/templates/part/prices.html:123
+#: part/templates/part/part_pricing.html:103
+#: part/templates/part/part_pricing.html:118 part/templates/part/prices.html:28
+#: part/templates/part/prices.html:55 part/templates/part/prices.html:108
+#: part/templates/part/prices.html:125
msgid "Unit Cost"
msgstr ""
#: part/templates/part/part_pricing.html:32
#: part/templates/part/part_pricing.html:58
-#: part/templates/part/part_pricing.html:104
-#: part/templates/part/part_pricing.html:119 part/templates/part/prices.html:35
-#: part/templates/part/prices.html:62 part/templates/part/prices.html:111
-#: part/templates/part/prices.html:128
+#: part/templates/part/part_pricing.html:107
+#: part/templates/part/part_pricing.html:122 part/templates/part/prices.html:35
+#: part/templates/part/prices.html:62 part/templates/part/prices.html:113
+#: part/templates/part/prices.html:130
msgid "Total Cost"
msgstr ""
@@ -5192,32 +5221,33 @@ msgid "No supplier pricing available"
msgstr ""
#: part/templates/part/part_pricing.html:48 part/templates/part/prices.html:52
-#: part/templates/part/prices.html:246
+#: part/templates/part/prices.html:248
msgid "BOM Pricing"
msgstr ""
-#: part/templates/part/part_pricing.html:65 part/templates/part/prices.html:72
+#: part/templates/part/part_pricing.html:66 part/templates/part/prices.html:72
msgid "Unit Purchase Price"
msgstr ""
-#: part/templates/part/part_pricing.html:71 part/templates/part/prices.html:79
+#: part/templates/part/part_pricing.html:72 part/templates/part/prices.html:79
msgid "Total Purchase Price"
msgstr ""
-#: part/templates/part/part_pricing.html:81 part/templates/part/prices.html:89
+#: part/templates/part/part_pricing.html:82 part/templates/part/prices.html:89
msgid "Note: BOM pricing is incomplete for this part"
msgstr ""
-#: part/templates/part/part_pricing.html:88 part/templates/part/prices.html:96
+#: part/templates/part/part_pricing.html:91 part/templates/part/prices.html:98
msgid "No BOM pricing available"
msgstr ""
-#: part/templates/part/part_pricing.html:97 part/templates/part/prices.html:105
+#: part/templates/part/part_pricing.html:100
+#: part/templates/part/prices.html:107
msgid "Internal Price"
msgstr ""
-#: part/templates/part/part_pricing.html:128
-#: part/templates/part/prices.html:137
+#: part/templates/part/part_pricing.html:131
+#: part/templates/part/prices.html:139
msgid "No pricing information is available for this part."
msgstr ""
@@ -5241,44 +5271,6 @@ msgstr ""
msgid "Select from existing images"
msgstr ""
-#: part/templates/part/partial_delete.html:9
-#, python-format
-msgid ""
-"Part '%(full_name)s' cannot be deleted as it is still marked as active.\n"
-"
Disable the \"Active\" part attribute and re-try.\n"
-" "
-msgstr ""
-
-#: part/templates/part/partial_delete.html:17
-#, python-format
-msgid "Are you sure you want to delete part '%(full_name)s'?"
-msgstr ""
-
-#: part/templates/part/partial_delete.html:22
-#, python-format
-msgid "This part is used in BOMs for %(count)s other parts. If you delete this part, the BOMs for the following parts will be updated"
-msgstr ""
-
-#: part/templates/part/partial_delete.html:32
-#, python-format
-msgid "There are %(count)s stock entries defined for this part. If you delete this part, the following stock entries will also be deleted:"
-msgstr ""
-
-#: part/templates/part/partial_delete.html:43
-#, python-format
-msgid "There are %(count)s manufacturers defined for this part. If you delete this part, the following manufacturer parts will also be deleted:"
-msgstr ""
-
-#: part/templates/part/partial_delete.html:54
-#, python-format
-msgid "There are %(count)s suppliers defined for this part. If you delete this part, the following supplier parts will also be deleted:"
-msgstr ""
-
-#: part/templates/part/partial_delete.html:67
-#, python-format
-msgid "There are %(count)s unique parts tracked for '%(full_name)s'. Deleting this part will permanently remove this tracking information."
-msgstr ""
-
#: part/templates/part/prices.html:19
msgid "Pricing ranges"
msgstr ""
@@ -5295,66 +5287,58 @@ msgstr ""
msgid "Show BOM cost"
msgstr ""
-#: part/templates/part/prices.html:120
+#: part/templates/part/prices.html:122
msgid "Show sale cost"
msgstr ""
-#: part/templates/part/prices.html:121
+#: part/templates/part/prices.html:123
msgid "Show sale price"
msgstr ""
-#: part/templates/part/prices.html:143
+#: part/templates/part/prices.html:145
msgid "Calculation parameters"
msgstr ""
-#: part/templates/part/prices.html:158 templates/js/translated/bom.js:957
+#: part/templates/part/prices.html:160 templates/js/translated/bom.js:957
msgid "Supplier Cost"
msgstr ""
-#: part/templates/part/prices.html:159 part/templates/part/prices.html:180
-#: part/templates/part/prices.html:204 part/templates/part/prices.html:234
-#: part/templates/part/prices.html:260 part/templates/part/prices.html:289
+#: part/templates/part/prices.html:161 part/templates/part/prices.html:182
+#: part/templates/part/prices.html:206 part/templates/part/prices.html:236
+#: part/templates/part/prices.html:262 part/templates/part/prices.html:291
msgid "Jump to overview"
msgstr ""
-#: part/templates/part/prices.html:184
+#: part/templates/part/prices.html:186
msgid "Stock Pricing"
msgstr ""
-#: part/templates/part/prices.html:193
+#: part/templates/part/prices.html:195
msgid "No stock pricing history is available for this part."
msgstr ""
-#: part/templates/part/prices.html:203
+#: part/templates/part/prices.html:205
msgid "Internal Cost"
msgstr ""
-#: part/templates/part/prices.html:218
+#: part/templates/part/prices.html:220
msgid "Add Internal Price Break"
msgstr ""
-#: part/templates/part/prices.html:233
+#: part/templates/part/prices.html:235
msgid "BOM Cost"
msgstr ""
-#: part/templates/part/prices.html:259
+#: part/templates/part/prices.html:261
msgid "Sale Cost"
msgstr ""
-#: part/templates/part/prices.html:300
+#: part/templates/part/prices.html:302
msgid "No sale pice history available for this part."
msgstr ""
-#: part/templates/part/set_category.html:9
-msgid "Set category for the following parts"
-msgstr ""
-
-#: part/templates/part/set_category.html:32
-msgid "Remove part"
-msgstr ""
-
-#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:543
-#: templates/js/translated/part.js:1221 templates/js/translated/part.js:1425
+#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:587
+#: templates/js/translated/part.js:1265 templates/js/translated/part.js:1469
msgid "No Stock"
msgstr ""
@@ -5417,71 +5401,42 @@ msgstr ""
msgid "{title} v{version}"
msgstr ""
-#: part/views.py:76
-msgid "Set Part Category"
-msgstr ""
-
-#: part/views.py:124
-#, python-brace-format
-msgid "Set category for {n} parts"
-msgstr ""
-
-#: part/views.py:195
+#: part/views.py:118
msgid "Match References"
msgstr ""
-#: part/views.py:496
+#: part/views.py:419
msgid "None"
msgstr ""
-#: part/views.py:558
+#: part/views.py:481
msgid "Part QR Code"
msgstr ""
-#: part/views.py:652
+#: part/views.py:575
msgid "Select Part Image"
msgstr ""
-#: part/views.py:678
+#: part/views.py:601
msgid "Updated part image"
msgstr ""
-#: part/views.py:681
+#: part/views.py:604
msgid "Part image not found"
msgstr ""
-#: part/views.py:770
-msgid "Confirm Part Deletion"
-msgstr ""
-
-#: part/views.py:778
-msgid "Part was deleted"
-msgstr ""
-
-#: part/views.py:787
+#: part/views.py:693
msgid "Part Pricing"
msgstr ""
-#: part/views.py:978
+#: part/views.py:884
msgid "Delete Part Category"
msgstr ""
-#: part/views.py:985
+#: part/views.py:891
msgid "Part category was deleted"
msgstr ""
-#: part/views.py:994
-msgid "Create Category Parameter Template"
-msgstr ""
-
-#: part/views.py:1094
-msgid "Edit Category Parameter Template"
-msgstr ""
-
-#: part/views.py:1155
-msgid "Delete Category Parameter Template"
-msgstr ""
-
#: plugin/apps.py:56
msgid "Your enviroment has an outdated git version. This prevents InvenTree from loading plugin details."
msgstr ""
@@ -5538,21 +5493,21 @@ msgstr ""
msgid "Label printing failed"
msgstr ""
-#: plugin/builtin/integration/core_notifications.py:28
+#: plugin/builtin/integration/core_notifications.py:29
msgid "InvenTree contributors"
msgstr ""
-#: plugin/builtin/integration/core_notifications.py:29
+#: plugin/builtin/integration/core_notifications.py:30
msgid "Integrated outgoing notificaton methods"
msgstr ""
-#: plugin/builtin/integration/core_notifications.py:33
-#: plugin/builtin/integration/core_notifications.py:52
-msgid "Enable email notifications"
-msgstr ""
-
#: plugin/builtin/integration/core_notifications.py:34
#: plugin/builtin/integration/core_notifications.py:53
+msgid "Enable email notifications"
+msgstr ""
+
+#: plugin/builtin/integration/core_notifications.py:35
+#: plugin/builtin/integration/core_notifications.py:54
msgid "Allow sending of emails for event notifications"
msgstr ""
@@ -5668,15 +5623,19 @@ msgstr ""
msgid "Either packagename of URL must be provided"
msgstr ""
-#: report/api.py:166
+#: report/api.py:179
msgid "No valid objects provided to template"
msgstr ""
-#: report/api.py:198 report/api.py:239
+#: report/api.py:215 report/api.py:256
#, python-brace-format
msgid "Template file '{template}' is missing or does not exist"
msgstr ""
+#: report/api.py:359
+msgid "Test report"
+msgstr ""
+
#: report/models.py:152
msgid "Template name"
msgstr ""
@@ -5788,12 +5747,12 @@ msgid "Test Results"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:93
-#: stock/models.py:2068
+#: stock/models.py:2072
msgid "Test"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:94
-#: stock/models.py:2074
+#: stock/models.py:2078
msgid "Result"
msgstr ""
@@ -5993,79 +5952,79 @@ msgstr ""
msgid "Serial numbers already exist: {exists}"
msgstr ""
-#: stock/models.py:1321
+#: stock/models.py:1325
msgid "Stock item has been assigned to a sales order"
msgstr ""
-#: stock/models.py:1324
+#: stock/models.py:1328
msgid "Stock item is installed in another item"
msgstr ""
-#: stock/models.py:1327
+#: stock/models.py:1331
msgid "Stock item contains other items"
msgstr ""
-#: stock/models.py:1330
+#: stock/models.py:1334
msgid "Stock item has been assigned to a customer"
msgstr ""
-#: stock/models.py:1333
+#: stock/models.py:1337
msgid "Stock item is currently in production"
msgstr ""
-#: stock/models.py:1336
+#: stock/models.py:1340
msgid "Serialized stock cannot be merged"
msgstr ""
-#: stock/models.py:1343 stock/serializers.py:908
+#: stock/models.py:1347 stock/serializers.py:895
msgid "Duplicate stock items"
msgstr ""
-#: stock/models.py:1347
+#: stock/models.py:1351
msgid "Stock items must refer to the same part"
msgstr ""
-#: stock/models.py:1351
+#: stock/models.py:1355
msgid "Stock items must refer to the same supplier part"
msgstr ""
-#: stock/models.py:1355
+#: stock/models.py:1359
msgid "Stock status codes must match"
msgstr ""
-#: stock/models.py:1524
+#: stock/models.py:1528
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:1986
+#: stock/models.py:1990
msgid "Entry notes"
msgstr ""
-#: stock/models.py:2044
+#: stock/models.py:2048
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:2050
+#: stock/models.py:2054
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:2069
+#: stock/models.py:2073
msgid "Test name"
msgstr ""
-#: stock/models.py:2075
+#: stock/models.py:2079
msgid "Test result"
msgstr ""
-#: stock/models.py:2081
+#: stock/models.py:2085
msgid "Test output value"
msgstr ""
-#: stock/models.py:2088
+#: stock/models.py:2092
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:2094
+#: stock/models.py:2098
msgid "Test notes"
msgstr ""
@@ -6086,7 +6045,7 @@ msgstr ""
msgid "Enter serial numbers for new items"
msgstr ""
-#: stock/serializers.py:309 stock/serializers.py:865 stock/serializers.py:1098
+#: stock/serializers.py:309 stock/serializers.py:852 stock/serializers.py:1085
msgid "Destination stock location"
msgstr ""
@@ -6126,63 +6085,63 @@ msgstr ""
msgid "Destination location for returned item"
msgstr ""
-#: stock/serializers.py:720
+#: stock/serializers.py:707
msgid "Part must be salable"
msgstr ""
-#: stock/serializers.py:724
+#: stock/serializers.py:711
msgid "Item is allocated to a sales order"
msgstr ""
-#: stock/serializers.py:728
+#: stock/serializers.py:715
msgid "Item is allocated to a build order"
msgstr ""
-#: stock/serializers.py:759
+#: stock/serializers.py:746
msgid "Customer to assign stock items"
msgstr ""
-#: stock/serializers.py:765
+#: stock/serializers.py:752
msgid "Selected company is not a customer"
msgstr ""
-#: stock/serializers.py:773
+#: stock/serializers.py:760
msgid "Stock assignment notes"
msgstr ""
-#: stock/serializers.py:783 stock/serializers.py:1014
+#: stock/serializers.py:770 stock/serializers.py:1001
msgid "A list of stock items must be provided"
msgstr ""
-#: stock/serializers.py:872
+#: stock/serializers.py:859
msgid "Stock merging notes"
msgstr ""
-#: stock/serializers.py:877
+#: stock/serializers.py:864
msgid "Allow mismatched suppliers"
msgstr ""
-#: stock/serializers.py:878
+#: stock/serializers.py:865
msgid "Allow stock items with different supplier parts to be merged"
msgstr ""
-#: stock/serializers.py:883
+#: stock/serializers.py:870
msgid "Allow mismatched status"
msgstr ""
-#: stock/serializers.py:884
+#: stock/serializers.py:871
msgid "Allow stock items with different status codes to be merged"
msgstr ""
-#: stock/serializers.py:894
+#: stock/serializers.py:881
msgid "At least two stock items must be provided"
msgstr ""
-#: stock/serializers.py:976
+#: stock/serializers.py:963
msgid "StockItem primary key value"
msgstr ""
-#: stock/serializers.py:1004
+#: stock/serializers.py:991
msgid "Stock transaction notes"
msgstr ""
@@ -6207,7 +6166,7 @@ msgstr ""
msgid "Test Report"
msgstr ""
-#: stock/templates/stock/item.html:94
+#: stock/templates/stock/item.html:94 stock/templates/stock/item.html:295
msgid "Delete Test Data"
msgstr ""
@@ -6223,7 +6182,11 @@ msgstr ""
msgid "Install Stock Item"
msgstr ""
-#: stock/templates/stock/item.html:292 templates/js/translated/stock.js:1455
+#: stock/templates/stock/item.html:290
+msgid "Delete all test results for this stock item"
+msgstr ""
+
+#: stock/templates/stock/item.html:331 templates/js/translated/stock.js:1455
msgid "Add Test Result"
msgstr ""
@@ -6551,7 +6514,7 @@ msgstr ""
msgid "Child Items"
msgstr ""
-#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:182
+#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:144
msgid "Convert Stock Item"
msgstr ""
@@ -6572,31 +6535,19 @@ msgstr ""
msgid "This action cannot be easily undone"
msgstr ""
-#: stock/views.py:113
+#: stock/views.py:111
msgid "Stock Location QR code"
msgstr ""
-#: stock/views.py:131
-msgid "Delete All Test Data"
-msgstr ""
-
-#: stock/views.py:149
-msgid "Confirm test data deletion"
-msgstr ""
-
-#: stock/views.py:150
-msgid "Check the confirmation box"
-msgstr ""
-
-#: stock/views.py:165
+#: stock/views.py:127
msgid "Stock Item QR Code"
msgstr ""
-#: stock/views.py:216
+#: stock/views.py:178
msgid "Delete Stock Location"
msgstr ""
-#: stock/views.py:229
+#: stock/views.py:191
msgid "Delete Stock Item"
msgstr ""
@@ -6731,7 +6682,7 @@ msgid "Notifications"
msgstr ""
#: templates/InvenTree/notifications/notifications.html:51
-#: templates/InvenTree/settings/settings.html:321
+#: templates/InvenTree/settings/settings.html:340
msgid "ID"
msgstr ""
@@ -7005,32 +6956,40 @@ msgid "No category parameter templates found"
msgstr ""
#: templates/InvenTree/settings/settings.html:238
-#: templates/InvenTree/settings/settings.html:337
+#: templates/InvenTree/settings/settings.html:356
msgid "Edit Template"
msgstr ""
#: templates/InvenTree/settings/settings.html:239
-#: templates/InvenTree/settings/settings.html:338
+#: templates/InvenTree/settings/settings.html:357
msgid "Delete Template"
msgstr ""
-#: templates/InvenTree/settings/settings.html:317
+#: templates/InvenTree/settings/settings.html:279
+msgid "Create Category Parameter Template"
+msgstr ""
+
+#: templates/InvenTree/settings/settings.html:324
+msgid "Delete Category Parameter Template"
+msgstr ""
+
+#: templates/InvenTree/settings/settings.html:336
msgid "No part parameter templates found"
msgstr ""
-#: templates/InvenTree/settings/settings.html:355
+#: templates/InvenTree/settings/settings.html:374
msgid "Create Part Parameter Template"
msgstr ""
-#: templates/InvenTree/settings/settings.html:373
+#: templates/InvenTree/settings/settings.html:392
msgid "Edit Part Parameter Template"
msgstr ""
-#: templates/InvenTree/settings/settings.html:387
+#: templates/InvenTree/settings/settings.html:406
msgid "Any parameters which reference this template will also be deleted"
msgstr ""
-#: templates/InvenTree/settings/settings.html:395
+#: templates/InvenTree/settings/settings.html:414
msgid "Delete Part Parameter Template"
msgstr ""
@@ -7331,8 +7290,8 @@ msgstr ""
#: templates/about.html:11 templates/about.html:105
#: templates/js/translated/bom.js:133 templates/js/translated/bom.js:621
-#: templates/js/translated/modals.js:56 templates/js/translated/modals.js:595
-#: templates/js/translated/modals.js:689 templates/js/translated/modals.js:997
+#: templates/js/translated/modals.js:56 templates/js/translated/modals.js:601
+#: templates/js/translated/modals.js:695 templates/js/translated/modals.js:1003
#: templates/js/translated/order.js:928 templates/modals.html:15
#: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50
msgid "Close"
@@ -7404,6 +7363,10 @@ msgstr ""
msgid "Please confirm that %(email)s is an email address for user %(user_display)s."
msgstr ""
+#: templates/account/email_confirm.html:20 templates/js/translated/forms.js:630
+msgid "Confirm"
+msgstr ""
+
#: templates/account/email_confirm.html:27
#, python-format
msgid "This email confirmation link expired or is invalid. Please issue a new email confirmation request."
@@ -7619,8 +7582,8 @@ msgstr ""
#: templates/email/build_order_required_stock.html:19
#: templates/email/low_stock_notification.html:18
#: templates/js/translated/bom.js:890 templates/js/translated/build.js:1787
-#: templates/js/translated/build.js:2650 templates/js/translated/part.js:527
-#: templates/js/translated/part.js:530
+#: templates/js/translated/build.js:2650 templates/js/translated/part.js:571
+#: templates/js/translated/part.js:574
#: templates/js/translated/table_filters.js:178
msgid "Available"
msgstr ""
@@ -7638,6 +7601,12 @@ msgstr ""
msgid "Minimum Quantity"
msgstr ""
+#: templates/email/overdue_build_order.html:9
+#: templates/email/overdue_purchase_order.html:9
+#: templates/email/overdue_sales_order.html:9
+msgid "Click on the following link to view this order"
+msgstr ""
+
#: templates/image_download.html:8
msgid "Specify URL for downloading image"
msgstr ""
@@ -7654,11 +7623,11 @@ msgstr ""
msgid "Remote image must not exceed maximum allowable file size"
msgstr ""
-#: templates/js/translated/api.js:235 templates/js/translated/modals.js:1067
+#: templates/js/translated/api.js:235 templates/js/translated/modals.js:1073
msgid "No Response"
msgstr ""
-#: templates/js/translated/api.js:236 templates/js/translated/modals.js:1068
+#: templates/js/translated/api.js:236 templates/js/translated/modals.js:1074
msgid "No response from the InvenTree server"
msgstr ""
@@ -7670,27 +7639,27 @@ msgstr ""
msgid "API request returned error code 400"
msgstr ""
-#: templates/js/translated/api.js:247 templates/js/translated/modals.js:1077
+#: templates/js/translated/api.js:247 templates/js/translated/modals.js:1083
msgid "Error 401: Not Authenticated"
msgstr ""
-#: templates/js/translated/api.js:248 templates/js/translated/modals.js:1078
+#: templates/js/translated/api.js:248 templates/js/translated/modals.js:1084
msgid "Authentication credentials not supplied"
msgstr ""
-#: templates/js/translated/api.js:252 templates/js/translated/modals.js:1082
+#: templates/js/translated/api.js:252 templates/js/translated/modals.js:1088
msgid "Error 403: Permission Denied"
msgstr ""
-#: templates/js/translated/api.js:253 templates/js/translated/modals.js:1083
+#: templates/js/translated/api.js:253 templates/js/translated/modals.js:1089
msgid "You do not have the required permissions to access this function"
msgstr ""
-#: templates/js/translated/api.js:257 templates/js/translated/modals.js:1087
+#: templates/js/translated/api.js:257 templates/js/translated/modals.js:1093
msgid "Error 404: Resource Not Found"
msgstr ""
-#: templates/js/translated/api.js:258 templates/js/translated/modals.js:1088
+#: templates/js/translated/api.js:258 templates/js/translated/modals.js:1094
msgid "The requested resource could not be located on the server"
msgstr ""
@@ -7702,11 +7671,11 @@ msgstr ""
msgid "HTTP method not allowed at URL"
msgstr ""
-#: templates/js/translated/api.js:267 templates/js/translated/modals.js:1092
+#: templates/js/translated/api.js:267 templates/js/translated/modals.js:1098
msgid "Error 408: Timeout"
msgstr ""
-#: templates/js/translated/api.js:268 templates/js/translated/modals.js:1093
+#: templates/js/translated/api.js:268 templates/js/translated/modals.js:1099
msgid "Connection timeout while requesting data from server"
msgstr ""
@@ -7734,11 +7703,11 @@ msgstr ""
msgid "Upload Date"
msgstr ""
-#: templates/js/translated/attachment.js:262
+#: templates/js/translated/attachment.js:268
msgid "Edit attachment"
msgstr ""
-#: templates/js/translated/attachment.js:269
+#: templates/js/translated/attachment.js:275
msgid "Delete attachment"
msgstr ""
@@ -7771,7 +7740,7 @@ msgid "Unknown response from server"
msgstr ""
#: templates/js/translated/barcode.js:182
-#: templates/js/translated/modals.js:1057
+#: templates/js/translated/modals.js:1063
msgid "Invalid server response"
msgstr ""
@@ -7964,7 +7933,7 @@ msgid "Includes variant and substitute stock"
msgstr ""
#: templates/js/translated/bom.js:912 templates/js/translated/build.js:1820
-#: templates/js/translated/part.js:690
+#: templates/js/translated/part.js:734
msgid "Includes variant stock"
msgstr ""
@@ -8275,8 +8244,8 @@ msgstr ""
msgid "No builds matching query"
msgstr ""
-#: templates/js/translated/build.js:2448 templates/js/translated/part.js:1314
-#: templates/js/translated/part.js:1729 templates/js/translated/stock.js:1619
+#: templates/js/translated/build.js:2448 templates/js/translated/part.js:1358
+#: templates/js/translated/part.js:1825 templates/js/translated/stock.js:1619
#: templates/js/translated/stock.js:2277
msgid "Select"
msgstr ""
@@ -8370,34 +8339,34 @@ msgid "No manufacturer parts found"
msgstr ""
#: templates/js/translated/company.js:615
-#: templates/js/translated/company.js:874 templates/js/translated/part.js:565
-#: templates/js/translated/part.js:650
+#: templates/js/translated/company.js:874 templates/js/translated/part.js:609
+#: templates/js/translated/part.js:694
msgid "Template part"
msgstr ""
#: templates/js/translated/company.js:619
-#: templates/js/translated/company.js:878 templates/js/translated/part.js:569
-#: templates/js/translated/part.js:654
+#: templates/js/translated/company.js:878 templates/js/translated/part.js:613
+#: templates/js/translated/part.js:698
msgid "Assembled part"
msgstr ""
-#: templates/js/translated/company.js:747 templates/js/translated/part.js:757
+#: templates/js/translated/company.js:747 templates/js/translated/part.js:801
msgid "No parameters found"
msgstr ""
-#: templates/js/translated/company.js:784 templates/js/translated/part.js:799
+#: templates/js/translated/company.js:784 templates/js/translated/part.js:843
msgid "Edit parameter"
msgstr ""
-#: templates/js/translated/company.js:785 templates/js/translated/part.js:800
+#: templates/js/translated/company.js:785 templates/js/translated/part.js:844
msgid "Delete parameter"
msgstr ""
-#: templates/js/translated/company.js:804 templates/js/translated/part.js:817
+#: templates/js/translated/company.js:804 templates/js/translated/part.js:861
msgid "Edit Parameter"
msgstr ""
-#: templates/js/translated/company.js:815 templates/js/translated/part.js:829
+#: templates/js/translated/company.js:815 templates/js/translated/part.js:873
msgid "Delete Parameter"
msgstr ""
@@ -8568,12 +8537,12 @@ msgid "Select Label Template"
msgstr ""
#: templates/js/translated/modals.js:82 templates/js/translated/modals.js:142
-#: templates/js/translated/modals.js:621
+#: templates/js/translated/modals.js:627
msgid "Cancel"
msgstr ""
#: templates/js/translated/modals.js:83 templates/js/translated/modals.js:141
-#: templates/js/translated/modals.js:688 templates/js/translated/modals.js:996
+#: templates/js/translated/modals.js:694 templates/js/translated/modals.js:1002
#: templates/modals.html:28 templates/modals.html:51
msgid "Submit"
msgstr ""
@@ -8582,47 +8551,47 @@ msgstr ""
msgid "Form Title"
msgstr ""
-#: templates/js/translated/modals.js:403
+#: templates/js/translated/modals.js:421
msgid "Waiting for server..."
msgstr ""
-#: templates/js/translated/modals.js:562
+#: templates/js/translated/modals.js:568
msgid "Show Error Information"
msgstr ""
-#: templates/js/translated/modals.js:620
+#: templates/js/translated/modals.js:626
msgid "Accept"
msgstr ""
-#: templates/js/translated/modals.js:677
+#: templates/js/translated/modals.js:683
msgid "Loading Data"
msgstr ""
-#: templates/js/translated/modals.js:948
+#: templates/js/translated/modals.js:954
msgid "Invalid response from server"
msgstr ""
-#: templates/js/translated/modals.js:948
+#: templates/js/translated/modals.js:954
msgid "Form data missing from server response"
msgstr ""
-#: templates/js/translated/modals.js:960
+#: templates/js/translated/modals.js:966
msgid "Error posting form data"
msgstr ""
-#: templates/js/translated/modals.js:1057
+#: templates/js/translated/modals.js:1063
msgid "JSON response missing form data"
msgstr ""
-#: templates/js/translated/modals.js:1072
+#: templates/js/translated/modals.js:1078
msgid "Error 400: Bad Request"
msgstr ""
-#: templates/js/translated/modals.js:1073
+#: templates/js/translated/modals.js:1079
msgid "Server returned error code 400"
msgstr ""
-#: templates/js/translated/modals.js:1096
+#: templates/js/translated/modals.js:1102
msgid "Error requesting form data"
msgstr ""
@@ -8672,11 +8641,11 @@ msgstr ""
msgid "Mark as read"
msgstr ""
-#: templates/js/translated/notification.js:259
+#: templates/js/translated/notification.js:260
msgid "No unread notifications"
msgstr ""
-#: templates/js/translated/notification.js:300 templates/notifications.html:10
+#: templates/js/translated/notification.js:302 templates/notifications.html:10
msgid "Notifications will load here"
msgstr ""
@@ -8844,7 +8813,7 @@ msgstr ""
msgid "Receive Purchase Order Items"
msgstr ""
-#: templates/js/translated/order.js:1602 templates/js/translated/part.js:870
+#: templates/js/translated/order.js:1602 templates/js/translated/part.js:914
msgid "No purchase orders found"
msgstr ""
@@ -8879,7 +8848,7 @@ msgstr ""
#: templates/js/translated/order.js:1937 templates/js/translated/order.js:2139
#: templates/js/translated/order.js:3467 templates/js/translated/order.js:3978
-#: templates/js/translated/part.js:1948 templates/js/translated/part.js:2301
+#: templates/js/translated/part.js:2044 templates/js/translated/part.js:2397
msgid "Unit Price"
msgstr ""
@@ -8889,11 +8858,11 @@ msgid "Total Price"
msgstr ""
#: templates/js/translated/order.js:1993 templates/js/translated/order.js:3525
-#: templates/js/translated/part.js:979
+#: templates/js/translated/part.js:1023
msgid "This line item is overdue"
msgstr ""
-#: templates/js/translated/order.js:2052 templates/js/translated/part.js:1025
+#: templates/js/translated/order.js:2052 templates/js/translated/part.js:1069
msgid "Receive line item"
msgstr ""
@@ -9154,165 +9123,209 @@ msgstr ""
msgid "Create Part Variant"
msgstr ""
+#: templates/js/translated/part.js:405
+msgid "Active Part"
+msgstr ""
+
+#: templates/js/translated/part.js:406
+msgid "Part cannot be deleted as it is currently active"
+msgstr ""
+
+#: templates/js/translated/part.js:420
+msgid "Deleting this part cannot be reversed"
+msgstr ""
+
+#: templates/js/translated/part.js:422
+msgid "Any stock items for this part will be deleted"
+msgstr ""
+
#: templates/js/translated/part.js:423
+msgid "This part will be removed from any Bills of Material"
+msgstr ""
+
+#: templates/js/translated/part.js:424
+msgid "All manufacturer and supplier information for this part will be deleted"
+msgstr ""
+
+#: templates/js/translated/part.js:431
+msgid "Delete Part"
+msgstr ""
+
+#: templates/js/translated/part.js:467
msgid "You are subscribed to notifications for this item"
msgstr ""
-#: templates/js/translated/part.js:425
+#: templates/js/translated/part.js:469
msgid "You have subscribed to notifications for this item"
msgstr ""
-#: templates/js/translated/part.js:430
+#: templates/js/translated/part.js:474
msgid "Subscribe to notifications for this item"
msgstr ""
-#: templates/js/translated/part.js:432
+#: templates/js/translated/part.js:476
msgid "You have unsubscribed to notifications for this item"
msgstr ""
-#: templates/js/translated/part.js:449
+#: templates/js/translated/part.js:493
msgid "Validating the BOM will mark each line item as valid"
msgstr ""
-#: templates/js/translated/part.js:459
+#: templates/js/translated/part.js:503
msgid "Validate Bill of Materials"
msgstr ""
-#: templates/js/translated/part.js:462
+#: templates/js/translated/part.js:506
msgid "Validated Bill of Materials"
msgstr ""
-#: templates/js/translated/part.js:487
+#: templates/js/translated/part.js:531
msgid "Copy Bill of Materials"
msgstr ""
-#: templates/js/translated/part.js:513 templates/js/translated/part.js:1397
+#: templates/js/translated/part.js:557 templates/js/translated/part.js:1441
#: templates/js/translated/table_filters.js:452
msgid "Low stock"
msgstr ""
-#: templates/js/translated/part.js:523 templates/js/translated/part.js:1409
+#: templates/js/translated/part.js:567 templates/js/translated/part.js:1453
msgid "No stock available"
msgstr ""
-#: templates/js/translated/part.js:557 templates/js/translated/part.js:642
+#: templates/js/translated/part.js:601 templates/js/translated/part.js:686
msgid "Trackable part"
msgstr ""
-#: templates/js/translated/part.js:561 templates/js/translated/part.js:646
+#: templates/js/translated/part.js:605 templates/js/translated/part.js:690
msgid "Virtual part"
msgstr ""
-#: templates/js/translated/part.js:573
+#: templates/js/translated/part.js:617
msgid "Subscribed part"
msgstr ""
-#: templates/js/translated/part.js:577
+#: templates/js/translated/part.js:621
msgid "Salable part"
msgstr ""
-#: templates/js/translated/part.js:705
+#: templates/js/translated/part.js:749
msgid "No variants found"
msgstr ""
-#: templates/js/translated/part.js:1095
+#: templates/js/translated/part.js:1139
msgid "Delete part relationship"
msgstr ""
-#: templates/js/translated/part.js:1119
+#: templates/js/translated/part.js:1163
msgid "Delete Part Relationship"
msgstr ""
-#: templates/js/translated/part.js:1184 templates/js/translated/part.js:1480
+#: templates/js/translated/part.js:1228 templates/js/translated/part.js:1524
msgid "No parts found"
msgstr ""
-#: templates/js/translated/part.js:1223
+#: templates/js/translated/part.js:1267
msgid "Not available"
msgstr ""
-#: templates/js/translated/part.js:1374
+#: templates/js/translated/part.js:1418
msgid "No category"
msgstr ""
-#: templates/js/translated/part.js:1504 templates/js/translated/part.js:1664
+#: templates/js/translated/part.js:1548 templates/js/translated/part.js:1760
#: templates/js/translated/stock.js:2238
msgid "Display as list"
msgstr ""
-#: templates/js/translated/part.js:1520
+#: templates/js/translated/part.js:1564
msgid "Display as grid"
msgstr ""
-#: templates/js/translated/part.js:1683 templates/js/translated/stock.js:2257
+#: templates/js/translated/part.js:1630
+msgid "Set the part category for the selected parts"
+msgstr ""
+
+#: templates/js/translated/part.js:1635
+msgid "Set Part Category"
+msgstr ""
+
+#: templates/js/translated/part.js:1640
+msgid "Select Part Category"
+msgstr ""
+
+#: templates/js/translated/part.js:1653
+msgid "Category is required"
+msgstr ""
+
+#: templates/js/translated/part.js:1779 templates/js/translated/stock.js:2257
msgid "Display as tree"
msgstr ""
-#: templates/js/translated/part.js:1747
+#: templates/js/translated/part.js:1843
msgid "Subscribed category"
msgstr ""
-#: templates/js/translated/part.js:1761 templates/js/translated/stock.js:2301
+#: templates/js/translated/part.js:1857 templates/js/translated/stock.js:2301
msgid "Path"
msgstr ""
-#: templates/js/translated/part.js:1805
+#: templates/js/translated/part.js:1901
msgid "No test templates matching query"
msgstr ""
-#: templates/js/translated/part.js:1856 templates/js/translated/stock.js:1233
+#: templates/js/translated/part.js:1952 templates/js/translated/stock.js:1233
msgid "Edit test result"
msgstr ""
-#: templates/js/translated/part.js:1857 templates/js/translated/stock.js:1234
+#: templates/js/translated/part.js:1953 templates/js/translated/stock.js:1234
#: templates/js/translated/stock.js:1493
msgid "Delete test result"
msgstr ""
-#: templates/js/translated/part.js:1863
+#: templates/js/translated/part.js:1959
msgid "This test is defined for a parent part"
msgstr ""
-#: templates/js/translated/part.js:1885
+#: templates/js/translated/part.js:1981
msgid "Edit Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:1899
+#: templates/js/translated/part.js:1995
msgid "Delete Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:1924
+#: templates/js/translated/part.js:2020
#, python-brace-format
msgid "No ${human_name} information found"
msgstr ""
-#: templates/js/translated/part.js:1981
+#: templates/js/translated/part.js:2077
#, python-brace-format
msgid "Edit ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:1982
+#: templates/js/translated/part.js:2078
#, python-brace-format
msgid "Delete ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:2096
+#: templates/js/translated/part.js:2192
msgid "Current Stock"
msgstr ""
-#: templates/js/translated/part.js:2129
+#: templates/js/translated/part.js:2225
msgid "No scheduling information available for this part"
msgstr ""
-#: templates/js/translated/part.js:2155
+#: templates/js/translated/part.js:2251
msgid "Scheduled Stock Quantities"
msgstr ""
-#: templates/js/translated/part.js:2225
+#: templates/js/translated/part.js:2321
msgid "Single Price"
msgstr ""
-#: templates/js/translated/part.js:2244
+#: templates/js/translated/part.js:2340
msgid "Single Price Difference"
msgstr ""
diff --git a/InvenTree/locale/fa/LC_MESSAGES/django.po b/InvenTree/locale/fa/LC_MESSAGES/django.po
index 4d854e017f..e4af7a23c2 100644
--- a/InvenTree/locale/fa/LC_MESSAGES/django.po
+++ b/InvenTree/locale/fa/LC_MESSAGES/django.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-06-05 14:26+0000\n"
-"PO-Revision-Date: 2022-06-05 14:34\n"
+"POT-Creation-Date: 2022-06-06 22:59+0000\n"
+"PO-Revision-Date: 2022-06-07 14:34\n"
"Last-Translator: \n"
"Language-Team: Persian\n"
"Language: fa_IR\n"
@@ -17,7 +17,7 @@ msgstr ""
"X-Crowdin-File: /[inventree.InvenTree] l10/InvenTree/locale/en/LC_MESSAGES/django.po\n"
"X-Crowdin-File-ID: 154\n"
-#: InvenTree/api.py:46
+#: InvenTree/api.py:49
msgid "API endpoint not found"
msgstr "Address e API peida nashod"
@@ -29,275 +29,273 @@ msgstr ""
msgid "Enter date"
msgstr ""
-#: InvenTree/forms.py:117 templates/account/email_confirm.html:20
-#: templates/js/translated/forms.js:630
-msgid "Confirm"
-msgstr "تایید"
-
-#: InvenTree/forms.py:134
+#: InvenTree/forms.py:117
msgid "Confirm delete"
msgstr "تائید حذف"
-#: InvenTree/forms.py:135
+#: InvenTree/forms.py:118
msgid "Confirm item deletion"
msgstr ""
-#: InvenTree/forms.py:167
+#: InvenTree/forms.py:150
msgid "Enter password"
msgstr ""
-#: InvenTree/forms.py:168
+#: InvenTree/forms.py:151
msgid "Enter new password"
msgstr ""
-#: InvenTree/forms.py:175
+#: InvenTree/forms.py:158
msgid "Confirm password"
msgstr ""
-#: InvenTree/forms.py:176
+#: InvenTree/forms.py:159
msgid "Confirm new password"
msgstr ""
-#: InvenTree/forms.py:213
-msgid "Select Category"
-msgstr ""
-
-#: InvenTree/forms.py:234
+#: InvenTree/forms.py:184
msgid "Email (again)"
msgstr ""
-#: InvenTree/forms.py:238
+#: InvenTree/forms.py:188
msgid "Email address confirmation"
msgstr ""
-#: InvenTree/forms.py:259
+#: InvenTree/forms.py:209
msgid "You must type the same email each time."
msgstr ""
-#: InvenTree/helpers.py:402
+#: InvenTree/helpers.py:404
#, python-brace-format
msgid "Duplicate serial: {sn}"
msgstr ""
-#: InvenTree/helpers.py:409 order/models.py:365 order/models.py:517
+#: InvenTree/helpers.py:411 order/models.py:370 order/models.py:522
msgid "Invalid quantity provided"
msgstr ""
-#: InvenTree/helpers.py:412
+#: InvenTree/helpers.py:414
msgid "Empty serial number string"
msgstr ""
-#: InvenTree/helpers.py:444
+#: InvenTree/helpers.py:446
#, python-brace-format
msgid "Invalid group range: {g}"
msgstr ""
-#: InvenTree/helpers.py:447
+#: InvenTree/helpers.py:449
#, python-brace-format
msgid "Invalid group: {g}"
msgstr ""
-#: InvenTree/helpers.py:475
+#: InvenTree/helpers.py:477
#, python-brace-format
msgid "Invalid group sequence: {g}"
msgstr ""
-#: InvenTree/helpers.py:483
+#: InvenTree/helpers.py:485
#, python-brace-format
msgid "Invalid/no group {group}"
msgstr ""
-#: InvenTree/helpers.py:489
+#: InvenTree/helpers.py:491
msgid "No serial numbers found"
msgstr ""
-#: InvenTree/helpers.py:493
+#: InvenTree/helpers.py:495
#, python-brace-format
msgid "Number of unique serial numbers ({s}) must match quantity ({q})"
msgstr ""
-#: InvenTree/models.py:174
+#: InvenTree/models.py:178
msgid "Missing file"
msgstr ""
-#: InvenTree/models.py:175
+#: InvenTree/models.py:179
msgid "Missing external link"
msgstr ""
-#: InvenTree/models.py:187 stock/models.py:2087
-#: templates/js/translated/attachment.js:101
-#: templates/js/translated/attachment.js:198
+#: InvenTree/models.py:191 stock/models.py:2091
+#: templates/js/translated/attachment.js:103
+#: templates/js/translated/attachment.js:194
msgid "Attachment"
msgstr ""
-#: InvenTree/models.py:188
+#: InvenTree/models.py:192
msgid "Select file to attach"
msgstr ""
-#: InvenTree/models.py:194 company/models.py:123 company/models.py:272
-#: company/models.py:506 order/models.py:135 order/models.py:1235
+#: InvenTree/models.py:198 company/models.py:123 company/models.py:272
+#: company/models.py:506 order/models.py:136 order/models.py:1251
#: part/models.py:795
#: report/templates/report/inventree_build_order_base.html:165
-#: templates/js/translated/company.js:655
-#: templates/js/translated/company.js:946 templates/js/translated/order.js:2676
-#: templates/js/translated/part.js:1441
+#: templates/js/translated/company.js:640
+#: templates/js/translated/company.js:931 templates/js/translated/order.js:2676
+#: templates/js/translated/part.js:1485
msgid "Link"
msgstr ""
-#: InvenTree/models.py:195 build/models.py:320 part/models.py:796
+#: InvenTree/models.py:199 build/models.py:320 part/models.py:796
#: stock/models.py:642
msgid "Link to external URL"
msgstr ""
-#: InvenTree/models.py:198 templates/js/translated/attachment.js:102
-#: templates/js/translated/attachment.js:242
+#: InvenTree/models.py:202 templates/js/translated/attachment.js:104
+#: templates/js/translated/attachment.js:238
msgid "Comment"
msgstr ""
-#: InvenTree/models.py:198
+#: InvenTree/models.py:202
msgid "File comment"
msgstr ""
-#: InvenTree/models.py:204 InvenTree/models.py:205 common/models.py:1499
-#: common/models.py:1500 common/models.py:1728 common/models.py:1729
-#: common/models.py:1991 common/models.py:1992 part/models.py:2153
-#: part/models.py:2173 plugin/models.py:238 plugin/models.py:239
+#: InvenTree/models.py:208 InvenTree/models.py:209 common/models.py:1506
+#: common/models.py:1507 common/models.py:1735 common/models.py:1736
+#: common/models.py:1998 common/models.py:1999 part/models.py:2141
+#: part/models.py:2161 plugin/models.py:238 plugin/models.py:239
#: report/templates/report/inventree_test_report_base.html:96
-#: templates/js/translated/stock.js:2513
+#: templates/js/translated/stock.js:2523
msgid "User"
msgstr ""
-#: InvenTree/models.py:208
+#: InvenTree/models.py:212
msgid "upload date"
msgstr ""
-#: InvenTree/models.py:230
+#: InvenTree/models.py:234
msgid "Filename must not be empty"
msgstr ""
-#: InvenTree/models.py:253
+#: InvenTree/models.py:257
msgid "Invalid attachment directory"
msgstr ""
-#: InvenTree/models.py:263
+#: InvenTree/models.py:267
#, python-brace-format
msgid "Filename contains illegal character '{c}'"
msgstr ""
-#: InvenTree/models.py:266
+#: InvenTree/models.py:270
msgid "Filename missing extension"
msgstr ""
-#: InvenTree/models.py:273
+#: InvenTree/models.py:277
msgid "Attachment with this filename already exists"
msgstr ""
-#: InvenTree/models.py:280
+#: InvenTree/models.py:284
msgid "Error renaming file"
msgstr ""
-#: InvenTree/models.py:314
+#: InvenTree/models.py:318
msgid "Invalid choice"
msgstr ""
-#: InvenTree/models.py:333 InvenTree/models.py:334 common/models.py:1714
+#: InvenTree/models.py:337 InvenTree/models.py:338 common/models.py:1721
#: company/models.py:354 label/models.py:101 part/models.py:739
-#: part/models.py:2331 plugin/models.py:93 report/models.py:151
+#: part/models.py:2319 plugin/models.py:93 report/models.py:151
#: templates/InvenTree/notifications/notifications.html:84
#: templates/InvenTree/settings/mixins/urls.html:13
#: templates/InvenTree/settings/plugin.html:49
#: templates/InvenTree/settings/plugin.html:132
#: templates/InvenTree/settings/plugin_settings.html:23
#: templates/InvenTree/settings/settings.html:346
-#: templates/js/translated/company.js:539
-#: templates/js/translated/company.js:757 templates/js/translated/part.js:615
-#: templates/js/translated/part.js:767 templates/js/translated/part.js:1736
-#: templates/js/translated/stock.js:2283
+#: templates/js/translated/company.js:530
+#: templates/js/translated/company.js:742 templates/js/translated/part.js:659
+#: templates/js/translated/part.js:811 templates/js/translated/part.js:1832
+#: templates/js/translated/stock.js:2293
msgid "Name"
msgstr ""
-#: InvenTree/models.py:340 build/models.py:197
+#: InvenTree/models.py:344 build/models.py:197
#: build/templates/build/detail.html:24 company/models.py:278
#: company/models.py:512 company/templates/company/company_base.html:71
#: company/templates/company/manufacturer_part.html:75
#: company/templates/company/supplier_part.html:73 label/models.py:108
-#: order/models.py:133 part/models.py:762 part/templates/part/category.html:74
-#: part/templates/part/part_base.html:167
-#: part/templates/part/set_category.html:14 report/models.py:164
+#: order/models.py:134 part/models.py:762 part/templates/part/category.html:74
+#: part/templates/part/part_base.html:167 report/models.py:164
#: report/models.py:509 report/models.py:550
#: report/templates/report/inventree_build_order_base.html:118
#: stock/templates/stock/location.html:103
#: templates/InvenTree/settings/plugin_settings.html:33
-#: templates/js/translated/bom.js:553 templates/js/translated/bom.js:851
-#: templates/js/translated/build.js:2476 templates/js/translated/company.js:401
-#: templates/js/translated/company.js:666
-#: templates/js/translated/company.js:957 templates/js/translated/order.js:1656
+#: templates/js/translated/bom.js:553 templates/js/translated/bom.js:845
+#: templates/js/translated/build.js:2476 templates/js/translated/company.js:395
+#: templates/js/translated/company.js:651
+#: templates/js/translated/company.js:942 templates/js/translated/order.js:1656
#: templates/js/translated/order.js:1888 templates/js/translated/order.js:2476
-#: templates/js/translated/part.js:674 templates/js/translated/part.js:1082
-#: templates/js/translated/part.js:1355 templates/js/translated/part.js:1755
-#: templates/js/translated/part.js:1824 templates/js/translated/stock.js:1676
-#: templates/js/translated/stock.js:2295 templates/js/translated/stock.js:2350
+#: templates/js/translated/part.js:718 templates/js/translated/part.js:1126
+#: templates/js/translated/part.js:1399 templates/js/translated/part.js:1851
+#: templates/js/translated/part.js:1920 templates/js/translated/stock.js:1686
+#: templates/js/translated/stock.js:2305 templates/js/translated/stock.js:2360
msgid "Description"
msgstr ""
-#: InvenTree/models.py:341
+#: InvenTree/models.py:345
msgid "Description (optional)"
msgstr ""
-#: InvenTree/models.py:349
+#: InvenTree/models.py:353
msgid "parent"
msgstr ""
-#: InvenTree/serializers.py:52 part/models.py:2652
+#: InvenTree/models.py:466
+msgid "Server Error"
+msgstr ""
+
+#: InvenTree/models.py:467
+msgid "An error has been logged by the server."
+msgstr ""
+
+#: InvenTree/serializers.py:52 part/models.py:2640
msgid "Must be a valid number"
msgstr ""
-#: InvenTree/serializers.py:271
+#: InvenTree/serializers.py:263
msgid "Filename"
msgstr ""
-#: InvenTree/serializers.py:306
+#: InvenTree/serializers.py:298
msgid "Invalid value"
msgstr ""
-#: InvenTree/serializers.py:328
+#: InvenTree/serializers.py:320
msgid "Data File"
msgstr ""
-#: InvenTree/serializers.py:329
+#: InvenTree/serializers.py:321
msgid "Select data file for upload"
msgstr ""
-#: InvenTree/serializers.py:350
+#: InvenTree/serializers.py:342
msgid "Unsupported file type"
msgstr ""
-#: InvenTree/serializers.py:356
+#: InvenTree/serializers.py:348
msgid "File is too large"
msgstr ""
-#: InvenTree/serializers.py:377
+#: InvenTree/serializers.py:369
msgid "No columns found in file"
msgstr ""
-#: InvenTree/serializers.py:380
+#: InvenTree/serializers.py:372
msgid "No data rows found in file"
msgstr ""
-#: InvenTree/serializers.py:503
+#: InvenTree/serializers.py:495
msgid "No data rows provided"
msgstr ""
-#: InvenTree/serializers.py:506
+#: InvenTree/serializers.py:498
msgid "No data columns supplied"
msgstr ""
-#: InvenTree/serializers.py:583
+#: InvenTree/serializers.py:575
#, python-brace-format
msgid "Missing required column: '{name}'"
msgstr ""
-#: InvenTree/serializers.py:592
+#: InvenTree/serializers.py:584
#, python-brace-format
msgid "Duplicate column: '{col}'"
msgstr ""
@@ -440,7 +438,7 @@ msgstr ""
msgid "Returned"
msgstr ""
-#: InvenTree/status_codes.py:141 order/models.py:1114
+#: InvenTree/status_codes.py:141 order/models.py:1130
#: templates/js/translated/order.js:3264 templates/js/translated/order.js:3607
msgid "Shipped"
msgstr ""
@@ -525,7 +523,7 @@ msgstr ""
msgid "Split child item"
msgstr ""
-#: InvenTree/status_codes.py:281 templates/js/translated/stock.js:2020
+#: InvenTree/status_codes.py:281 templates/js/translated/stock.js:2030
msgid "Merged stock items"
msgstr ""
@@ -597,27 +595,27 @@ msgstr ""
msgid "Invalid value for overage"
msgstr ""
-#: InvenTree/views.py:522
+#: InvenTree/views.py:521
msgid "Delete Item"
msgstr ""
-#: InvenTree/views.py:571
+#: InvenTree/views.py:570
msgid "Check box to confirm item deletion"
msgstr ""
-#: InvenTree/views.py:586 templates/InvenTree/settings/user.html:22
+#: InvenTree/views.py:585 templates/InvenTree/settings/user.html:22
msgid "Edit User Information"
msgstr ""
-#: InvenTree/views.py:598 templates/InvenTree/settings/user.html:19
+#: InvenTree/views.py:597 templates/InvenTree/settings/user.html:19
msgid "Set Password"
msgstr ""
-#: InvenTree/views.py:618
+#: InvenTree/views.py:617
msgid "Password fields must match"
msgstr ""
-#: InvenTree/views.py:842 templates/navbar.html:152
+#: InvenTree/views.py:807 templates/navbar.html:152
msgid "System Information"
msgstr ""
@@ -628,6 +626,7 @@ msgstr ""
#: build/models.py:131 build/templates/build/build_base.html:9
#: build/templates/build/build_base.html:27
#: report/templates/report/inventree_build_order_base.html:106
+#: templates/email/overdue_build_order.html:15
#: templates/js/translated/build.js:727
msgid "Build Order"
msgstr ""
@@ -646,12 +645,12 @@ msgstr ""
msgid "Build Order Reference"
msgstr ""
-#: build/models.py:189 order/models.py:288 order/models.py:638
-#: order/models.py:916 part/models.py:2570
+#: build/models.py:189 order/models.py:293 order/models.py:654
+#: order/models.py:932 part/models.py:2558
#: part/templates/part/upload_bom.html:54
#: report/templates/report/inventree_po_report.html:91
#: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:688 templates/js/translated/bom.js:858
+#: templates/js/translated/bom.js:690 templates/js/translated/bom.js:852
#: templates/js/translated/build.js:1777 templates/js/translated/order.js:1919
#: templates/js/translated/order.js:2120 templates/js/translated/order.js:3448
#: templates/js/translated/order.js:3959
@@ -673,13 +672,12 @@ msgstr ""
#: build/models.py:215 build/templates/build/build_base.html:77
#: build/templates/build/detail.html:29 company/models.py:647
-#: order/models.py:1012 order/models.py:1103 part/models.py:336
-#: part/models.py:2099 part/models.py:2114 part/models.py:2133
-#: part/models.py:2151 part/models.py:2250 part/models.py:2370
-#: part/models.py:2460 part/models.py:2545 part/models.py:2821
-#: part/serializers.py:793 part/templates/part/part_app_base.html:8
+#: order/models.py:1028 order/models.py:1119 part/models.py:336
+#: part/models.py:2087 part/models.py:2102 part/models.py:2121
+#: part/models.py:2139 part/models.py:2238 part/models.py:2358
+#: part/models.py:2448 part/models.py:2533 part/models.py:2809
+#: part/serializers.py:795 part/templates/part/part_app_base.html:8
#: part/templates/part/part_pricing.html:12
-#: part/templates/part/set_category.html:13
#: part/templates/part/upload_bom.html:52
#: report/templates/report/inventree_build_order_base.html:110
#: report/templates/report/inventree_po_report.html:89
@@ -687,22 +685,23 @@ msgstr ""
#: templates/InvenTree/search.html:80
#: templates/email/build_order_required_stock.html:17
#: templates/email/low_stock_notification.html:16
+#: templates/email/overdue_build_order.html:16
#: templates/js/translated/barcode.js:435 templates/js/translated/bom.js:552
-#: templates/js/translated/bom.js:687 templates/js/translated/bom.js:805
+#: templates/js/translated/bom.js:689 templates/js/translated/bom.js:799
#: templates/js/translated/build.js:1153 templates/js/translated/build.js:1647
#: templates/js/translated/build.js:2083 templates/js/translated/build.js:2481
-#: templates/js/translated/company.js:252
-#: templates/js/translated/company.js:486
-#: templates/js/translated/company.js:607
-#: templates/js/translated/company.js:866 templates/js/translated/order.js:100
+#: templates/js/translated/company.js:253
+#: templates/js/translated/company.js:482
+#: templates/js/translated/company.js:592
+#: templates/js/translated/company.js:851 templates/js/translated/order.js:100
#: templates/js/translated/order.js:883 templates/js/translated/order.js:1315
#: templates/js/translated/order.js:1873 templates/js/translated/order.js:2819
#: templates/js/translated/order.js:3217 templates/js/translated/order.js:3432
-#: templates/js/translated/part.js:1067 templates/js/translated/part.js:1137
-#: templates/js/translated/part.js:1333 templates/js/translated/stock.js:531
-#: templates/js/translated/stock.js:696 templates/js/translated/stock.js:903
-#: templates/js/translated/stock.js:1633 templates/js/translated/stock.js:2376
-#: templates/js/translated/stock.js:2571 templates/js/translated/stock.js:2705
+#: templates/js/translated/part.js:1111 templates/js/translated/part.js:1181
+#: templates/js/translated/part.js:1377 templates/js/translated/stock.js:530
+#: templates/js/translated/stock.js:695 templates/js/translated/stock.js:902
+#: templates/js/translated/stock.js:1643 templates/js/translated/stock.js:2386
+#: templates/js/translated/stock.js:2581 templates/js/translated/stock.js:2715
msgid "Part"
msgstr ""
@@ -768,12 +767,12 @@ msgstr ""
msgid "Batch code for this build output"
msgstr ""
-#: build/models.py:282 order/models.py:137 part/models.py:932
+#: build/models.py:282 order/models.py:138 part/models.py:932
#: part/templates/part/part_base.html:305 templates/js/translated/order.js:2489
msgid "Creation Date"
msgstr ""
-#: build/models.py:286 order/models.py:660
+#: build/models.py:286 order/models.py:676
msgid "Target completion date"
msgstr ""
@@ -781,7 +780,7 @@ msgstr ""
msgid "Target date for build completion. Build will be overdue after this date."
msgstr ""
-#: build/models.py:290 order/models.py:331
+#: build/models.py:290 order/models.py:336
#: templates/js/translated/build.js:2558
msgid "Completion Date"
msgstr ""
@@ -799,7 +798,7 @@ msgid "User who issued this build order"
msgstr ""
#: build/models.py:313 build/templates/build/build_base.html:190
-#: build/templates/build/detail.html:115 order/models.py:151
+#: build/templates/build/detail.html:115 order/models.py:152
#: order/templates/order/order_base.html:176
#: order/templates/order/sales_order_base.html:183 part/models.py:936
#: report/templates/report/inventree_build_order_base.html:159
@@ -822,20 +821,20 @@ msgstr ""
#: build/models.py:324 build/serializers.py:374
#: build/templates/build/sidebar.html:21 company/models.py:134
#: company/models.py:519 company/templates/company/sidebar.html:25
-#: order/models.py:155 order/models.py:918 order/models.py:1213
+#: order/models.py:156 order/models.py:934 order/models.py:1229
#: order/templates/order/po_sidebar.html:11
#: order/templates/order/so_sidebar.html:17 part/models.py:921
#: part/templates/part/part_sidebar.html:59
#: report/templates/report/inventree_build_order_base.html:173
-#: stock/models.py:713 stock/models.py:1985 stock/models.py:2093
+#: stock/models.py:713 stock/models.py:1989 stock/models.py:2097
#: stock/serializers.py:315 stock/serializers.py:444 stock/serializers.py:486
-#: stock/serializers.py:772 stock/serializers.py:871 stock/serializers.py:1003
+#: stock/serializers.py:759 stock/serializers.py:858 stock/serializers.py:990
#: stock/templates/stock/stock_sidebar.html:25
-#: templates/js/translated/barcode.js:100 templates/js/translated/bom.js:1044
-#: templates/js/translated/company.js:962 templates/js/translated/order.js:2040
+#: templates/js/translated/barcode.js:100 templates/js/translated/bom.js:1038
+#: templates/js/translated/company.js:947 templates/js/translated/order.js:2040
#: templates/js/translated/order.js:2191 templates/js/translated/order.js:2687
#: templates/js/translated/order.js:3632 templates/js/translated/order.js:4030
-#: templates/js/translated/stock.js:1307 templates/js/translated/stock.js:1916
+#: templates/js/translated/stock.js:1317 templates/js/translated/stock.js:1926
msgid "Notes"
msgstr ""
@@ -855,44 +854,44 @@ msgstr ""
msgid "Build output does not match Build Order"
msgstr ""
-#: build/models.py:1108
+#: build/models.py:1111
msgid "Build item must specify a build output, as master part is marked as trackable"
msgstr ""
-#: build/models.py:1117
+#: build/models.py:1120
#, python-brace-format
msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})"
msgstr ""
-#: build/models.py:1127
+#: build/models.py:1130
msgid "Stock item is over-allocated"
msgstr ""
-#: build/models.py:1133 order/models.py:1372
+#: build/models.py:1136 order/models.py:1388
msgid "Allocation quantity must be greater than zero"
msgstr ""
-#: build/models.py:1139
+#: build/models.py:1142
msgid "Quantity must be 1 for serialized stock"
msgstr ""
-#: build/models.py:1196
+#: build/models.py:1199
msgid "Selected stock item not found in BOM"
msgstr ""
-#: build/models.py:1265 stock/templates/stock/item_base.html:177
+#: build/models.py:1268 stock/templates/stock/item_base.html:177
#: templates/InvenTree/search.html:137 templates/js/translated/build.js:2454
#: templates/navbar.html:38
msgid "Build"
msgstr ""
-#: build/models.py:1266
+#: build/models.py:1269
msgid "Build to allocate parts"
msgstr ""
-#: build/models.py:1282 build/serializers.py:603 order/serializers.py:994
-#: order/serializers.py:1015 stock/serializers.py:382 stock/serializers.py:703
-#: stock/serializers.py:829 stock/templates/stock/item_base.html:10
+#: build/models.py:1285 build/serializers.py:603 order/serializers.py:996
+#: order/serializers.py:1017 stock/serializers.py:382 stock/serializers.py:690
+#: stock/serializers.py:816 stock/templates/stock/item_base.html:10
#: stock/templates/stock/item_base.html:23
#: stock/templates/stock/item_base.html:199
#: templates/js/translated/build.js:738 templates/js/translated/build.js:743
@@ -900,22 +899,22 @@ msgstr ""
#: templates/js/translated/order.js:101 templates/js/translated/order.js:2820
#: templates/js/translated/order.js:3124 templates/js/translated/order.js:3129
#: templates/js/translated/order.js:3224 templates/js/translated/order.js:3314
-#: templates/js/translated/stock.js:532 templates/js/translated/stock.js:697
-#: templates/js/translated/stock.js:2449
+#: templates/js/translated/stock.js:531 templates/js/translated/stock.js:696
+#: templates/js/translated/stock.js:2459
msgid "Stock Item"
msgstr ""
-#: build/models.py:1283
+#: build/models.py:1286
msgid "Source stock item"
msgstr ""
-#: build/models.py:1295 build/serializers.py:183
+#: build/models.py:1298 build/serializers.py:183
#: build/templates/build/build_base.html:82
-#: build/templates/build/detail.html:34 common/models.py:1536
+#: build/templates/build/detail.html:34 common/models.py:1543
#: company/forms.py:36 company/templates/company/supplier_part.html:258
-#: order/models.py:909 order/models.py:1412 order/serializers.py:1134
-#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:68
-#: part/forms.py:83 part/forms.py:98 part/models.py:2561
+#: order/models.py:925 order/models.py:1428 order/serializers.py:1136
+#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:59
+#: part/forms.py:74 part/forms.py:89 part/models.py:2549
#: part/templates/part/detail.html:935 part/templates/part/detail.html:1021
#: part/templates/part/part_pricing.html:16
#: part/templates/part/upload_bom.html:53
@@ -926,8 +925,8 @@ msgstr ""
#: report/templates/report/inventree_test_report_base.html:139
#: stock/serializers.py:279 stock/templates/stock/item_base.html:292
#: stock/templates/stock/item_base.html:300
-#: templates/js/translated/barcode.js:437 templates/js/translated/bom.js:689
-#: templates/js/translated/bom.js:866 templates/js/translated/build.js:422
+#: templates/js/translated/barcode.js:437 templates/js/translated/bom.js:691
+#: templates/js/translated/bom.js:860 templates/js/translated/build.js:422
#: templates/js/translated/build.js:574 templates/js/translated/build.js:765
#: templates/js/translated/build.js:1175 templates/js/translated/build.js:1673
#: templates/js/translated/build.js:2086
@@ -937,23 +936,23 @@ msgstr ""
#: templates/js/translated/order.js:2821 templates/js/translated/order.js:3143
#: templates/js/translated/order.js:3231 templates/js/translated/order.js:3320
#: templates/js/translated/order.js:3454 templates/js/translated/order.js:3965
-#: templates/js/translated/part.js:967 templates/js/translated/part.js:1969
-#: templates/js/translated/part.js:2200 templates/js/translated/part.js:2234
-#: templates/js/translated/part.js:2312 templates/js/translated/stock.js:403
-#: templates/js/translated/stock.js:557 templates/js/translated/stock.js:727
-#: templates/js/translated/stock.js:2498 templates/js/translated/stock.js:2583
+#: templates/js/translated/part.js:1011 templates/js/translated/part.js:2065
+#: templates/js/translated/part.js:2296 templates/js/translated/part.js:2330
+#: templates/js/translated/part.js:2408 templates/js/translated/stock.js:402
+#: templates/js/translated/stock.js:556 templates/js/translated/stock.js:726
+#: templates/js/translated/stock.js:2508 templates/js/translated/stock.js:2593
msgid "Quantity"
msgstr ""
-#: build/models.py:1296
+#: build/models.py:1299
msgid "Stock quantity to allocate to build"
msgstr ""
-#: build/models.py:1304
+#: build/models.py:1307
msgid "Install into"
msgstr ""
-#: build/models.py:1305
+#: build/models.py:1308
msgid "Destination stock item"
msgstr ""
@@ -982,9 +981,9 @@ msgstr ""
msgid "Enter quantity for build output"
msgstr ""
-#: build/serializers.py:198 build/serializers.py:623 order/models.py:363
-#: order/serializers.py:280 order/serializers.py:435 part/serializers.py:512
-#: part/serializers.py:956 stock/models.py:470 stock/models.py:1239
+#: build/serializers.py:198 build/serializers.py:623 order/models.py:368
+#: order/serializers.py:280 order/serializers.py:435 part/serializers.py:514
+#: part/serializers.py:958 stock/models.py:470 stock/models.py:1239
#: stock/serializers.py:288
msgid "Quantity must be greater than zero"
msgstr ""
@@ -997,9 +996,9 @@ msgstr ""
msgid "Integer quantity required, as the bill of materials contains trackable parts"
msgstr ""
-#: build/serializers.py:222 order/serializers.py:448 order/serializers.py:1138
+#: build/serializers.py:222 order/serializers.py:448 order/serializers.py:1140
#: stock/serializers.py:297 templates/js/translated/order.js:1186
-#: templates/js/translated/stock.js:238 templates/js/translated/stock.js:404
+#: templates/js/translated/stock.js:237 templates/js/translated/stock.js:403
msgid "Serial Numbers"
msgstr ""
@@ -1015,7 +1014,7 @@ msgstr ""
msgid "Automatically allocate required items with matching serial numbers"
msgstr ""
-#: build/serializers.py:268 stock/api.py:552
+#: build/serializers.py:268 stock/api.py:553
msgid "The following serial numbers already exist"
msgstr ""
@@ -1025,16 +1024,16 @@ msgstr ""
#: build/serializers.py:356 order/serializers.py:421 order/serializers.py:525
#: stock/serializers.py:308 stock/serializers.py:439 stock/serializers.py:481
-#: stock/serializers.py:864 stock/serializers.py:1097
+#: stock/serializers.py:851 stock/serializers.py:1084
#: stock/templates/stock/item_base.html:390
#: templates/js/translated/barcode.js:436
#: templates/js/translated/barcode.js:618 templates/js/translated/build.js:750
#: templates/js/translated/build.js:1685 templates/js/translated/order.js:1213
#: templates/js/translated/order.js:3136 templates/js/translated/order.js:3239
#: templates/js/translated/order.js:3247 templates/js/translated/order.js:3328
-#: templates/js/translated/part.js:180 templates/js/translated/stock.js:533
-#: templates/js/translated/stock.js:698 templates/js/translated/stock.js:905
-#: templates/js/translated/stock.js:1787 templates/js/translated/stock.js:2390
+#: templates/js/translated/part.js:180 templates/js/translated/stock.js:532
+#: templates/js/translated/stock.js:697 templates/js/translated/stock.js:904
+#: templates/js/translated/stock.js:1797 templates/js/translated/stock.js:2400
msgid "Location"
msgstr ""
@@ -1043,12 +1042,12 @@ msgid "Location for completed build outputs"
msgstr ""
#: build/serializers.py:363 build/templates/build/build_base.html:142
-#: build/templates/build/detail.html:62 order/models.py:654
+#: build/templates/build/detail.html:62 order/models.py:670
#: order/serializers.py:458 stock/templates/stock/item_base.html:423
#: templates/js/translated/barcode.js:182 templates/js/translated/build.js:2510
#: templates/js/translated/order.js:1320 templates/js/translated/order.js:1660
-#: templates/js/translated/order.js:2481 templates/js/translated/stock.js:1762
-#: templates/js/translated/stock.js:2467 templates/js/translated/stock.js:2599
+#: templates/js/translated/order.js:2481 templates/js/translated/stock.js:1772
+#: templates/js/translated/stock.js:2477 templates/js/translated/stock.js:2609
msgid "Status"
msgstr ""
@@ -1108,8 +1107,8 @@ msgstr ""
msgid "No build outputs have been created for this build order"
msgstr ""
-#: build/serializers.py:535 build/serializers.py:580 part/models.py:2679
-#: part/models.py:2813
+#: build/serializers.py:535 build/serializers.py:580 part/models.py:2667
+#: part/models.py:2801
msgid "BOM Item"
msgstr ""
@@ -1125,11 +1124,11 @@ msgstr ""
msgid "bom_item.part must point to the same part as the build order"
msgstr ""
-#: build/serializers.py:609 stock/serializers.py:716
+#: build/serializers.py:609 stock/serializers.py:703
msgid "Item must be in stock"
msgstr ""
-#: build/serializers.py:667 order/serializers.py:1052
+#: build/serializers.py:667 order/serializers.py:1054
#, python-brace-format
msgid "Available quantity ({q}) exceeded"
msgstr ""
@@ -1146,7 +1145,7 @@ msgstr ""
msgid "This stock item has already been allocated to this build output"
msgstr ""
-#: build/serializers.py:708 order/serializers.py:1298
+#: build/serializers.py:708 order/serializers.py:1300
msgid "Allocation items must be provided"
msgstr ""
@@ -1178,10 +1177,19 @@ msgstr ""
msgid "Allow allocation of substitute parts"
msgstr ""
-#: build/tasks.py:96
+#: build/tasks.py:100
msgid "Stock required for build order"
msgstr ""
+#: build/tasks.py:118
+msgid "Overdue Build Order"
+msgstr ""
+
+#: build/tasks.py:123
+#, python-brace-format
+msgid "Build order {bo} is now overdue"
+msgstr ""
+
#: build/templates/build/build_base.html:39
#: order/templates/order/order_base.html:28
#: order/templates/order/sales_order_base.html:38
@@ -1244,13 +1252,13 @@ msgid "Stock has not been fully allocated to this Build Order"
msgstr ""
#: build/templates/build/build_base.html:151
-#: build/templates/build/detail.html:131 order/models.py:922
+#: build/templates/build/detail.html:131 order/models.py:938
#: order/templates/order/order_base.html:162
#: order/templates/order/sales_order_base.html:164
#: report/templates/report/inventree_build_order_base.html:126
#: templates/js/translated/build.js:2550 templates/js/translated/order.js:1677
#: templates/js/translated/order.js:1987 templates/js/translated/order.js:2497
-#: templates/js/translated/order.js:3517 templates/js/translated/part.js:971
+#: templates/js/translated/order.js:3517 templates/js/translated/part.js:1015
msgid "Target Date"
msgstr ""
@@ -1277,13 +1285,14 @@ msgid "Completed"
msgstr ""
#: build/templates/build/build_base.html:176
-#: build/templates/build/detail.html:94 order/models.py:1100
-#: order/models.py:1185 order/models.py:1320
+#: build/templates/build/detail.html:94 order/models.py:1116
+#: order/models.py:1201 order/models.py:1336
#: order/templates/order/sales_order_base.html:9
#: order/templates/order/sales_order_base.html:28
#: report/templates/report/inventree_build_order_base.html:136
#: report/templates/report/inventree_so_report.html:77
#: stock/templates/stock/item_base.html:370
+#: templates/email/overdue_sales_order.html:15
#: templates/js/translated/order.js:2436
msgid "Sales Order"
msgstr ""
@@ -1319,7 +1328,7 @@ msgstr ""
msgid "Stock can be taken from any available location."
msgstr ""
-#: build/templates/build/detail.html:49 order/models.py:1034
+#: build/templates/build/detail.html:49 order/models.py:1050
#: templates/js/translated/order.js:1321 templates/js/translated/order.js:2029
msgid "Destination"
msgstr ""
@@ -1336,8 +1345,8 @@ msgstr ""
#: stock/templates/stock/item_base.html:170
#: templates/js/translated/build.js:1179
#: templates/js/translated/model_renderers.js:112
-#: templates/js/translated/stock.js:971 templates/js/translated/stock.js:1776
-#: templates/js/translated/stock.js:2606
+#: templates/js/translated/stock.js:970 templates/js/translated/stock.js:1786
+#: templates/js/translated/stock.js:2616
#: templates/js/translated/table_filters.js:151
#: templates/js/translated/table_filters.js:242
msgid "Batch"
@@ -1716,7 +1725,7 @@ msgstr ""
msgid "Copy category parameter templates when creating a part"
msgstr ""
-#: common/models.py:820 part/models.py:2372 report/models.py:157
+#: common/models.py:820 part/models.py:2360 report/models.py:157
#: templates/js/translated/table_filters.js:38
#: templates/js/translated/table_filters.js:444
msgid "Template"
@@ -1726,7 +1735,7 @@ msgstr ""
msgid "Parts are templates by default"
msgstr ""
-#: common/models.py:827 part/models.py:884 templates/js/translated/bom.js:1390
+#: common/models.py:827 part/models.py:884 templates/js/translated/bom.js:1384
#: templates/js/translated/table_filters.js:168
#: templates/js/translated/table_filters.js:460
msgid "Assembly"
@@ -1880,7 +1889,7 @@ msgid "Default page size for PDF reports"
msgstr ""
#: common/models.py:968
-msgid "Test Reports"
+msgid "Enable Test Reports"
msgstr ""
#: common/models.py:969
@@ -1888,568 +1897,576 @@ msgid "Enable generation of test reports"
msgstr ""
#: common/models.py:975
-msgid "Batch Code Template"
+msgid "Attach Test Reports"
msgstr ""
#: common/models.py:976
-msgid "Template for generating default batch codes for stock items"
-msgstr ""
-
-#: common/models.py:981
-msgid "Stock Expiry"
+msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item"
msgstr ""
#: common/models.py:982
-msgid "Enable stock expiry functionality"
+msgid "Batch Code Template"
+msgstr ""
+
+#: common/models.py:983
+msgid "Template for generating default batch codes for stock items"
msgstr ""
#: common/models.py:988
-msgid "Sell Expired Stock"
+msgid "Stock Expiry"
msgstr ""
#: common/models.py:989
-msgid "Allow sale of expired stock"
+msgid "Enable stock expiry functionality"
msgstr ""
#: common/models.py:995
-msgid "Stock Stale Time"
+msgid "Sell Expired Stock"
msgstr ""
#: common/models.py:996
-msgid "Number of days stock items are considered stale before expiring"
+msgid "Allow sale of expired stock"
msgstr ""
-#: common/models.py:998
-msgid "days"
+#: common/models.py:1002
+msgid "Stock Stale Time"
msgstr ""
#: common/models.py:1003
-msgid "Build Expired Stock"
+msgid "Number of days stock items are considered stale before expiring"
msgstr ""
-#: common/models.py:1004
-msgid "Allow building with expired stock"
+#: common/models.py:1005
+msgid "days"
msgstr ""
#: common/models.py:1010
-msgid "Stock Ownership Control"
+msgid "Build Expired Stock"
msgstr ""
#: common/models.py:1011
-msgid "Enable ownership control over stock locations and items"
+msgid "Allow building with expired stock"
msgstr ""
#: common/models.py:1017
-msgid "Build Order Reference Prefix"
+msgid "Stock Ownership Control"
msgstr ""
#: common/models.py:1018
-msgid "Prefix value for build order reference"
-msgstr ""
-
-#: common/models.py:1023
-msgid "Build Order Reference Regex"
+msgid "Enable ownership control over stock locations and items"
msgstr ""
#: common/models.py:1024
+msgid "Build Order Reference Prefix"
+msgstr ""
+
+#: common/models.py:1025
+msgid "Prefix value for build order reference"
+msgstr ""
+
+#: common/models.py:1030
+msgid "Build Order Reference Regex"
+msgstr ""
+
+#: common/models.py:1031
msgid "Regular expression pattern for matching build order reference"
msgstr ""
-#: common/models.py:1028
+#: common/models.py:1035
msgid "Sales Order Reference Prefix"
msgstr ""
-#: common/models.py:1029
+#: common/models.py:1036
msgid "Prefix value for sales order reference"
msgstr ""
-#: common/models.py:1034
+#: common/models.py:1041
msgid "Sales Order Default Shipment"
msgstr ""
-#: common/models.py:1035
+#: common/models.py:1042
msgid "Enable creation of default shipment with sales orders"
msgstr ""
-#: common/models.py:1041
+#: common/models.py:1048
msgid "Purchase Order Reference Prefix"
msgstr ""
-#: common/models.py:1042
+#: common/models.py:1049
msgid "Prefix value for purchase order reference"
msgstr ""
-#: common/models.py:1048
+#: common/models.py:1055
msgid "Enable password forgot"
msgstr ""
-#: common/models.py:1049
+#: common/models.py:1056
msgid "Enable password forgot function on the login pages"
msgstr ""
-#: common/models.py:1055
+#: common/models.py:1062
msgid "Enable registration"
msgstr ""
-#: common/models.py:1056
+#: common/models.py:1063
msgid "Enable self-registration for users on the login pages"
msgstr ""
-#: common/models.py:1062
+#: common/models.py:1069
msgid "Enable SSO"
msgstr ""
-#: common/models.py:1063
+#: common/models.py:1070
msgid "Enable SSO on the login pages"
msgstr ""
-#: common/models.py:1069
+#: common/models.py:1076
msgid "Email required"
msgstr ""
-#: common/models.py:1070
+#: common/models.py:1077
msgid "Require user to supply mail on signup"
msgstr ""
-#: common/models.py:1076
+#: common/models.py:1083
msgid "Auto-fill SSO users"
msgstr ""
-#: common/models.py:1077
+#: common/models.py:1084
msgid "Automatically fill out user-details from SSO account-data"
msgstr ""
-#: common/models.py:1083
+#: common/models.py:1090
msgid "Mail twice"
msgstr ""
-#: common/models.py:1084
+#: common/models.py:1091
msgid "On signup ask users twice for their mail"
msgstr ""
-#: common/models.py:1090
+#: common/models.py:1097
msgid "Password twice"
msgstr ""
-#: common/models.py:1091
+#: common/models.py:1098
msgid "On signup ask users twice for their password"
msgstr ""
-#: common/models.py:1097
+#: common/models.py:1104
msgid "Group on signup"
msgstr ""
-#: common/models.py:1098
+#: common/models.py:1105
msgid "Group to which new users are assigned on registration"
msgstr ""
-#: common/models.py:1104
+#: common/models.py:1111
msgid "Enforce MFA"
msgstr ""
-#: common/models.py:1105
+#: common/models.py:1112
msgid "Users must use multifactor security."
msgstr ""
-#: common/models.py:1111
+#: common/models.py:1118
msgid "Check plugins on startup"
msgstr ""
-#: common/models.py:1112
+#: common/models.py:1119
msgid "Check that all plugins are installed on startup - enable in container enviroments"
msgstr ""
-#: common/models.py:1120
+#: common/models.py:1127
msgid "Enable URL integration"
msgstr ""
-#: common/models.py:1121
+#: common/models.py:1128
msgid "Enable plugins to add URL routes"
msgstr ""
-#: common/models.py:1128
+#: common/models.py:1135
msgid "Enable navigation integration"
msgstr ""
-#: common/models.py:1129
+#: common/models.py:1136
msgid "Enable plugins to integrate into navigation"
msgstr ""
-#: common/models.py:1136
+#: common/models.py:1143
msgid "Enable app integration"
msgstr ""
-#: common/models.py:1137
+#: common/models.py:1144
msgid "Enable plugins to add apps"
msgstr ""
-#: common/models.py:1144
+#: common/models.py:1151
msgid "Enable schedule integration"
msgstr ""
-#: common/models.py:1145
+#: common/models.py:1152
msgid "Enable plugins to run scheduled tasks"
msgstr ""
-#: common/models.py:1152
+#: common/models.py:1159
msgid "Enable event integration"
msgstr ""
-#: common/models.py:1153
+#: common/models.py:1160
msgid "Enable plugins to respond to internal events"
msgstr ""
-#: common/models.py:1170 common/models.py:1492
+#: common/models.py:1177 common/models.py:1499
msgid "Settings key (must be unique - case insensitive"
msgstr ""
-#: common/models.py:1192
+#: common/models.py:1199
msgid "Show subscribed parts"
msgstr ""
-#: common/models.py:1193
+#: common/models.py:1200
msgid "Show subscribed parts on the homepage"
msgstr ""
-#: common/models.py:1199
+#: common/models.py:1206
msgid "Show subscribed categories"
msgstr ""
-#: common/models.py:1200
+#: common/models.py:1207
msgid "Show subscribed part categories on the homepage"
msgstr ""
-#: common/models.py:1206
+#: common/models.py:1213
msgid "Show latest parts"
msgstr ""
-#: common/models.py:1207
+#: common/models.py:1214
msgid "Show latest parts on the homepage"
msgstr ""
-#: common/models.py:1213
+#: common/models.py:1220
msgid "Recent Part Count"
msgstr ""
-#: common/models.py:1214
+#: common/models.py:1221
msgid "Number of recent parts to display on index page"
msgstr ""
-#: common/models.py:1220
+#: common/models.py:1227
msgid "Show unvalidated BOMs"
msgstr ""
-#: common/models.py:1221
+#: common/models.py:1228
msgid "Show BOMs that await validation on the homepage"
msgstr ""
-#: common/models.py:1227
+#: common/models.py:1234
msgid "Show recent stock changes"
msgstr ""
-#: common/models.py:1228
+#: common/models.py:1235
msgid "Show recently changed stock items on the homepage"
msgstr ""
-#: common/models.py:1234
+#: common/models.py:1241
msgid "Recent Stock Count"
msgstr ""
-#: common/models.py:1235
+#: common/models.py:1242
msgid "Number of recent stock items to display on index page"
msgstr ""
-#: common/models.py:1241
+#: common/models.py:1248
msgid "Show low stock"
msgstr ""
-#: common/models.py:1242
+#: common/models.py:1249
msgid "Show low stock items on the homepage"
msgstr ""
-#: common/models.py:1248
+#: common/models.py:1255
msgid "Show depleted stock"
msgstr ""
-#: common/models.py:1249
+#: common/models.py:1256
msgid "Show depleted stock items on the homepage"
msgstr ""
-#: common/models.py:1255
+#: common/models.py:1262
msgid "Show needed stock"
msgstr ""
-#: common/models.py:1256
+#: common/models.py:1263
msgid "Show stock items needed for builds on the homepage"
msgstr ""
-#: common/models.py:1262
+#: common/models.py:1269
msgid "Show expired stock"
msgstr ""
-#: common/models.py:1263
+#: common/models.py:1270
msgid "Show expired stock items on the homepage"
msgstr ""
-#: common/models.py:1269
+#: common/models.py:1276
msgid "Show stale stock"
msgstr ""
-#: common/models.py:1270
+#: common/models.py:1277
msgid "Show stale stock items on the homepage"
msgstr ""
-#: common/models.py:1276
+#: common/models.py:1283
msgid "Show pending builds"
msgstr ""
-#: common/models.py:1277
+#: common/models.py:1284
msgid "Show pending builds on the homepage"
msgstr ""
-#: common/models.py:1283
+#: common/models.py:1290
msgid "Show overdue builds"
msgstr ""
-#: common/models.py:1284
+#: common/models.py:1291
msgid "Show overdue builds on the homepage"
msgstr ""
-#: common/models.py:1290
+#: common/models.py:1297
msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:1291
+#: common/models.py:1298
msgid "Show outstanding POs on the homepage"
msgstr ""
-#: common/models.py:1297
+#: common/models.py:1304
msgid "Show overdue POs"
msgstr ""
-#: common/models.py:1298
+#: common/models.py:1305
msgid "Show overdue POs on the homepage"
msgstr ""
-#: common/models.py:1304
+#: common/models.py:1311
msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:1305
+#: common/models.py:1312
msgid "Show outstanding SOs on the homepage"
msgstr ""
-#: common/models.py:1311
+#: common/models.py:1318
msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:1312
+#: common/models.py:1319
msgid "Show overdue SOs on the homepage"
msgstr ""
-#: common/models.py:1317
+#: common/models.py:1324
msgid "Enable label printing"
msgstr ""
-#: common/models.py:1318
+#: common/models.py:1325
msgid "Enable label printing from the web interface"
msgstr ""
-#: common/models.py:1324
+#: common/models.py:1331
msgid "Inline label display"
msgstr ""
-#: common/models.py:1325
+#: common/models.py:1332
msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:1331
+#: common/models.py:1338
msgid "Inline report display"
msgstr ""
-#: common/models.py:1332
+#: common/models.py:1339
msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:1338
+#: common/models.py:1345
msgid "Search Parts"
msgstr ""
-#: common/models.py:1339
+#: common/models.py:1346
msgid "Display parts in search preview window"
msgstr ""
-#: common/models.py:1345
+#: common/models.py:1352
msgid "Seach Supplier Parts"
msgstr ""
-#: common/models.py:1346
+#: common/models.py:1353
msgid "Display supplier parts in search preview window"
msgstr ""
-#: common/models.py:1352
+#: common/models.py:1359
msgid "Search Manufacturer Parts"
msgstr ""
-#: common/models.py:1353
+#: common/models.py:1360
msgid "Display manufacturer parts in search preview window"
msgstr ""
-#: common/models.py:1359
+#: common/models.py:1366
msgid "Hide Inactive Parts"
msgstr ""
-#: common/models.py:1360
+#: common/models.py:1367
msgid "Excluded inactive parts from search preview window"
msgstr ""
-#: common/models.py:1366
+#: common/models.py:1373
msgid "Search Categories"
msgstr ""
-#: common/models.py:1367
+#: common/models.py:1374
msgid "Display part categories in search preview window"
msgstr ""
-#: common/models.py:1373
+#: common/models.py:1380
msgid "Search Stock"
msgstr ""
-#: common/models.py:1374
+#: common/models.py:1381
msgid "Display stock items in search preview window"
msgstr ""
-#: common/models.py:1380
+#: common/models.py:1387
msgid "Hide Unavailable Stock Items"
msgstr ""
-#: common/models.py:1381
+#: common/models.py:1388
msgid "Exclude stock items which are not available from the search preview window"
msgstr ""
-#: common/models.py:1387
+#: common/models.py:1394
msgid "Search Locations"
msgstr ""
-#: common/models.py:1388
+#: common/models.py:1395
msgid "Display stock locations in search preview window"
msgstr ""
-#: common/models.py:1394
+#: common/models.py:1401
msgid "Search Companies"
msgstr ""
-#: common/models.py:1395
+#: common/models.py:1402
msgid "Display companies in search preview window"
msgstr ""
-#: common/models.py:1401
+#: common/models.py:1408
msgid "Search Purchase Orders"
msgstr ""
-#: common/models.py:1402
+#: common/models.py:1409
msgid "Display purchase orders in search preview window"
msgstr ""
-#: common/models.py:1408
+#: common/models.py:1415
msgid "Exclude Inactive Purchase Orders"
msgstr ""
-#: common/models.py:1409
+#: common/models.py:1416
msgid "Exclude inactive purchase orders from search preview window"
msgstr ""
-#: common/models.py:1415
+#: common/models.py:1422
msgid "Search Sales Orders"
msgstr ""
-#: common/models.py:1416
+#: common/models.py:1423
msgid "Display sales orders in search preview window"
msgstr ""
-#: common/models.py:1422
+#: common/models.py:1429
msgid "Exclude Inactive Sales Orders"
msgstr ""
-#: common/models.py:1423
+#: common/models.py:1430
msgid "Exclude inactive sales orders from search preview window"
msgstr ""
-#: common/models.py:1429
+#: common/models.py:1436
msgid "Search Preview Results"
msgstr ""
-#: common/models.py:1430
+#: common/models.py:1437
msgid "Number of results to show in each section of the search preview window"
msgstr ""
-#: common/models.py:1436
+#: common/models.py:1443
msgid "Show Quantity in Forms"
msgstr ""
-#: common/models.py:1437
+#: common/models.py:1444
msgid "Display available part quantity in some forms"
msgstr ""
-#: common/models.py:1443
+#: common/models.py:1450
msgid "Escape Key Closes Forms"
msgstr ""
-#: common/models.py:1444
+#: common/models.py:1451
msgid "Use the escape key to close modal forms"
msgstr ""
-#: common/models.py:1450
+#: common/models.py:1457
msgid "Fixed Navbar"
msgstr ""
-#: common/models.py:1451
+#: common/models.py:1458
msgid "The navbar position is fixed to the top of the screen"
msgstr ""
-#: common/models.py:1457
+#: common/models.py:1464
msgid "Date Format"
msgstr ""
-#: common/models.py:1458
+#: common/models.py:1465
msgid "Preferred format for displaying dates"
msgstr ""
-#: common/models.py:1472 part/templates/part/detail.html:39
+#: common/models.py:1479 part/templates/part/detail.html:39
msgid "Part Scheduling"
msgstr ""
-#: common/models.py:1473
+#: common/models.py:1480
msgid "Display part scheduling information"
msgstr ""
-#: common/models.py:1537 company/forms.py:37
+#: common/models.py:1544 company/forms.py:37
msgid "Price break quantity"
msgstr ""
-#: common/models.py:1544 company/serializers.py:288
-#: company/templates/company/supplier_part.html:263 order/models.py:949
-#: templates/js/translated/part.js:998 templates/js/translated/part.js:1974
+#: common/models.py:1551 company/serializers.py:290
+#: company/templates/company/supplier_part.html:263 order/models.py:965
+#: templates/js/translated/part.js:1042 templates/js/translated/part.js:2070
msgid "Price"
msgstr ""
-#: common/models.py:1545
+#: common/models.py:1552
msgid "Unit price at specified quantity"
msgstr ""
-#: common/models.py:1705 common/models.py:1883
+#: common/models.py:1712 common/models.py:1890
msgid "Endpoint"
msgstr ""
-#: common/models.py:1706
+#: common/models.py:1713
msgid "Endpoint at which this webhook is received"
msgstr ""
-#: common/models.py:1715
+#: common/models.py:1722
msgid "Name for this webhook"
msgstr ""
-#: common/models.py:1720 part/models.py:911 plugin/models.py:99
+#: common/models.py:1727 part/models.py:911 plugin/models.py:99
#: templates/js/translated/table_filters.js:34
#: templates/js/translated/table_filters.js:96
#: templates/js/translated/table_filters.js:308
@@ -2457,79 +2474,89 @@ msgstr ""
msgid "Active"
msgstr ""
-#: common/models.py:1721
+#: common/models.py:1728
msgid "Is this webhook active"
msgstr ""
-#: common/models.py:1735
+#: common/models.py:1742
msgid "Token"
msgstr ""
-#: common/models.py:1736
+#: common/models.py:1743
msgid "Token for access"
msgstr ""
-#: common/models.py:1743
+#: common/models.py:1750
msgid "Secret"
msgstr ""
-#: common/models.py:1744
+#: common/models.py:1751
msgid "Shared secret for HMAC"
msgstr ""
-#: common/models.py:1850
+#: common/models.py:1857
msgid "Message ID"
msgstr ""
-#: common/models.py:1851
+#: common/models.py:1858
msgid "Unique identifier for this message"
msgstr ""
-#: common/models.py:1859
+#: common/models.py:1866
msgid "Host"
msgstr ""
-#: common/models.py:1860
+#: common/models.py:1867
msgid "Host from which this message was received"
msgstr ""
-#: common/models.py:1867
+#: common/models.py:1874
msgid "Header"
msgstr ""
-#: common/models.py:1868
+#: common/models.py:1875
msgid "Header of this message"
msgstr ""
-#: common/models.py:1874
+#: common/models.py:1881
msgid "Body"
msgstr ""
-#: common/models.py:1875
+#: common/models.py:1882
msgid "Body of this message"
msgstr ""
-#: common/models.py:1884
+#: common/models.py:1891
msgid "Endpoint on which this message was received"
msgstr ""
-#: common/models.py:1889
+#: common/models.py:1896
msgid "Worked on"
msgstr ""
-#: common/models.py:1890
+#: common/models.py:1897
msgid "Was the work on this message finished?"
msgstr ""
+#: common/notifications.py:292
+#, python-brace-format
+msgid "New {verbose_name}"
+msgstr ""
+
+#: common/notifications.py:294
+#, python-brace-format
+msgid "A new {verbose_name} has been created and ,assigned to you"
+msgstr ""
+
#: common/views.py:87 order/templates/order/purchase_order_detail.html:23
-#: order/views.py:102 part/views.py:191
+#: order/views.py:102 part/views.py:116
#: templates/patterns/wizard/upload.html:37
msgid "Upload File"
msgstr ""
#: common/views.py:88 order/views.py:103
#: part/templates/part/import_wizard/ajax_match_fields.html:45
-#: part/views.py:192 templates/patterns/wizard/match_fields.html:51
+#: part/views.py:117 templates/patterns/wizard/match_fields.html:51
msgid "Match Fields"
msgstr ""
@@ -2545,19 +2572,19 @@ msgstr ""
msgid "Parts imported"
msgstr ""
-#: common/views.py:507 order/templates/order/order_wizard/match_parts.html:19
+#: common/views.py:511 order/templates/order/order_wizard/match_parts.html:19
#: part/templates/part/import_wizard/match_references.html:19
#: templates/patterns/wizard/match_fields.html:26
#: templates/patterns/wizard/upload.html:35
msgid "Previous Step"
msgstr ""
-#: company/forms.py:16 part/forms.py:21
+#: company/forms.py:16 part/forms.py:18
#: templates/InvenTree/settings/mixins/urls.html:14
msgid "URL"
msgstr ""
-#: company/forms.py:17 part/forms.py:22
+#: company/forms.py:17 part/forms.py:19
msgid "Image URL"
msgstr ""
@@ -2571,7 +2598,7 @@ msgstr ""
#: company/models.py:104 company/templates/company/company_base.html:100
#: templates/InvenTree/settings/plugin_settings.html:55
-#: templates/js/translated/company.js:405
+#: templates/js/translated/company.js:399
msgid "Website"
msgstr ""
@@ -2644,9 +2671,9 @@ msgstr ""
msgid "Does this company manufacture parts?"
msgstr ""
-#: company/models.py:144 company/serializers.py:294
-#: company/templates/company/company_base.html:106 part/serializers.py:137
-#: part/serializers.py:168 stock/serializers.py:162
+#: company/models.py:144 company/serializers.py:296
+#: company/templates/company/company_base.html:106 part/serializers.py:139
+#: part/serializers.py:170 stock/serializers.py:162
msgid "Currency"
msgstr ""
@@ -2667,10 +2694,10 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:90
#: company/templates/company/supplier_part.html:103
#: stock/templates/stock/item_base.html:212
-#: templates/js/translated/company.js:389
-#: templates/js/translated/company.js:488
-#: templates/js/translated/company.js:632
-#: templates/js/translated/company.js:917 templates/js/translated/part.js:235
+#: templates/js/translated/company.js:383
+#: templates/js/translated/company.js:484
+#: templates/js/translated/company.js:617
+#: templates/js/translated/company.js:902 templates/js/translated/part.js:235
#: templates/js/translated/table_filters.js:411
msgid "Manufacturer"
msgstr ""
@@ -2681,11 +2708,11 @@ msgstr ""
#: company/models.py:266 company/templates/company/manufacturer_part.html:101
#: company/templates/company/supplier_part.html:111
-#: templates/js/translated/company.js:255
-#: templates/js/translated/company.js:487
-#: templates/js/translated/company.js:648
-#: templates/js/translated/company.js:935 templates/js/translated/order.js:1907
-#: templates/js/translated/part.js:246 templates/js/translated/part.js:956
+#: templates/js/translated/company.js:256
+#: templates/js/translated/company.js:483
+#: templates/js/translated/company.js:633
+#: templates/js/translated/company.js:920 templates/js/translated/order.js:1907
+#: templates/js/translated/part.js:246 templates/js/translated/part.js:1000
msgid "MPN"
msgstr ""
@@ -2714,9 +2741,9 @@ msgstr ""
#: company/models.py:361
#: report/templates/report/inventree_test_report_base.html:95
-#: stock/models.py:2080 templates/js/translated/company.js:540
-#: templates/js/translated/company.js:763 templates/js/translated/part.js:776
-#: templates/js/translated/stock.js:1294
+#: stock/models.py:2084 templates/js/translated/company.js:531
+#: templates/js/translated/company.js:748 templates/js/translated/part.js:820
+#: templates/js/translated/stock.js:1304
msgid "Value"
msgstr ""
@@ -2724,10 +2751,10 @@ msgstr ""
msgid "Parameter value"
msgstr ""
-#: company/models.py:368 part/models.py:878 part/models.py:2339
+#: company/models.py:368 part/models.py:878 part/models.py:2327
#: part/templates/part/part_base.html:280
#: templates/InvenTree/settings/settings.html:351
-#: templates/js/translated/company.js:769 templates/js/translated/part.js:782
+#: templates/js/translated/company.js:754 templates/js/translated/part.js:826
msgid "Units"
msgstr ""
@@ -2740,13 +2767,14 @@ msgid "Linked manufacturer part must reference the same base part"
msgstr ""
#: company/models.py:487 company/templates/company/company_base.html:81
-#: company/templates/company/supplier_part.html:87 order/models.py:303
+#: company/templates/company/supplier_part.html:87 order/models.py:308
#: order/templates/order/order_base.html:112 part/bom.py:237 part/bom.py:265
#: stock/templates/stock/item_base.html:229
-#: templates/js/translated/company.js:254
-#: templates/js/translated/company.js:393
-#: templates/js/translated/company.js:891 templates/js/translated/order.js:1643
-#: templates/js/translated/part.js:216 templates/js/translated/part.js:924
+#: templates/email/overdue_purchase_order.html:16
+#: templates/js/translated/company.js:255
+#: templates/js/translated/company.js:387
+#: templates/js/translated/company.js:876 templates/js/translated/order.js:1643
+#: templates/js/translated/part.js:216 templates/js/translated/part.js:968
#: templates/js/translated/table_filters.js:415
msgid "Supplier"
msgstr ""
@@ -2756,9 +2784,9 @@ msgid "Select supplier"
msgstr ""
#: company/models.py:493 company/templates/company/supplier_part.html:97
-#: part/bom.py:238 part/bom.py:266 templates/js/translated/company.js:253
+#: part/bom.py:238 part/bom.py:266 templates/js/translated/company.js:254
#: templates/js/translated/order.js:1894 templates/js/translated/part.js:227
-#: templates/js/translated/part.js:942
+#: templates/js/translated/part.js:986
msgid "SKU"
msgstr ""
@@ -2779,23 +2807,23 @@ msgid "Supplier part description"
msgstr ""
#: company/models.py:518 company/templates/company/supplier_part.html:125
-#: part/models.py:2573 part/templates/part/upload_bom.html:59
+#: part/models.py:2561 part/templates/part/upload_bom.html:59
#: report/templates/report/inventree_po_report.html:92
#: report/templates/report/inventree_so_report.html:93 stock/serializers.py:387
msgid "Note"
msgstr ""
-#: company/models.py:522 part/models.py:1688
+#: company/models.py:522 part/models.py:1683
msgid "base cost"
msgstr ""
-#: company/models.py:522 part/models.py:1688
+#: company/models.py:522 part/models.py:1683
msgid "Minimum charge (e.g. stocking fee)"
msgstr ""
#: company/models.py:524 company/templates/company/supplier_part.html:118
#: stock/models.py:608 stock/templates/stock/item_base.html:245
-#: templates/js/translated/company.js:967 templates/js/translated/stock.js:1912
+#: templates/js/translated/company.js:952 templates/js/translated/stock.js:1922
msgid "Packaging"
msgstr ""
@@ -2803,7 +2831,7 @@ msgstr ""
msgid "Part packaging"
msgstr ""
-#: company/models.py:526 part/models.py:1690
+#: company/models.py:526 part/models.py:1685
msgid "multiple"
msgstr ""
@@ -2825,7 +2853,7 @@ msgstr ""
#: company/templates/company/company_base.html:8
#: company/templates/company/company_base.html:12
-#: templates/InvenTree/search.html:177 templates/js/translated/company.js:378
+#: templates/InvenTree/search.html:177 templates/js/translated/company.js:372
msgid "Company"
msgstr ""
@@ -2843,7 +2871,7 @@ msgid "Edit company information"
msgstr ""
#: company/templates/company/company_base.html:34
-#: templates/js/translated/company.js:321
+#: templates/js/translated/company.js:315
msgid "Edit Company"
msgstr ""
@@ -2866,12 +2894,13 @@ msgstr ""
msgid "Download image from URL"
msgstr ""
-#: company/templates/company/company_base.html:86 order/models.py:649
+#: company/templates/company/company_base.html:86 order/models.py:665
#: order/templates/order/sales_order_base.html:116 stock/models.py:627
-#: stock/models.py:628 stock/serializers.py:758
+#: stock/models.py:628 stock/serializers.py:745
#: stock/templates/stock/item_base.html:401
-#: templates/js/translated/company.js:385 templates/js/translated/order.js:2458
-#: templates/js/translated/stock.js:2431
+#: templates/email/overdue_sales_order.html:16
+#: templates/js/translated/company.js:379 templates/js/translated/order.js:2458
+#: templates/js/translated/stock.js:2441
#: templates/js/translated/table_filters.js:419
msgid "Customer"
msgstr ""
@@ -2999,7 +3028,7 @@ msgid "Supplier List"
msgstr ""
#: company/templates/company/manufacturer_part.html:15 company/views.py:45
-#: part/templates/part/prices.html:170 templates/InvenTree/search.html:179
+#: part/templates/part/prices.html:172 templates/InvenTree/search.html:179
#: templates/navbar.html:49
msgid "Manufacturers"
msgstr ""
@@ -3012,12 +3041,12 @@ msgid "Order part"
msgstr ""
#: company/templates/company/manufacturer_part.html:39
-#: templates/js/translated/company.js:680
+#: templates/js/translated/company.js:665
msgid "Edit manufacturer part"
msgstr ""
#: company/templates/company/manufacturer_part.html:43
-#: templates/js/translated/company.js:681
+#: templates/js/translated/company.js:666
msgid "Delete manufacturer part"
msgstr ""
@@ -3032,7 +3061,7 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:119
#: company/templates/company/supplier_part.html:15 company/views.py:39
-#: part/templates/part/part_sidebar.html:35 part/templates/part/prices.html:166
+#: part/templates/part/part_sidebar.html:35 part/templates/part/prices.html:168
#: templates/InvenTree/search.html:189 templates/navbar.html:48
msgid "Suppliers"
msgstr ""
@@ -3092,18 +3121,18 @@ msgstr ""
#: company/templates/company/supplier_part.html:7
#: company/templates/company/supplier_part.html:24 stock/models.py:592
#: stock/templates/stock/item_base.html:238
-#: templates/js/translated/company.js:907 templates/js/translated/order.js:884
-#: templates/js/translated/stock.js:1869
+#: templates/js/translated/company.js:892 templates/js/translated/order.js:884
+#: templates/js/translated/stock.js:1879
msgid "Supplier Part"
msgstr ""
#: company/templates/company/supplier_part.html:38
-#: templates/js/translated/company.js:980
+#: templates/js/translated/company.js:965
msgid "Edit supplier part"
msgstr ""
#: company/templates/company/supplier_part.html:42
-#: templates/js/translated/company.js:981
+#: templates/js/translated/company.js:966
msgid "Delete supplier part"
msgstr ""
@@ -3123,7 +3152,7 @@ msgstr ""
#: company/templates/company/supplier_part.html:148
#: part/templates/part/detail.html:24 stock/templates/stock/location.html:177
-#: templates/js/translated/stock.js:380
+#: templates/js/translated/stock.js:379
msgid "New Stock Item"
msgstr ""
@@ -3144,7 +3173,7 @@ msgstr ""
#: company/templates/company/supplier_part.html:191
#: company/templates/company/supplier_part.html:305
-#: part/templates/part/prices.html:274 templates/js/translated/part.js:2046
+#: part/templates/part/prices.html:276 templates/js/translated/part.js:2142
msgid "Add Price Break"
msgstr ""
@@ -3153,12 +3182,12 @@ msgid "No price break information found"
msgstr ""
#: company/templates/company/supplier_part.html:231
-#: templates/js/translated/part.js:2056
+#: templates/js/translated/part.js:2152
msgid "Delete Price Break"
msgstr ""
#: company/templates/company/supplier_part.html:245
-#: templates/js/translated/part.js:2070
+#: templates/js/translated/part.js:2166
msgid "Edit Price Break"
msgstr ""
@@ -3180,9 +3209,9 @@ msgstr ""
#: stock/templates/stock/stock_app_base.html:10
#: templates/InvenTree/search.html:151
#: templates/InvenTree/settings/sidebar.html:43
-#: templates/js/translated/bom.js:554 templates/js/translated/part.js:678
-#: templates/js/translated/part.js:1226 templates/js/translated/part.js:1387
-#: templates/js/translated/stock.js:904 templates/js/translated/stock.js:1687
+#: templates/js/translated/bom.js:554 templates/js/translated/part.js:722
+#: templates/js/translated/part.js:1270 templates/js/translated/part.js:1431
+#: templates/js/translated/stock.js:903 templates/js/translated/stock.js:1697
#: templates/navbar.html:31
msgid "Stock"
msgstr ""
@@ -3209,7 +3238,7 @@ msgstr ""
#: stock/templates/stock/location.html:173
#: stock/templates/stock/location_sidebar.html:7
#: templates/InvenTree/search.html:153 templates/js/translated/search.js:223
-#: templates/js/translated/stock.js:2307 users/models.py:39
+#: templates/js/translated/stock.js:2317 users/models.py:39
msgid "Stock Items"
msgstr ""
@@ -3238,20 +3267,20 @@ msgstr ""
msgid "New Company"
msgstr ""
-#: company/views.py:112 part/views.py:576
+#: company/views.py:112 part/views.py:501
msgid "Download Image"
msgstr ""
-#: company/views.py:139 part/views.py:606
+#: company/views.py:139 part/views.py:531
msgid "Image size exceeds maximum allowable size for download"
msgstr ""
-#: company/views.py:146 part/views.py:613
+#: company/views.py:146 part/views.py:538
#, python-brace-format
msgid "Invalid response: {code}"
msgstr ""
-#: company/views.py:155 part/views.py:622
+#: company/views.py:155 part/views.py:547
msgid "Supplied URL is not a valid image file"
msgstr ""
@@ -3320,313 +3349,314 @@ msgstr ""
msgid "Part query filters (comma-separated value of key=value pairs)"
msgstr ""
-#: order/models.py:133
+#: order/models.py:134
msgid "Order description"
msgstr ""
-#: order/models.py:135 order/models.py:1236
+#: order/models.py:136 order/models.py:1252
msgid "Link to external page"
msgstr ""
-#: order/models.py:143
+#: order/models.py:144
msgid "Created By"
msgstr ""
-#: order/models.py:150
+#: order/models.py:151
msgid "User or group responsible for this order"
msgstr ""
-#: order/models.py:155
+#: order/models.py:156
msgid "Order notes"
msgstr ""
-#: order/models.py:289 order/models.py:639
+#: order/models.py:294 order/models.py:655
msgid "Order reference"
msgstr ""
-#: order/models.py:294 order/models.py:654
+#: order/models.py:299 order/models.py:670
msgid "Purchase order status"
msgstr ""
-#: order/models.py:304
+#: order/models.py:309
msgid "Company from which the items are being ordered"
msgstr ""
-#: order/models.py:307 order/templates/order/order_base.html:124
+#: order/models.py:312 order/templates/order/order_base.html:124
#: templates/js/translated/order.js:1652
msgid "Supplier Reference"
msgstr ""
-#: order/models.py:307
+#: order/models.py:312
msgid "Supplier order reference code"
msgstr ""
-#: order/models.py:314
+#: order/models.py:319
msgid "received by"
msgstr ""
-#: order/models.py:319
+#: order/models.py:324
msgid "Issue Date"
msgstr ""
-#: order/models.py:320
+#: order/models.py:325
msgid "Date order was issued"
msgstr ""
-#: order/models.py:325
+#: order/models.py:330
msgid "Target Delivery Date"
msgstr ""
-#: order/models.py:326
+#: order/models.py:331
msgid "Expected date for order delivery. Order will be overdue after this date."
msgstr ""
-#: order/models.py:332
+#: order/models.py:337
msgid "Date order was completed"
msgstr ""
-#: order/models.py:368
+#: order/models.py:373
msgid "Part supplier must match PO supplier"
msgstr ""
-#: order/models.py:512
+#: order/models.py:517
msgid "Quantity must be a positive number"
msgstr ""
-#: order/models.py:650
+#: order/models.py:666
msgid "Company to which the items are being sold"
msgstr ""
-#: order/models.py:656
+#: order/models.py:672
msgid "Customer Reference "
msgstr ""
-#: order/models.py:656
+#: order/models.py:672
msgid "Customer order reference code"
msgstr ""
-#: order/models.py:661
+#: order/models.py:677
msgid "Target date for order completion. Order will be overdue after this date."
msgstr ""
-#: order/models.py:664 order/models.py:1190
+#: order/models.py:680 order/models.py:1206
#: templates/js/translated/order.js:2505 templates/js/translated/order.js:2656
msgid "Shipment Date"
msgstr ""
-#: order/models.py:671
+#: order/models.py:687
msgid "shipped by"
msgstr ""
-#: order/models.py:726
+#: order/models.py:742
msgid "Order cannot be completed as no parts have been assigned"
msgstr ""
-#: order/models.py:730
+#: order/models.py:746
msgid "Only a pending order can be marked as complete"
msgstr ""
-#: order/models.py:733
+#: order/models.py:749
msgid "Order cannot be completed as there are incomplete shipments"
msgstr ""
-#: order/models.py:736
+#: order/models.py:752
msgid "Order cannot be completed as there are incomplete line items"
msgstr ""
-#: order/models.py:910
+#: order/models.py:926
msgid "Item quantity"
msgstr ""
-#: order/models.py:916
+#: order/models.py:932
msgid "Line item reference"
msgstr ""
-#: order/models.py:918
+#: order/models.py:934
msgid "Line item notes"
msgstr ""
-#: order/models.py:923
+#: order/models.py:939
msgid "Target shipping date for this line item"
msgstr ""
-#: order/models.py:941
+#: order/models.py:957
msgid "Context"
msgstr ""
-#: order/models.py:942
+#: order/models.py:958
msgid "Additional context for this line"
msgstr ""
-#: order/models.py:950
+#: order/models.py:966
msgid "Unit price"
msgstr ""
-#: order/models.py:980
+#: order/models.py:996
msgid "Supplier part must match supplier"
msgstr ""
-#: order/models.py:988
+#: order/models.py:1004
msgid "deleted"
msgstr ""
-#: order/models.py:994 order/models.py:1074 order/models.py:1099
-#: order/models.py:1184 order/models.py:1320
+#: order/models.py:1010 order/models.py:1090 order/models.py:1115
+#: order/models.py:1200 order/models.py:1336
#: templates/js/translated/order.js:3112
msgid "Order"
msgstr ""
-#: order/models.py:995 order/models.py:1074
+#: order/models.py:1011 order/models.py:1090
#: order/templates/order/order_base.html:9
#: order/templates/order/order_base.html:18
#: report/templates/report/inventree_po_report.html:76
#: stock/templates/stock/item_base.html:184
+#: templates/email/overdue_purchase_order.html:15
#: templates/js/translated/order.js:885 templates/js/translated/order.js:1621
-#: templates/js/translated/part.js:899 templates/js/translated/stock.js:1846
-#: templates/js/translated/stock.js:2412
+#: templates/js/translated/part.js:943 templates/js/translated/stock.js:1856
+#: templates/js/translated/stock.js:2422
msgid "Purchase Order"
msgstr ""
-#: order/models.py:1013
+#: order/models.py:1029
msgid "Supplier part"
msgstr ""
-#: order/models.py:1020 order/templates/order/order_base.html:169
+#: order/models.py:1036 order/templates/order/order_base.html:169
#: templates/js/translated/order.js:1318 templates/js/translated/order.js:2009
-#: templates/js/translated/part.js:993 templates/js/translated/part.js:1020
+#: templates/js/translated/part.js:1037 templates/js/translated/part.js:1064
#: templates/js/translated/table_filters.js:330
msgid "Received"
msgstr ""
-#: order/models.py:1021
+#: order/models.py:1037
msgid "Number of items received"
msgstr ""
-#: order/models.py:1028 part/templates/part/prices.html:179 stock/models.py:722
+#: order/models.py:1044 part/templates/part/prices.html:181 stock/models.py:722
#: stock/serializers.py:153 stock/templates/stock/item_base.html:191
-#: templates/js/translated/stock.js:1900
+#: templates/js/translated/stock.js:1910
msgid "Purchase Price"
msgstr ""
-#: order/models.py:1029
+#: order/models.py:1045
msgid "Unit purchase price"
msgstr ""
-#: order/models.py:1037
+#: order/models.py:1053
msgid "Where does the Purchaser want this item to be stored?"
msgstr ""
-#: order/models.py:1109 part/templates/part/part_pricing.html:112
-#: part/templates/part/prices.html:119 part/templates/part/prices.html:288
+#: order/models.py:1125 part/templates/part/part_pricing.html:115
+#: part/templates/part/prices.html:121 part/templates/part/prices.html:290
msgid "Sale Price"
msgstr ""
-#: order/models.py:1110
+#: order/models.py:1126
msgid "Unit sale price"
msgstr ""
-#: order/models.py:1115
+#: order/models.py:1131
msgid "Shipped quantity"
msgstr ""
-#: order/models.py:1191
+#: order/models.py:1207
msgid "Date of shipment"
msgstr ""
-#: order/models.py:1198
+#: order/models.py:1214
msgid "Checked By"
msgstr ""
-#: order/models.py:1199
+#: order/models.py:1215
msgid "User who checked this shipment"
msgstr ""
-#: order/models.py:1207
+#: order/models.py:1223
msgid "Shipment number"
msgstr ""
-#: order/models.py:1214
+#: order/models.py:1230
msgid "Shipment notes"
msgstr ""
-#: order/models.py:1221
+#: order/models.py:1237
msgid "Tracking Number"
msgstr ""
-#: order/models.py:1222
+#: order/models.py:1238
msgid "Shipment tracking information"
msgstr ""
-#: order/models.py:1229
+#: order/models.py:1245
msgid "Invoice Number"
msgstr ""
-#: order/models.py:1230
+#: order/models.py:1246
msgid "Reference number for associated invoice"
msgstr ""
-#: order/models.py:1248
+#: order/models.py:1264
msgid "Shipment has already been sent"
msgstr ""
-#: order/models.py:1251
+#: order/models.py:1267
msgid "Shipment has no allocated stock items"
msgstr ""
-#: order/models.py:1354 order/models.py:1356
+#: order/models.py:1370 order/models.py:1372
msgid "Stock item has not been assigned"
msgstr ""
-#: order/models.py:1360
+#: order/models.py:1376
msgid "Cannot allocate stock item to a line with a different part"
msgstr ""
-#: order/models.py:1362
+#: order/models.py:1378
msgid "Cannot allocate stock to a line without a part"
msgstr ""
-#: order/models.py:1365
+#: order/models.py:1381
msgid "Allocation quantity cannot exceed stock quantity"
msgstr ""
-#: order/models.py:1369
+#: order/models.py:1385
msgid "StockItem is over-allocated"
msgstr ""
-#: order/models.py:1375 order/serializers.py:1045
+#: order/models.py:1391 order/serializers.py:1047
msgid "Quantity must be 1 for serialized stock item"
msgstr ""
-#: order/models.py:1378
+#: order/models.py:1394
msgid "Sales order does not match shipment"
msgstr ""
-#: order/models.py:1379
+#: order/models.py:1395
msgid "Shipment does not match sales order"
msgstr ""
-#: order/models.py:1387
+#: order/models.py:1403
msgid "Line"
msgstr ""
-#: order/models.py:1395 order/serializers.py:1149 order/serializers.py:1273
+#: order/models.py:1411 order/serializers.py:1151 order/serializers.py:1275
#: templates/js/translated/model_renderers.js:301
msgid "Shipment"
msgstr ""
-#: order/models.py:1396
+#: order/models.py:1412
msgid "Sales order shipment reference"
msgstr ""
-#: order/models.py:1408 templates/InvenTree/notifications/notifications.html:70
+#: order/models.py:1424 templates/InvenTree/notifications/notifications.html:70
msgid "Item"
msgstr ""
-#: order/models.py:1409
+#: order/models.py:1425
msgid "Select stock item to allocate"
msgstr ""
-#: order/models.py:1412
+#: order/models.py:1428
msgid "Enter stock allocation quantity"
msgstr ""
@@ -3662,7 +3692,7 @@ msgstr ""
msgid "Purchase order must match supplier"
msgstr ""
-#: order/serializers.py:406 order/serializers.py:1117
+#: order/serializers.py:406 order/serializers.py:1119
msgid "Line Item"
msgstr ""
@@ -3710,42 +3740,60 @@ msgstr ""
msgid "Supplied barcode values must be unique"
msgstr ""
-#: order/serializers.py:866
+#: order/serializers.py:868
msgid "Sale price currency"
msgstr ""
-#: order/serializers.py:947
+#: order/serializers.py:949
msgid "No shipment details provided"
msgstr ""
-#: order/serializers.py:1006 order/serializers.py:1126
+#: order/serializers.py:1008 order/serializers.py:1128
msgid "Line item is not associated with this order"
msgstr ""
-#: order/serializers.py:1028
+#: order/serializers.py:1030
msgid "Quantity must be positive"
msgstr ""
-#: order/serializers.py:1139
+#: order/serializers.py:1141
msgid "Enter serial numbers to allocate"
msgstr ""
-#: order/serializers.py:1161 order/serializers.py:1281
+#: order/serializers.py:1163 order/serializers.py:1283
msgid "Shipment has already been shipped"
msgstr ""
-#: order/serializers.py:1164 order/serializers.py:1284
+#: order/serializers.py:1166 order/serializers.py:1286
msgid "Shipment is not associated with this order"
msgstr ""
-#: order/serializers.py:1214
+#: order/serializers.py:1216
msgid "No match found for the following serial numbers"
msgstr ""
-#: order/serializers.py:1224
+#: order/serializers.py:1226
msgid "The following serial numbers are already allocated"
msgstr ""
+#: order/tasks.py:26
+msgid "Overdue Purchase Order"
+msgstr ""
+
+#: order/tasks.py:31
+#, python-brace-format
+msgid "Purchase order {po} is now overdue"
+msgstr ""
+
+#: order/tasks.py:88
+msgid "Overdue Sales Order"
+msgstr ""
+
+#: order/tasks.py:93
+#, python-brace-format
+msgid "Sales order {so} is now overdue"
+msgstr ""
+
#: order/templates/order/order_base.html:33
msgid "Print purchase order report"
msgstr ""
@@ -3870,8 +3918,8 @@ msgstr ""
#: templates/js/translated/bom.js:77 templates/js/translated/build.js:427
#: templates/js/translated/build.js:579 templates/js/translated/build.js:1972
#: templates/js/translated/order.js:833 templates/js/translated/order.js:1265
-#: templates/js/translated/order.js:2731 templates/js/translated/stock.js:570
-#: templates/js/translated/stock.js:738
+#: templates/js/translated/order.js:2731 templates/js/translated/stock.js:569
+#: templates/js/translated/stock.js:737
#: templates/patterns/wizard/match_fields.html:70
msgid "Remove row"
msgstr ""
@@ -3990,7 +4038,7 @@ msgid "Pending Shipments"
msgstr ""
#: order/templates/order/sales_order_detail.html:70
-#: templates/attachment_table.html:6 templates/js/translated/bom.js:1053
+#: templates/attachment_table.html:6 templates/js/translated/bom.js:1047
#: templates/js/translated/build.js:1880
msgid "Actions"
msgstr ""
@@ -4021,47 +4069,47 @@ msgstr ""
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr ""
-#: part/api.py:481
+#: part/api.py:482
msgid "Incoming Purchase Order"
msgstr ""
-#: part/api.py:501
+#: part/api.py:502
msgid "Outgoing Sales Order"
msgstr ""
-#: part/api.py:519
+#: part/api.py:520
msgid "Stock produced by Build Order"
msgstr ""
-#: part/api.py:551
+#: part/api.py:552
msgid "Stock required for Build Order"
msgstr ""
-#: part/api.py:637
+#: part/api.py:638
msgid "Valid"
msgstr ""
-#: part/api.py:638
+#: part/api.py:639
msgid "Validate entire Bill of Materials"
msgstr ""
-#: part/api.py:644
+#: part/api.py:645
msgid "This option must be selected"
msgstr ""
-#: part/api.py:1010
+#: part/api.py:1011
msgid "Must be greater than zero"
msgstr ""
-#: part/api.py:1014
+#: part/api.py:1015
msgid "Must be a valid quantity"
msgstr ""
-#: part/api.py:1029
+#: part/api.py:1030
msgid "Specify location for initial part stock"
msgstr ""
-#: part/api.py:1060 part/api.py:1064 part/api.py:1079 part/api.py:1083
+#: part/api.py:1061 part/api.py:1065 part/api.py:1080 part/api.py:1084
msgid "This field is required"
msgstr ""
@@ -4080,17 +4128,13 @@ msgid "Available Stock"
msgstr ""
#: part/bom.py:130 part/templates/part/part_base.html:207
-#: templates/js/translated/part.js:517 templates/js/translated/part.js:537
-#: templates/js/translated/part.js:1229 templates/js/translated/part.js:1401
-#: templates/js/translated/part.js:1417
+#: templates/js/translated/part.js:561 templates/js/translated/part.js:581
+#: templates/js/translated/part.js:1273 templates/js/translated/part.js:1445
+#: templates/js/translated/part.js:1461
msgid "On Order"
msgstr ""
-#: part/forms.py:59
-msgid "Select part category"
-msgstr ""
-
-#: part/forms.py:69
+#: part/forms.py:60
msgid "Input quantity for price calculation"
msgstr ""
@@ -4106,7 +4150,7 @@ msgstr ""
msgid "Default keywords for parts in this category"
msgstr ""
-#: part/models.py:115 part/models.py:2415 part/templates/part/category.html:15
+#: part/models.py:115 part/models.py:2403 part/templates/part/category.html:15
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr ""
@@ -4123,7 +4167,7 @@ msgstr ""
#: part/templates/part/category_sidebar.html:9
#: templates/InvenTree/index.html:85 templates/InvenTree/search.html:82
#: templates/InvenTree/settings/sidebar.html:39
-#: templates/js/translated/part.js:1768 templates/js/translated/search.js:144
+#: templates/js/translated/part.js:1864 templates/js/translated/search.js:144
#: templates/navbar.html:24 users/models.py:37
msgid "Parts"
msgstr ""
@@ -4153,7 +4197,7 @@ msgstr ""
msgid "Duplicate IPN not allowed in part settings"
msgstr ""
-#: part/models.py:738 part/models.py:2469
+#: part/models.py:738 part/models.py:2457
msgid "Part name"
msgstr ""
@@ -4186,12 +4230,11 @@ msgstr ""
msgid "Part keywords to improve visibility in search results"
msgstr ""
-#: part/models.py:776 part/models.py:2171 part/models.py:2414
+#: part/models.py:776 part/models.py:2159 part/models.py:2402
#: part/templates/part/part_base.html:257
-#: part/templates/part/set_category.html:15
#: templates/InvenTree/notifications/notifications.html:65
#: templates/InvenTree/settings/settings.html:231
-#: templates/js/translated/part.js:1369
+#: templates/js/translated/part.js:1413 templates/js/translated/part.js:1639
msgid "Category"
msgstr ""
@@ -4200,8 +4243,8 @@ msgid "Part category"
msgstr ""
#: part/models.py:782 part/templates/part/part_base.html:266
-#: templates/js/translated/part.js:666 templates/js/translated/part.js:1322
-#: templates/js/translated/stock.js:1659
+#: templates/js/translated/part.js:710 templates/js/translated/part.js:1366
+#: templates/js/translated/stock.js:1669
msgid "IPN"
msgstr ""
@@ -4214,7 +4257,7 @@ msgid "Part revision or version number"
msgstr ""
#: part/models.py:790 part/templates/part/part_base.html:273
-#: report/models.py:170 templates/js/translated/part.js:670
+#: report/models.py:170 templates/js/translated/part.js:714
msgid "Revision"
msgstr ""
@@ -4302,317 +4345,321 @@ msgstr ""
msgid "Creation User"
msgstr ""
-#: part/models.py:1690
+#: part/models.py:1685
msgid "Sell multiple"
msgstr ""
-#: part/models.py:2218
+#: part/models.py:2206
msgid "Test templates can only be created for trackable parts"
msgstr ""
-#: part/models.py:2235
+#: part/models.py:2223
msgid "Test with this name already exists for this part"
msgstr ""
-#: part/models.py:2255 templates/js/translated/part.js:1819
-#: templates/js/translated/stock.js:1274
+#: part/models.py:2243 templates/js/translated/part.js:1915
+#: templates/js/translated/stock.js:1284
msgid "Test Name"
msgstr ""
-#: part/models.py:2256
+#: part/models.py:2244
msgid "Enter a name for the test"
msgstr ""
-#: part/models.py:2261
+#: part/models.py:2249
msgid "Test Description"
msgstr ""
-#: part/models.py:2262
+#: part/models.py:2250
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:2267 templates/js/translated/part.js:1828
+#: part/models.py:2255 templates/js/translated/part.js:1924
#: templates/js/translated/table_filters.js:294
msgid "Required"
msgstr ""
-#: part/models.py:2268
+#: part/models.py:2256
msgid "Is this test required to pass?"
msgstr ""
-#: part/models.py:2273 templates/js/translated/part.js:1836
+#: part/models.py:2261 templates/js/translated/part.js:1932
msgid "Requires Value"
msgstr ""
-#: part/models.py:2274
+#: part/models.py:2262
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:2279 templates/js/translated/part.js:1843
+#: part/models.py:2267 templates/js/translated/part.js:1939
msgid "Requires Attachment"
msgstr ""
-#: part/models.py:2280
+#: part/models.py:2268
msgid "Does this test require a file attachment when adding a test result?"
msgstr ""
-#: part/models.py:2288
+#: part/models.py:2276
#, python-brace-format
msgid "Illegal character in template name ({c})"
msgstr ""
-#: part/models.py:2324
+#: part/models.py:2312
msgid "Parameter template name must be unique"
msgstr ""
-#: part/models.py:2332
+#: part/models.py:2320
msgid "Parameter Name"
msgstr ""
-#: part/models.py:2339
+#: part/models.py:2327
msgid "Parameter Units"
msgstr ""
-#: part/models.py:2370
+#: part/models.py:2358
msgid "Parent Part"
msgstr ""
-#: part/models.py:2372 part/models.py:2420 part/models.py:2421
+#: part/models.py:2360 part/models.py:2408 part/models.py:2409
#: templates/InvenTree/settings/settings.html:226
msgid "Parameter Template"
msgstr ""
-#: part/models.py:2374
+#: part/models.py:2362
msgid "Data"
msgstr ""
-#: part/models.py:2374
+#: part/models.py:2362
msgid "Parameter Value"
msgstr ""
-#: part/models.py:2425 templates/InvenTree/settings/settings.html:235
+#: part/models.py:2413 templates/InvenTree/settings/settings.html:235
msgid "Default Value"
msgstr ""
-#: part/models.py:2426
+#: part/models.py:2414
msgid "Default Parameter Value"
msgstr ""
-#: part/models.py:2461
+#: part/models.py:2449
msgid "Part ID or part name"
msgstr ""
-#: part/models.py:2464 templates/js/translated/model_renderers.js:200
+#: part/models.py:2452 templates/js/translated/model_renderers.js:200
msgid "Part ID"
msgstr ""
-#: part/models.py:2465
+#: part/models.py:2453
msgid "Unique part ID value"
msgstr ""
-#: part/models.py:2468
+#: part/models.py:2456
msgid "Part Name"
msgstr ""
-#: part/models.py:2472
+#: part/models.py:2460
msgid "Part IPN"
msgstr ""
-#: part/models.py:2473
+#: part/models.py:2461
msgid "Part IPN value"
msgstr ""
-#: part/models.py:2476
+#: part/models.py:2464
msgid "Level"
msgstr ""
-#: part/models.py:2477
+#: part/models.py:2465
msgid "BOM level"
msgstr ""
-#: part/models.py:2546
+#: part/models.py:2534
msgid "Select parent part"
msgstr ""
-#: part/models.py:2554
+#: part/models.py:2542
msgid "Sub part"
msgstr ""
-#: part/models.py:2555
+#: part/models.py:2543
msgid "Select part to be used in BOM"
msgstr ""
-#: part/models.py:2561
+#: part/models.py:2549
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:2563 part/templates/part/upload_bom.html:58
-#: templates/js/translated/bom.js:877 templates/js/translated/bom.js:971
+#: part/models.py:2551 part/templates/part/upload_bom.html:58
+#: templates/js/translated/bom.js:871 templates/js/translated/bom.js:965
#: templates/js/translated/table_filters.js:92
msgid "Optional"
msgstr ""
-#: part/models.py:2563
+#: part/models.py:2551
msgid "This BOM item is optional"
msgstr ""
-#: part/models.py:2566 part/templates/part/upload_bom.html:55
+#: part/models.py:2554 part/templates/part/upload_bom.html:55
msgid "Overage"
msgstr ""
-#: part/models.py:2567
+#: part/models.py:2555
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr ""
-#: part/models.py:2570
+#: part/models.py:2558
msgid "BOM item reference"
msgstr ""
-#: part/models.py:2573
+#: part/models.py:2561
msgid "BOM item notes"
msgstr ""
-#: part/models.py:2575
+#: part/models.py:2563
msgid "Checksum"
msgstr ""
-#: part/models.py:2575
+#: part/models.py:2563
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:2579 part/templates/part/upload_bom.html:57
-#: templates/js/translated/bom.js:988
+#: part/models.py:2567 part/templates/part/upload_bom.html:57
+#: templates/js/translated/bom.js:982
#: templates/js/translated/table_filters.js:68
#: templates/js/translated/table_filters.js:88
msgid "Inherited"
msgstr ""
-#: part/models.py:2580
+#: part/models.py:2568
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr ""
-#: part/models.py:2585 part/templates/part/upload_bom.html:56
-#: templates/js/translated/bom.js:980
+#: part/models.py:2573 part/templates/part/upload_bom.html:56
+#: templates/js/translated/bom.js:974
msgid "Allow Variants"
msgstr ""
-#: part/models.py:2586
+#: part/models.py:2574
msgid "Stock items for variant parts can be used for this BOM item"
msgstr ""
-#: part/models.py:2664 stock/models.py:460
+#: part/models.py:2652 stock/models.py:460
msgid "Quantity must be integer value for trackable parts"
msgstr ""
-#: part/models.py:2673 part/models.py:2675
+#: part/models.py:2661 part/models.py:2663
msgid "Sub part must be specified"
msgstr ""
-#: part/models.py:2780
+#: part/models.py:2768
msgid "BOM Item Substitute"
msgstr ""
-#: part/models.py:2801
+#: part/models.py:2789
msgid "Substitute part cannot be the same as the master part"
msgstr ""
-#: part/models.py:2814
+#: part/models.py:2802
msgid "Parent BOM item"
msgstr ""
-#: part/models.py:2822
+#: part/models.py:2810
msgid "Substitute part"
msgstr ""
-#: part/models.py:2833
+#: part/models.py:2825
msgid "Part 1"
msgstr ""
-#: part/models.py:2837
+#: part/models.py:2829
msgid "Part 2"
msgstr ""
-#: part/models.py:2837
+#: part/models.py:2829
msgid "Select Related Part"
msgstr ""
-#: part/models.py:2868
-msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique"
+#: part/models.py:2847
+msgid "Part relationship cannot be created between a part and itself"
msgstr ""
-#: part/serializers.py:138 part/serializers.py:169 stock/serializers.py:163
+#: part/models.py:2851
+msgid "Duplicate relationship already exists"
+msgstr ""
+
+#: part/serializers.py:140 part/serializers.py:171 stock/serializers.py:163
msgid "Purchase currency of this stock item"
msgstr ""
-#: part/serializers.py:794
+#: part/serializers.py:796
msgid "Select part to copy BOM from"
msgstr ""
-#: part/serializers.py:802
+#: part/serializers.py:804
msgid "Remove Existing Data"
msgstr ""
-#: part/serializers.py:803
+#: part/serializers.py:805
msgid "Remove existing BOM items before copying"
msgstr ""
-#: part/serializers.py:808
+#: part/serializers.py:810
msgid "Include Inherited"
msgstr ""
-#: part/serializers.py:809
+#: part/serializers.py:811
msgid "Include BOM items which are inherited from templated parts"
msgstr ""
-#: part/serializers.py:814
+#: part/serializers.py:816
msgid "Skip Invalid Rows"
msgstr ""
-#: part/serializers.py:815
+#: part/serializers.py:817
msgid "Enable this option to skip invalid rows"
msgstr ""
-#: part/serializers.py:820
+#: part/serializers.py:822
msgid "Copy Substitute Parts"
msgstr ""
-#: part/serializers.py:821
+#: part/serializers.py:823
msgid "Copy substitute parts when duplicate BOM items"
msgstr ""
-#: part/serializers.py:861
+#: part/serializers.py:863
msgid "Clear Existing BOM"
msgstr ""
-#: part/serializers.py:862
+#: part/serializers.py:864
msgid "Delete existing BOM items before uploading"
msgstr ""
-#: part/serializers.py:892
+#: part/serializers.py:894
msgid "No part column specified"
msgstr ""
-#: part/serializers.py:935
+#: part/serializers.py:937
msgid "Multiple matching parts found"
msgstr ""
-#: part/serializers.py:938
+#: part/serializers.py:940
msgid "No matching part found"
msgstr ""
-#: part/serializers.py:941
+#: part/serializers.py:943
msgid "Part is not designated as a component"
msgstr ""
-#: part/serializers.py:950
+#: part/serializers.py:952
msgid "Quantity not provided"
msgstr ""
-#: part/serializers.py:958
+#: part/serializers.py:960
msgid "Invalid quantity"
msgstr ""
-#: part/serializers.py:979
+#: part/serializers.py:981
msgid "At least one BOM item is required"
msgstr ""
@@ -5088,10 +5135,10 @@ msgid "Part is virtual (not a physical part)"
msgstr ""
#: part/templates/part/part_base.html:143
-#: templates/js/translated/company.js:623
-#: templates/js/translated/company.js:882
+#: templates/js/translated/company.js:608
+#: templates/js/translated/company.js:867
#: templates/js/translated/model_renderers.js:192
-#: templates/js/translated/part.js:581 templates/js/translated/part.js:658
+#: templates/js/translated/part.js:625 templates/js/translated/part.js:702
msgid "Inactive"
msgstr ""
@@ -5120,13 +5167,13 @@ msgstr ""
msgid "Allocated to Sales Orders"
msgstr ""
-#: part/templates/part/part_base.html:232 templates/js/translated/bom.js:1009
+#: part/templates/part/part_base.html:232 templates/js/translated/bom.js:1003
msgid "Can Build"
msgstr ""
-#: part/templates/part/part_base.html:238 templates/js/translated/part.js:520
-#: templates/js/translated/part.js:540 templates/js/translated/part.js:1233
-#: templates/js/translated/part.js:1405 templates/js/translated/part.js:1421
+#: part/templates/part/part_base.html:238 templates/js/translated/part.js:564
+#: templates/js/translated/part.js:584 templates/js/translated/part.js:1277
+#: templates/js/translated/part.js:1449 templates/js/translated/part.js:1465
msgid "Building"
msgstr ""
@@ -5143,7 +5190,7 @@ msgstr ""
msgid "Search for serial number"
msgstr ""
-#: part/templates/part/part_base.html:443 part/templates/part/prices.html:147
+#: part/templates/part/part_base.html:443 part/templates/part/prices.html:149
msgid "Calculate"
msgstr ""
@@ -5161,54 +5208,55 @@ msgstr ""
#: part/templates/part/part_pricing.html:26
#: part/templates/part/part_pricing.html:52
-#: part/templates/part/part_pricing.html:100
-#: part/templates/part/part_pricing.html:115 part/templates/part/prices.html:28
-#: part/templates/part/prices.html:55 part/templates/part/prices.html:106
-#: part/templates/part/prices.html:123
+#: part/templates/part/part_pricing.html:103
+#: part/templates/part/part_pricing.html:118 part/templates/part/prices.html:28
+#: part/templates/part/prices.html:55 part/templates/part/prices.html:108
+#: part/templates/part/prices.html:125
msgid "Unit Cost"
msgstr ""
#: part/templates/part/part_pricing.html:32
#: part/templates/part/part_pricing.html:58
-#: part/templates/part/part_pricing.html:104
-#: part/templates/part/part_pricing.html:119 part/templates/part/prices.html:35
-#: part/templates/part/prices.html:62 part/templates/part/prices.html:111
-#: part/templates/part/prices.html:128
+#: part/templates/part/part_pricing.html:107
+#: part/templates/part/part_pricing.html:122 part/templates/part/prices.html:35
+#: part/templates/part/prices.html:62 part/templates/part/prices.html:113
+#: part/templates/part/prices.html:130
msgid "Total Cost"
msgstr ""
#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:43
-#: templates/js/translated/bom.js:963
+#: templates/js/translated/bom.js:957
msgid "No supplier pricing available"
msgstr ""
#: part/templates/part/part_pricing.html:48 part/templates/part/prices.html:52
-#: part/templates/part/prices.html:246
+#: part/templates/part/prices.html:248
msgid "BOM Pricing"
msgstr ""
-#: part/templates/part/part_pricing.html:65 part/templates/part/prices.html:72
+#: part/templates/part/part_pricing.html:66 part/templates/part/prices.html:72
msgid "Unit Purchase Price"
msgstr ""
-#: part/templates/part/part_pricing.html:71 part/templates/part/prices.html:79
+#: part/templates/part/part_pricing.html:72 part/templates/part/prices.html:79
msgid "Total Purchase Price"
msgstr ""
-#: part/templates/part/part_pricing.html:81 part/templates/part/prices.html:89
+#: part/templates/part/part_pricing.html:82 part/templates/part/prices.html:89
msgid "Note: BOM pricing is incomplete for this part"
msgstr ""
-#: part/templates/part/part_pricing.html:88 part/templates/part/prices.html:96
+#: part/templates/part/part_pricing.html:91 part/templates/part/prices.html:98
msgid "No BOM pricing available"
msgstr ""
-#: part/templates/part/part_pricing.html:97 part/templates/part/prices.html:105
+#: part/templates/part/part_pricing.html:100
+#: part/templates/part/prices.html:107
msgid "Internal Price"
msgstr ""
-#: part/templates/part/part_pricing.html:128
-#: part/templates/part/prices.html:137
+#: part/templates/part/part_pricing.html:131
+#: part/templates/part/prices.html:139
msgid "No pricing information is available for this part."
msgstr ""
@@ -5232,43 +5280,6 @@ msgstr ""
msgid "Select from existing images"
msgstr ""
-#: part/templates/part/partial_delete.html:9
-#, python-format
-msgid "Part '%(full_name)s' cannot be deleted as it is still marked as active.\n"
-"
Disable the \"Active\" part attribute and re-try.\n"
-" "
-msgstr ""
-
-#: part/templates/part/partial_delete.html:17
-#, python-format
-msgid "Are you sure you want to delete part '%(full_name)s'?"
-msgstr ""
-
-#: part/templates/part/partial_delete.html:22
-#, python-format
-msgid "This part is used in BOMs for %(count)s other parts. If you delete this part, the BOMs for the following parts will be updated"
-msgstr ""
-
-#: part/templates/part/partial_delete.html:32
-#, python-format
-msgid "There are %(count)s stock entries defined for this part. If you delete this part, the following stock entries will also be deleted:"
-msgstr ""
-
-#: part/templates/part/partial_delete.html:43
-#, python-format
-msgid "There are %(count)s manufacturers defined for this part. If you delete this part, the following manufacturer parts will also be deleted:"
-msgstr ""
-
-#: part/templates/part/partial_delete.html:54
-#, python-format
-msgid "There are %(count)s suppliers defined for this part. If you delete this part, the following supplier parts will also be deleted:"
-msgstr ""
-
-#: part/templates/part/partial_delete.html:67
-#, python-format
-msgid "There are %(count)s unique parts tracked for '%(full_name)s'. Deleting this part will permanently remove this tracking information."
-msgstr ""
-
#: part/templates/part/prices.html:19
msgid "Pricing ranges"
msgstr ""
@@ -5285,66 +5296,58 @@ msgstr ""
msgid "Show BOM cost"
msgstr ""
-#: part/templates/part/prices.html:120
+#: part/templates/part/prices.html:122
msgid "Show sale cost"
msgstr ""
-#: part/templates/part/prices.html:121
+#: part/templates/part/prices.html:123
msgid "Show sale price"
msgstr ""
-#: part/templates/part/prices.html:143
+#: part/templates/part/prices.html:145
msgid "Calculation parameters"
msgstr ""
-#: part/templates/part/prices.html:158 templates/js/translated/bom.js:957
+#: part/templates/part/prices.html:160 templates/js/translated/bom.js:951
msgid "Supplier Cost"
msgstr ""
-#: part/templates/part/prices.html:159 part/templates/part/prices.html:180
-#: part/templates/part/prices.html:204 part/templates/part/prices.html:234
-#: part/templates/part/prices.html:260 part/templates/part/prices.html:289
+#: part/templates/part/prices.html:161 part/templates/part/prices.html:182
+#: part/templates/part/prices.html:206 part/templates/part/prices.html:236
+#: part/templates/part/prices.html:262 part/templates/part/prices.html:291
msgid "Jump to overview"
msgstr ""
-#: part/templates/part/prices.html:184
+#: part/templates/part/prices.html:186
msgid "Stock Pricing"
msgstr ""
-#: part/templates/part/prices.html:193
+#: part/templates/part/prices.html:195
msgid "No stock pricing history is available for this part."
msgstr ""
-#: part/templates/part/prices.html:203
+#: part/templates/part/prices.html:205
msgid "Internal Cost"
msgstr ""
-#: part/templates/part/prices.html:218
+#: part/templates/part/prices.html:220
msgid "Add Internal Price Break"
msgstr ""
-#: part/templates/part/prices.html:233
+#: part/templates/part/prices.html:235
msgid "BOM Cost"
msgstr ""
-#: part/templates/part/prices.html:259
+#: part/templates/part/prices.html:261
msgid "Sale Cost"
msgstr ""
-#: part/templates/part/prices.html:300
+#: part/templates/part/prices.html:302
msgid "No sale pice history available for this part."
msgstr ""
-#: part/templates/part/set_category.html:9
-msgid "Set category for the following parts"
-msgstr ""
-
-#: part/templates/part/set_category.html:32
-msgid "Remove part"
-msgstr ""
-
-#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:543
-#: templates/js/translated/part.js:1221 templates/js/translated/part.js:1425
+#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:587
+#: templates/js/translated/part.js:1265 templates/js/translated/part.js:1469
msgid "No Stock"
msgstr ""
@@ -5407,56 +5410,39 @@ msgstr ""
msgid "{title} v{version}"
msgstr ""
-#: part/views.py:74
-msgid "Set Part Category"
-msgstr ""
-
-#: part/views.py:122
-#, python-brace-format
-msgid "Set category for {n} parts"
-msgstr ""
-
-#: part/views.py:193
+#: part/views.py:118
msgid "Match References"
msgstr ""
-#: part/views.py:494
+#: part/views.py:419
msgid "None"
msgstr ""
-#: part/views.py:556
+#: part/views.py:481
msgid "Part QR Code"
msgstr ""
-#: part/views.py:650
+#: part/views.py:575
msgid "Select Part Image"
msgstr ""
-#: part/views.py:676
+#: part/views.py:601
msgid "Updated part image"
msgstr ""
-#: part/views.py:679
+#: part/views.py:604
msgid "Part image not found"
msgstr ""
-#: part/views.py:768
-msgid "Confirm Part Deletion"
-msgstr ""
-
-#: part/views.py:776
-msgid "Part was deleted"
-msgstr ""
-
-#: part/views.py:785
+#: part/views.py:693
msgid "Part Pricing"
msgstr ""
-#: part/views.py:976
+#: part/views.py:884
msgid "Delete Part Category"
msgstr ""
-#: part/views.py:983
+#: part/views.py:891
msgid "Part category was deleted"
msgstr ""
@@ -5516,21 +5502,21 @@ msgstr ""
msgid "Label printing failed"
msgstr ""
-#: plugin/builtin/integration/core_notifications.py:28
+#: plugin/builtin/integration/core_notifications.py:29
msgid "InvenTree contributors"
msgstr ""
-#: plugin/builtin/integration/core_notifications.py:29
+#: plugin/builtin/integration/core_notifications.py:30
msgid "Integrated outgoing notificaton methods"
msgstr ""
-#: plugin/builtin/integration/core_notifications.py:33
-#: plugin/builtin/integration/core_notifications.py:52
-msgid "Enable email notifications"
-msgstr ""
-
#: plugin/builtin/integration/core_notifications.py:34
#: plugin/builtin/integration/core_notifications.py:53
+msgid "Enable email notifications"
+msgstr ""
+
+#: plugin/builtin/integration/core_notifications.py:35
+#: plugin/builtin/integration/core_notifications.py:54
msgid "Allow sending of emails for event notifications"
msgstr ""
@@ -5646,15 +5632,19 @@ msgstr ""
msgid "Either packagename of URL must be provided"
msgstr ""
-#: report/api.py:166
+#: report/api.py:179
msgid "No valid objects provided to template"
msgstr ""
-#: report/api.py:198 report/api.py:239
+#: report/api.py:215 report/api.py:256
#, python-brace-format
msgid "Template file '{template}' is missing or does not exist"
msgstr ""
+#: report/api.py:359
+msgid "Test report"
+msgstr ""
+
#: report/models.py:152
msgid "Template name"
msgstr ""
@@ -5757,7 +5747,7 @@ msgstr ""
#: templates/js/translated/build.js:1173 templates/js/translated/build.js:1671
#: templates/js/translated/model_renderers.js:106
#: templates/js/translated/order.js:115 templates/js/translated/order.js:3229
-#: templates/js/translated/order.js:3318 templates/js/translated/stock.js:435
+#: templates/js/translated/order.js:3318 templates/js/translated/stock.js:434
msgid "Serial Number"
msgstr ""
@@ -5766,19 +5756,19 @@ msgid "Test Results"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:93
-#: stock/models.py:2068
+#: stock/models.py:2072
msgid "Test"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:94
-#: stock/models.py:2074
+#: stock/models.py:2078
msgid "Result"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:97
#: templates/InvenTree/settings/plugin.html:51
#: templates/InvenTree/settings/plugin_settings.html:38
-#: templates/js/translated/order.js:1669 templates/js/translated/stock.js:2340
+#: templates/js/translated/order.js:1669 templates/js/translated/stock.js:2350
msgid "Date"
msgstr ""
@@ -5796,20 +5786,20 @@ msgid "Installed Items"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:137
-#: templates/js/translated/stock.js:555 templates/js/translated/stock.js:725
-#: templates/js/translated/stock.js:2589
+#: templates/js/translated/stock.js:554 templates/js/translated/stock.js:724
+#: templates/js/translated/stock.js:2599
msgid "Serial"
msgstr ""
-#: stock/api.py:504
+#: stock/api.py:505
msgid "Quantity is required"
msgstr ""
-#: stock/api.py:511
+#: stock/api.py:512
msgid "Valid part must be supplied"
msgstr ""
-#: stock/api.py:536
+#: stock/api.py:537
msgid "Serial numbers cannot be supplied for a non-trackable part"
msgstr ""
@@ -5917,7 +5907,7 @@ msgid "Destination Sales Order"
msgstr ""
#: stock/models.py:690 stock/templates/stock/item_base.html:429
-#: templates/js/translated/stock.js:1816
+#: templates/js/translated/stock.js:1826
msgid "Expiry Date"
msgstr ""
@@ -5971,79 +5961,79 @@ msgstr ""
msgid "Serial numbers already exist: {exists}"
msgstr ""
-#: stock/models.py:1321
+#: stock/models.py:1325
msgid "Stock item has been assigned to a sales order"
msgstr ""
-#: stock/models.py:1324
+#: stock/models.py:1328
msgid "Stock item is installed in another item"
msgstr ""
-#: stock/models.py:1327
+#: stock/models.py:1331
msgid "Stock item contains other items"
msgstr ""
-#: stock/models.py:1330
+#: stock/models.py:1334
msgid "Stock item has been assigned to a customer"
msgstr ""
-#: stock/models.py:1333
+#: stock/models.py:1337
msgid "Stock item is currently in production"
msgstr ""
-#: stock/models.py:1336
+#: stock/models.py:1340
msgid "Serialized stock cannot be merged"
msgstr ""
-#: stock/models.py:1343 stock/serializers.py:908
+#: stock/models.py:1347 stock/serializers.py:895
msgid "Duplicate stock items"
msgstr ""
-#: stock/models.py:1347
+#: stock/models.py:1351
msgid "Stock items must refer to the same part"
msgstr ""
-#: stock/models.py:1351
+#: stock/models.py:1355
msgid "Stock items must refer to the same supplier part"
msgstr ""
-#: stock/models.py:1355
+#: stock/models.py:1359
msgid "Stock status codes must match"
msgstr ""
-#: stock/models.py:1524
+#: stock/models.py:1528
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:1986
+#: stock/models.py:1990
msgid "Entry notes"
msgstr ""
-#: stock/models.py:2044
+#: stock/models.py:2048
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:2050
+#: stock/models.py:2054
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:2069
+#: stock/models.py:2073
msgid "Test name"
msgstr ""
-#: stock/models.py:2075
+#: stock/models.py:2079
msgid "Test result"
msgstr ""
-#: stock/models.py:2081
+#: stock/models.py:2085
msgid "Test output value"
msgstr ""
-#: stock/models.py:2088
+#: stock/models.py:2092
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:2094
+#: stock/models.py:2098
msgid "Test notes"
msgstr ""
@@ -6064,7 +6054,7 @@ msgstr ""
msgid "Enter serial numbers for new items"
msgstr ""
-#: stock/serializers.py:309 stock/serializers.py:865 stock/serializers.py:1098
+#: stock/serializers.py:309 stock/serializers.py:852 stock/serializers.py:1085
msgid "Destination stock location"
msgstr ""
@@ -6104,63 +6094,63 @@ msgstr ""
msgid "Destination location for returned item"
msgstr ""
-#: stock/serializers.py:720
+#: stock/serializers.py:707
msgid "Part must be salable"
msgstr ""
-#: stock/serializers.py:724
+#: stock/serializers.py:711
msgid "Item is allocated to a sales order"
msgstr ""
-#: stock/serializers.py:728
+#: stock/serializers.py:715
msgid "Item is allocated to a build order"
msgstr ""
-#: stock/serializers.py:759
+#: stock/serializers.py:746
msgid "Customer to assign stock items"
msgstr ""
-#: stock/serializers.py:765
+#: stock/serializers.py:752
msgid "Selected company is not a customer"
msgstr ""
-#: stock/serializers.py:773
+#: stock/serializers.py:760
msgid "Stock assignment notes"
msgstr ""
-#: stock/serializers.py:783 stock/serializers.py:1014
+#: stock/serializers.py:770 stock/serializers.py:1001
msgid "A list of stock items must be provided"
msgstr ""
-#: stock/serializers.py:872
+#: stock/serializers.py:859
msgid "Stock merging notes"
msgstr ""
-#: stock/serializers.py:877
+#: stock/serializers.py:864
msgid "Allow mismatched suppliers"
msgstr ""
-#: stock/serializers.py:878
+#: stock/serializers.py:865
msgid "Allow stock items with different supplier parts to be merged"
msgstr ""
-#: stock/serializers.py:883
+#: stock/serializers.py:870
msgid "Allow mismatched status"
msgstr ""
-#: stock/serializers.py:884
+#: stock/serializers.py:871
msgid "Allow stock items with different status codes to be merged"
msgstr ""
-#: stock/serializers.py:894
+#: stock/serializers.py:881
msgid "At least two stock items must be provided"
msgstr ""
-#: stock/serializers.py:976
+#: stock/serializers.py:963
msgid "StockItem primary key value"
msgstr ""
-#: stock/serializers.py:1004
+#: stock/serializers.py:991
msgid "Stock transaction notes"
msgstr ""
@@ -6185,7 +6175,7 @@ msgstr ""
msgid "Test Report"
msgstr ""
-#: stock/templates/stock/item.html:94
+#: stock/templates/stock/item.html:94 stock/templates/stock/item.html:298
msgid "Delete Test Data"
msgstr ""
@@ -6197,11 +6187,15 @@ msgstr ""
msgid "Installed Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:151 templates/js/translated/stock.js:2733
+#: stock/templates/stock/item.html:151 templates/js/translated/stock.js:2743
msgid "Install Stock Item"
msgstr ""
-#: stock/templates/stock/item.html:292 templates/js/translated/stock.js:1455
+#: stock/templates/stock/item.html:290
+msgid "Delete all test results for this stock item"
+msgstr ""
+
+#: stock/templates/stock/item.html:323 templates/js/translated/stock.js:1465
msgid "Add Test Result"
msgstr ""
@@ -6388,7 +6382,7 @@ msgid "Stale"
msgstr ""
#: stock/templates/stock/item_base.html:442
-#: templates/js/translated/stock.js:1832
+#: templates/js/translated/stock.js:1842
msgid "Last Updated"
msgstr ""
@@ -6529,7 +6523,7 @@ msgstr ""
msgid "Child Items"
msgstr ""
-#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:182
+#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:144
msgid "Convert Stock Item"
msgstr ""
@@ -6550,31 +6544,19 @@ msgstr ""
msgid "This action cannot be easily undone"
msgstr ""
-#: stock/views.py:113
+#: stock/views.py:111
msgid "Stock Location QR code"
msgstr ""
-#: stock/views.py:131
-msgid "Delete All Test Data"
-msgstr ""
-
-#: stock/views.py:149
-msgid "Confirm test data deletion"
-msgstr ""
-
-#: stock/views.py:150
-msgid "Check the confirmation box"
-msgstr ""
-
-#: stock/views.py:165
+#: stock/views.py:127
msgid "Stock Item QR Code"
msgstr ""
-#: stock/views.py:216
+#: stock/views.py:178
msgid "Delete Stock Location"
msgstr ""
-#: stock/views.py:229
+#: stock/views.py:191
msgid "Delete Stock Item"
msgstr ""
@@ -7317,8 +7299,8 @@ msgstr ""
#: templates/about.html:11 templates/about.html:105
#: templates/js/translated/bom.js:133 templates/js/translated/bom.js:621
-#: templates/js/translated/modals.js:56 templates/js/translated/modals.js:595
-#: templates/js/translated/modals.js:689 templates/js/translated/modals.js:997
+#: templates/js/translated/modals.js:56 templates/js/translated/modals.js:601
+#: templates/js/translated/modals.js:695 templates/js/translated/modals.js:1003
#: templates/js/translated/order.js:928 templates/modals.html:15
#: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50
msgid "Close"
@@ -7390,6 +7372,10 @@ msgstr ""
msgid "Please confirm that %(email)s is an email address for user %(user_display)s."
msgstr ""
+#: templates/account/email_confirm.html:20 templates/js/translated/forms.js:630
+msgid "Confirm"
+msgstr "تایید"
+
#: templates/account/email_confirm.html:27
#, python-format
msgid "This email confirmation link expired or is invalid. Please issue a new email confirmation request."
@@ -7562,7 +7548,7 @@ msgstr ""
msgid "Delete selected attachments"
msgstr ""
-#: templates/attachment_table.html:12 templates/js/translated/attachment.js:110
+#: templates/attachment_table.html:12 templates/js/translated/attachment.js:112
msgid "Delete Attachments"
msgstr ""
@@ -7596,15 +7582,15 @@ msgid "The following parts are low on required stock"
msgstr ""
#: templates/email/build_order_required_stock.html:18
-#: templates/js/translated/bom.js:1425
+#: templates/js/translated/bom.js:1419
msgid "Required Quantity"
msgstr ""
#: templates/email/build_order_required_stock.html:19
#: templates/email/low_stock_notification.html:18
-#: templates/js/translated/bom.js:890 templates/js/translated/build.js:1787
-#: templates/js/translated/build.js:2650 templates/js/translated/part.js:527
-#: templates/js/translated/part.js:530
+#: templates/js/translated/bom.js:884 templates/js/translated/build.js:1787
+#: templates/js/translated/build.js:2650 templates/js/translated/part.js:571
+#: templates/js/translated/part.js:574
#: templates/js/translated/table_filters.js:178
msgid "Available"
msgstr ""
@@ -7622,6 +7608,13 @@ msgstr ""
msgid "Minimum Quantity"
msgstr ""
+#: templates/email/new_order_assigned.html:9
+#: templates/email/overdue_build_order.html:9
+#: templates/email/overdue_purchase_order.html:9
+#: templates/email/overdue_sales_order.html:9
+msgid "Click on the following link to view this order"
+msgstr ""
+
#: templates/image_download.html:8
msgid "Specify URL for downloading image"
msgstr ""
@@ -7638,91 +7631,91 @@ msgstr ""
msgid "Remote image must not exceed maximum allowable file size"
msgstr ""
-#: templates/js/translated/api.js:235 templates/js/translated/modals.js:1067
+#: templates/js/translated/api.js:195 templates/js/translated/modals.js:1073
msgid "No Response"
msgstr ""
-#: templates/js/translated/api.js:236 templates/js/translated/modals.js:1068
+#: templates/js/translated/api.js:196 templates/js/translated/modals.js:1074
msgid "No response from the InvenTree server"
msgstr ""
-#: templates/js/translated/api.js:242
+#: templates/js/translated/api.js:202
msgid "Error 400: Bad request"
msgstr ""
-#: templates/js/translated/api.js:243
+#: templates/js/translated/api.js:203
msgid "API request returned error code 400"
msgstr ""
-#: templates/js/translated/api.js:247 templates/js/translated/modals.js:1077
+#: templates/js/translated/api.js:207 templates/js/translated/modals.js:1083
msgid "Error 401: Not Authenticated"
msgstr ""
-#: templates/js/translated/api.js:248 templates/js/translated/modals.js:1078
+#: templates/js/translated/api.js:208 templates/js/translated/modals.js:1084
msgid "Authentication credentials not supplied"
msgstr ""
-#: templates/js/translated/api.js:252 templates/js/translated/modals.js:1082
+#: templates/js/translated/api.js:212 templates/js/translated/modals.js:1088
msgid "Error 403: Permission Denied"
msgstr ""
-#: templates/js/translated/api.js:253 templates/js/translated/modals.js:1083
+#: templates/js/translated/api.js:213 templates/js/translated/modals.js:1089
msgid "You do not have the required permissions to access this function"
msgstr ""
-#: templates/js/translated/api.js:257 templates/js/translated/modals.js:1087
+#: templates/js/translated/api.js:217 templates/js/translated/modals.js:1093
msgid "Error 404: Resource Not Found"
msgstr ""
-#: templates/js/translated/api.js:258 templates/js/translated/modals.js:1088
+#: templates/js/translated/api.js:218 templates/js/translated/modals.js:1094
msgid "The requested resource could not be located on the server"
msgstr ""
-#: templates/js/translated/api.js:262
+#: templates/js/translated/api.js:222
msgid "Error 405: Method Not Allowed"
msgstr ""
-#: templates/js/translated/api.js:263
+#: templates/js/translated/api.js:223
msgid "HTTP method not allowed at URL"
msgstr ""
-#: templates/js/translated/api.js:267 templates/js/translated/modals.js:1092
+#: templates/js/translated/api.js:227 templates/js/translated/modals.js:1098
msgid "Error 408: Timeout"
msgstr ""
-#: templates/js/translated/api.js:268 templates/js/translated/modals.js:1093
+#: templates/js/translated/api.js:228 templates/js/translated/modals.js:1099
msgid "Connection timeout while requesting data from server"
msgstr ""
-#: templates/js/translated/api.js:271
+#: templates/js/translated/api.js:231
msgid "Unhandled Error Code"
msgstr ""
-#: templates/js/translated/api.js:272
+#: templates/js/translated/api.js:232
msgid "Error code"
msgstr ""
-#: templates/js/translated/attachment.js:96
+#: templates/js/translated/attachment.js:98
msgid "All selected attachments will be deleted"
msgstr ""
-#: templates/js/translated/attachment.js:156
+#: templates/js/translated/attachment.js:152
msgid "No attachments found"
msgstr ""
-#: templates/js/translated/attachment.js:180
+#: templates/js/translated/attachment.js:176
msgid "Edit Attachment"
msgstr ""
-#: templates/js/translated/attachment.js:246
+#: templates/js/translated/attachment.js:242
msgid "Upload Date"
msgstr ""
-#: templates/js/translated/attachment.js:262
+#: templates/js/translated/attachment.js:264
msgid "Edit attachment"
msgstr ""
-#: templates/js/translated/attachment.js:269
+#: templates/js/translated/attachment.js:271
msgid "Delete attachment"
msgstr ""
@@ -7755,7 +7748,7 @@ msgid "Unknown response from server"
msgstr ""
#: templates/js/translated/barcode.js:182
-#: templates/js/translated/modals.js:1057
+#: templates/js/translated/modals.js:1063
msgid "Invalid server response"
msgstr ""
@@ -7783,7 +7776,7 @@ msgstr ""
msgid "Unlink"
msgstr ""
-#: templates/js/translated/barcode.js:456 templates/js/translated/stock.js:999
+#: templates/js/translated/barcode.js:456 templates/js/translated/stock.js:998
msgid "Remove stock item"
msgstr ""
@@ -7918,89 +7911,89 @@ msgstr ""
msgid "Edit BOM Item Substitutes"
msgstr ""
-#: templates/js/translated/bom.js:682
+#: templates/js/translated/bom.js:684
msgid "All selected BOM items will be deleted"
msgstr ""
-#: templates/js/translated/bom.js:697
+#: templates/js/translated/bom.js:699
msgid "Delete selected BOM items?"
msgstr ""
-#: templates/js/translated/bom.js:824
+#: templates/js/translated/bom.js:818
msgid "Load BOM for subassembly"
msgstr ""
-#: templates/js/translated/bom.js:834
+#: templates/js/translated/bom.js:828
msgid "Substitutes Available"
msgstr ""
-#: templates/js/translated/bom.js:838 templates/js/translated/build.js:1769
+#: templates/js/translated/bom.js:832 templates/js/translated/build.js:1769
msgid "Variant stock allowed"
msgstr ""
-#: templates/js/translated/bom.js:906 templates/js/translated/build.js:1814
+#: templates/js/translated/bom.js:900 templates/js/translated/build.js:1814
#: templates/js/translated/order.js:3562
msgid "No Stock Available"
msgstr ""
-#: templates/js/translated/bom.js:910 templates/js/translated/build.js:1818
+#: templates/js/translated/bom.js:904 templates/js/translated/build.js:1818
msgid "Includes variant and substitute stock"
msgstr ""
-#: templates/js/translated/bom.js:912 templates/js/translated/build.js:1820
-#: templates/js/translated/part.js:690
+#: templates/js/translated/bom.js:906 templates/js/translated/build.js:1820
+#: templates/js/translated/part.js:734
msgid "Includes variant stock"
msgstr ""
-#: templates/js/translated/bom.js:914 templates/js/translated/build.js:1822
+#: templates/js/translated/bom.js:908 templates/js/translated/build.js:1822
msgid "Includes substitute stock"
msgstr ""
-#: templates/js/translated/bom.js:928
+#: templates/js/translated/bom.js:922
msgid "Substitutes"
msgstr ""
-#: templates/js/translated/bom.js:943
+#: templates/js/translated/bom.js:937
msgid "Purchase Price Range"
msgstr ""
-#: templates/js/translated/bom.js:950
+#: templates/js/translated/bom.js:944
msgid "Purchase Price Average"
msgstr ""
-#: templates/js/translated/bom.js:999 templates/js/translated/bom.js:1090
+#: templates/js/translated/bom.js:993 templates/js/translated/bom.js:1084
msgid "View BOM"
msgstr ""
-#: templates/js/translated/bom.js:1061
+#: templates/js/translated/bom.js:1055
msgid "Validate BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:1063
+#: templates/js/translated/bom.js:1057
msgid "This line has been validated"
msgstr ""
-#: templates/js/translated/bom.js:1065
+#: templates/js/translated/bom.js:1059
msgid "Edit substitute parts"
msgstr ""
-#: templates/js/translated/bom.js:1067 templates/js/translated/bom.js:1228
+#: templates/js/translated/bom.js:1061 templates/js/translated/bom.js:1222
msgid "Edit BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:1069
+#: templates/js/translated/bom.js:1063
msgid "Delete BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:1164 templates/js/translated/build.js:1615
+#: templates/js/translated/bom.js:1158 templates/js/translated/build.js:1615
msgid "No BOM items found"
msgstr ""
-#: templates/js/translated/bom.js:1408 templates/js/translated/build.js:1753
+#: templates/js/translated/bom.js:1402 templates/js/translated/build.js:1753
msgid "Required Part"
msgstr ""
-#: templates/js/translated/bom.js:1430
+#: templates/js/translated/bom.js:1424
msgid "Inherited from parent BOM"
msgstr ""
@@ -8040,13 +8033,13 @@ msgstr ""
msgid "Complete Build Order"
msgstr ""
-#: templates/js/translated/build.js:259 templates/js/translated/stock.js:91
-#: templates/js/translated/stock.js:181
+#: templates/js/translated/build.js:259 templates/js/translated/stock.js:90
+#: templates/js/translated/stock.js:180
msgid "Next available serial number"
msgstr ""
-#: templates/js/translated/build.js:261 templates/js/translated/stock.js:93
-#: templates/js/translated/stock.js:183
+#: templates/js/translated/build.js:261 templates/js/translated/stock.js:92
+#: templates/js/translated/stock.js:182
msgid "Latest serial number"
msgstr ""
@@ -8259,9 +8252,9 @@ msgstr ""
msgid "No builds matching query"
msgstr ""
-#: templates/js/translated/build.js:2448 templates/js/translated/part.js:1314
-#: templates/js/translated/part.js:1729 templates/js/translated/stock.js:1619
-#: templates/js/translated/stock.js:2277
+#: templates/js/translated/build.js:2448 templates/js/translated/part.js:1358
+#: templates/js/translated/part.js:1825 templates/js/translated/stock.js:1629
+#: templates/js/translated/stock.js:2287
msgid "Select"
msgstr ""
@@ -8273,7 +8266,7 @@ msgstr ""
msgid "Progress"
msgstr ""
-#: templates/js/translated/build.js:2532 templates/js/translated/stock.js:2519
+#: templates/js/translated/build.js:2532 templates/js/translated/stock.js:2529
msgid "No user information"
msgstr ""
@@ -8285,107 +8278,107 @@ msgstr ""
msgid "No parts allocated for"
msgstr ""
-#: templates/js/translated/company.js:66
+#: templates/js/translated/company.js:65
msgid "Add Manufacturer"
msgstr ""
-#: templates/js/translated/company.js:79 templates/js/translated/company.js:169
+#: templates/js/translated/company.js:78 templates/js/translated/company.js:168
msgid "Add Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:100
+#: templates/js/translated/company.js:99
msgid "Edit Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:157 templates/js/translated/order.js:506
+#: templates/js/translated/company.js:156 templates/js/translated/order.js:506
msgid "Add Supplier"
msgstr ""
-#: templates/js/translated/company.js:185
+#: templates/js/translated/company.js:184
msgid "Add Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:200
+#: templates/js/translated/company.js:199
msgid "Edit Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:248
+#: templates/js/translated/company.js:249
msgid "All selected supplier parts will be deleted"
msgstr ""
-#: templates/js/translated/company.js:263
+#: templates/js/translated/company.js:264
msgid "Delete Supplier Parts"
msgstr ""
-#: templates/js/translated/company.js:342
+#: templates/js/translated/company.js:336
msgid "Add new Company"
msgstr ""
-#: templates/js/translated/company.js:419
+#: templates/js/translated/company.js:413
msgid "Parts Supplied"
msgstr ""
-#: templates/js/translated/company.js:428
+#: templates/js/translated/company.js:422
msgid "Parts Manufactured"
msgstr ""
-#: templates/js/translated/company.js:443
+#: templates/js/translated/company.js:437
msgid "No company information found"
msgstr ""
-#: templates/js/translated/company.js:482
+#: templates/js/translated/company.js:478
msgid "All selected manufacturer parts will be deleted"
msgstr ""
-#: templates/js/translated/company.js:496
+#: templates/js/translated/company.js:492
msgid "Delete Manufacturer Parts"
msgstr ""
-#: templates/js/translated/company.js:535
+#: templates/js/translated/company.js:526
msgid "All selected parameters will be deleted"
msgstr ""
-#: templates/js/translated/company.js:548
+#: templates/js/translated/company.js:539
msgid "Delete Parameters"
msgstr ""
-#: templates/js/translated/company.js:595
+#: templates/js/translated/company.js:580
msgid "No manufacturer parts found"
msgstr ""
-#: templates/js/translated/company.js:615
-#: templates/js/translated/company.js:874 templates/js/translated/part.js:565
-#: templates/js/translated/part.js:650
+#: templates/js/translated/company.js:600
+#: templates/js/translated/company.js:859 templates/js/translated/part.js:609
+#: templates/js/translated/part.js:694
msgid "Template part"
msgstr ""
-#: templates/js/translated/company.js:619
-#: templates/js/translated/company.js:878 templates/js/translated/part.js:569
-#: templates/js/translated/part.js:654
+#: templates/js/translated/company.js:604
+#: templates/js/translated/company.js:863 templates/js/translated/part.js:613
+#: templates/js/translated/part.js:698
msgid "Assembled part"
msgstr ""
-#: templates/js/translated/company.js:747 templates/js/translated/part.js:757
+#: templates/js/translated/company.js:732 templates/js/translated/part.js:801
msgid "No parameters found"
msgstr ""
-#: templates/js/translated/company.js:784 templates/js/translated/part.js:799
+#: templates/js/translated/company.js:769 templates/js/translated/part.js:843
msgid "Edit parameter"
msgstr ""
-#: templates/js/translated/company.js:785 templates/js/translated/part.js:800
+#: templates/js/translated/company.js:770 templates/js/translated/part.js:844
msgid "Delete parameter"
msgstr ""
-#: templates/js/translated/company.js:804 templates/js/translated/part.js:817
+#: templates/js/translated/company.js:789 templates/js/translated/part.js:861
msgid "Edit Parameter"
msgstr ""
-#: templates/js/translated/company.js:815 templates/js/translated/part.js:829
+#: templates/js/translated/company.js:800 templates/js/translated/part.js:873
msgid "Delete Parameter"
msgstr ""
-#: templates/js/translated/company.js:854
+#: templates/js/translated/company.js:839
msgid "No supplier parts found"
msgstr ""
@@ -8448,36 +8441,36 @@ msgstr ""
msgid "Keep this form open"
msgstr ""
-#: templates/js/translated/forms.js:756
+#: templates/js/translated/forms.js:757
msgid "Enter a valid number"
msgstr ""
-#: templates/js/translated/forms.js:1248 templates/modals.html:19
+#: templates/js/translated/forms.js:1249 templates/modals.html:19
#: templates/modals.html:43
msgid "Form errors exist"
msgstr ""
-#: templates/js/translated/forms.js:1681
+#: templates/js/translated/forms.js:1682
msgid "No results found"
msgstr ""
-#: templates/js/translated/forms.js:1896 templates/search.html:29
+#: templates/js/translated/forms.js:1897 templates/search.html:29
msgid "Searching"
msgstr ""
-#: templates/js/translated/forms.js:2149
+#: templates/js/translated/forms.js:2150
msgid "Clear input"
msgstr ""
-#: templates/js/translated/forms.js:2615
+#: templates/js/translated/forms.js:2616
msgid "File Column"
msgstr ""
-#: templates/js/translated/forms.js:2615
+#: templates/js/translated/forms.js:2616
msgid "Field Name"
msgstr ""
-#: templates/js/translated/forms.js:2627
+#: templates/js/translated/forms.js:2628
msgid "Select Columns"
msgstr ""
@@ -8498,7 +8491,7 @@ msgid "Labels sent to printer"
msgstr ""
#: templates/js/translated/label.js:60 templates/js/translated/report.js:118
-#: templates/js/translated/stock.js:1023
+#: templates/js/translated/stock.js:1022
msgid "Select Stock Items"
msgstr ""
@@ -8552,12 +8545,12 @@ msgid "Select Label Template"
msgstr ""
#: templates/js/translated/modals.js:82 templates/js/translated/modals.js:142
-#: templates/js/translated/modals.js:621
+#: templates/js/translated/modals.js:627
msgid "Cancel"
msgstr ""
#: templates/js/translated/modals.js:83 templates/js/translated/modals.js:141
-#: templates/js/translated/modals.js:688 templates/js/translated/modals.js:996
+#: templates/js/translated/modals.js:694 templates/js/translated/modals.js:1002
#: templates/modals.html:28 templates/modals.html:51
msgid "Submit"
msgstr ""
@@ -8566,47 +8559,47 @@ msgstr ""
msgid "Form Title"
msgstr ""
-#: templates/js/translated/modals.js:403
+#: templates/js/translated/modals.js:421
msgid "Waiting for server..."
msgstr ""
-#: templates/js/translated/modals.js:562
+#: templates/js/translated/modals.js:568
msgid "Show Error Information"
msgstr ""
-#: templates/js/translated/modals.js:620
+#: templates/js/translated/modals.js:626
msgid "Accept"
msgstr ""
-#: templates/js/translated/modals.js:677
+#: templates/js/translated/modals.js:683
msgid "Loading Data"
msgstr ""
-#: templates/js/translated/modals.js:948
+#: templates/js/translated/modals.js:954
msgid "Invalid response from server"
msgstr ""
-#: templates/js/translated/modals.js:948
+#: templates/js/translated/modals.js:954
msgid "Form data missing from server response"
msgstr ""
-#: templates/js/translated/modals.js:960
+#: templates/js/translated/modals.js:966
msgid "Error posting form data"
msgstr ""
-#: templates/js/translated/modals.js:1057
+#: templates/js/translated/modals.js:1063
msgid "JSON response missing form data"
msgstr ""
-#: templates/js/translated/modals.js:1072
+#: templates/js/translated/modals.js:1078
msgid "Error 400: Bad Request"
msgstr ""
-#: templates/js/translated/modals.js:1073
+#: templates/js/translated/modals.js:1079
msgid "Server returned error code 400"
msgstr ""
-#: templates/js/translated/modals.js:1096
+#: templates/js/translated/modals.js:1102
msgid "Error requesting form data"
msgstr ""
@@ -8656,11 +8649,11 @@ msgstr ""
msgid "Mark as read"
msgstr ""
-#: templates/js/translated/notification.js:259
+#: templates/js/translated/notification.js:260
msgid "No unread notifications"
msgstr ""
-#: templates/js/translated/notification.js:300 templates/notifications.html:10
+#: templates/js/translated/notification.js:302 templates/notifications.html:10
msgid "Notifications will load here"
msgstr ""
@@ -8804,7 +8797,7 @@ msgstr ""
msgid "Quantity to receive"
msgstr ""
-#: templates/js/translated/order.js:1225 templates/js/translated/stock.js:2080
+#: templates/js/translated/order.js:1225 templates/js/translated/stock.js:2090
msgid "Stock Status"
msgstr ""
@@ -8828,7 +8821,7 @@ msgstr ""
msgid "Receive Purchase Order Items"
msgstr ""
-#: templates/js/translated/order.js:1602 templates/js/translated/part.js:870
+#: templates/js/translated/order.js:1602 templates/js/translated/part.js:914
msgid "No purchase orders found"
msgstr ""
@@ -8863,7 +8856,7 @@ msgstr ""
#: templates/js/translated/order.js:1937 templates/js/translated/order.js:2139
#: templates/js/translated/order.js:3467 templates/js/translated/order.js:3978
-#: templates/js/translated/part.js:1948 templates/js/translated/part.js:2301
+#: templates/js/translated/part.js:2044 templates/js/translated/part.js:2397
msgid "Unit Price"
msgstr ""
@@ -8873,11 +8866,11 @@ msgid "Total Price"
msgstr ""
#: templates/js/translated/order.js:1993 templates/js/translated/order.js:3525
-#: templates/js/translated/part.js:979
+#: templates/js/translated/part.js:1023
msgid "This line item is overdue"
msgstr ""
-#: templates/js/translated/order.js:2052 templates/js/translated/part.js:1025
+#: templates/js/translated/order.js:2052 templates/js/translated/part.js:1069
msgid "Receive line item"
msgstr ""
@@ -8998,7 +8991,7 @@ msgid "Delete Stock Allocation"
msgstr ""
#: templates/js/translated/order.js:3243 templates/js/translated/order.js:3332
-#: templates/js/translated/stock.js:1535
+#: templates/js/translated/stock.js:1545
msgid "Shipped to customer"
msgstr ""
@@ -9138,165 +9131,209 @@ msgstr ""
msgid "Create Part Variant"
msgstr ""
+#: templates/js/translated/part.js:405
+msgid "Active Part"
+msgstr ""
+
+#: templates/js/translated/part.js:406
+msgid "Part cannot be deleted as it is currently active"
+msgstr ""
+
+#: templates/js/translated/part.js:420
+msgid "Deleting this part cannot be reversed"
+msgstr ""
+
+#: templates/js/translated/part.js:422
+msgid "Any stock items for this part will be deleted"
+msgstr ""
+
#: templates/js/translated/part.js:423
+msgid "This part will be removed from any Bills of Material"
+msgstr ""
+
+#: templates/js/translated/part.js:424
+msgid "All manufacturer and supplier information for this part will be deleted"
+msgstr ""
+
+#: templates/js/translated/part.js:431
+msgid "Delete Part"
+msgstr ""
+
+#: templates/js/translated/part.js:467
msgid "You are subscribed to notifications for this item"
msgstr ""
-#: templates/js/translated/part.js:425
+#: templates/js/translated/part.js:469
msgid "You have subscribed to notifications for this item"
msgstr ""
-#: templates/js/translated/part.js:430
+#: templates/js/translated/part.js:474
msgid "Subscribe to notifications for this item"
msgstr ""
-#: templates/js/translated/part.js:432
+#: templates/js/translated/part.js:476
msgid "You have unsubscribed to notifications for this item"
msgstr ""
-#: templates/js/translated/part.js:449
+#: templates/js/translated/part.js:493
msgid "Validating the BOM will mark each line item as valid"
msgstr ""
-#: templates/js/translated/part.js:459
+#: templates/js/translated/part.js:503
msgid "Validate Bill of Materials"
msgstr ""
-#: templates/js/translated/part.js:462
+#: templates/js/translated/part.js:506
msgid "Validated Bill of Materials"
msgstr ""
-#: templates/js/translated/part.js:487
+#: templates/js/translated/part.js:531
msgid "Copy Bill of Materials"
msgstr ""
-#: templates/js/translated/part.js:513 templates/js/translated/part.js:1397
+#: templates/js/translated/part.js:557 templates/js/translated/part.js:1441
#: templates/js/translated/table_filters.js:452
msgid "Low stock"
msgstr ""
-#: templates/js/translated/part.js:523 templates/js/translated/part.js:1409
+#: templates/js/translated/part.js:567 templates/js/translated/part.js:1453
msgid "No stock available"
msgstr ""
-#: templates/js/translated/part.js:557 templates/js/translated/part.js:642
+#: templates/js/translated/part.js:601 templates/js/translated/part.js:686
msgid "Trackable part"
msgstr ""
-#: templates/js/translated/part.js:561 templates/js/translated/part.js:646
+#: templates/js/translated/part.js:605 templates/js/translated/part.js:690
msgid "Virtual part"
msgstr ""
-#: templates/js/translated/part.js:573
+#: templates/js/translated/part.js:617
msgid "Subscribed part"
msgstr ""
-#: templates/js/translated/part.js:577
+#: templates/js/translated/part.js:621
msgid "Salable part"
msgstr ""
-#: templates/js/translated/part.js:705
+#: templates/js/translated/part.js:749
msgid "No variants found"
msgstr ""
-#: templates/js/translated/part.js:1095
+#: templates/js/translated/part.js:1139
msgid "Delete part relationship"
msgstr ""
-#: templates/js/translated/part.js:1119
+#: templates/js/translated/part.js:1163
msgid "Delete Part Relationship"
msgstr ""
-#: templates/js/translated/part.js:1184 templates/js/translated/part.js:1480
+#: templates/js/translated/part.js:1228 templates/js/translated/part.js:1524
msgid "No parts found"
msgstr ""
-#: templates/js/translated/part.js:1223
+#: templates/js/translated/part.js:1267
msgid "Not available"
msgstr ""
-#: templates/js/translated/part.js:1374
+#: templates/js/translated/part.js:1418
msgid "No category"
msgstr ""
-#: templates/js/translated/part.js:1504 templates/js/translated/part.js:1664
-#: templates/js/translated/stock.js:2238
+#: templates/js/translated/part.js:1548 templates/js/translated/part.js:1760
+#: templates/js/translated/stock.js:2248
msgid "Display as list"
msgstr ""
-#: templates/js/translated/part.js:1520
+#: templates/js/translated/part.js:1564
msgid "Display as grid"
msgstr ""
-#: templates/js/translated/part.js:1683 templates/js/translated/stock.js:2257
+#: templates/js/translated/part.js:1630
+msgid "Set the part category for the selected parts"
+msgstr ""
+
+#: templates/js/translated/part.js:1635
+msgid "Set Part Category"
+msgstr ""
+
+#: templates/js/translated/part.js:1640
+msgid "Select Part Category"
+msgstr ""
+
+#: templates/js/translated/part.js:1653
+msgid "Category is required"
+msgstr ""
+
+#: templates/js/translated/part.js:1779 templates/js/translated/stock.js:2267
msgid "Display as tree"
msgstr ""
-#: templates/js/translated/part.js:1747
+#: templates/js/translated/part.js:1843
msgid "Subscribed category"
msgstr ""
-#: templates/js/translated/part.js:1761 templates/js/translated/stock.js:2301
+#: templates/js/translated/part.js:1857 templates/js/translated/stock.js:2311
msgid "Path"
msgstr ""
-#: templates/js/translated/part.js:1805
+#: templates/js/translated/part.js:1901
msgid "No test templates matching query"
msgstr ""
-#: templates/js/translated/part.js:1856 templates/js/translated/stock.js:1233
+#: templates/js/translated/part.js:1952 templates/js/translated/stock.js:1243
msgid "Edit test result"
msgstr ""
-#: templates/js/translated/part.js:1857 templates/js/translated/stock.js:1234
-#: templates/js/translated/stock.js:1493
+#: templates/js/translated/part.js:1953 templates/js/translated/stock.js:1244
+#: templates/js/translated/stock.js:1503
msgid "Delete test result"
msgstr ""
-#: templates/js/translated/part.js:1863
+#: templates/js/translated/part.js:1959
msgid "This test is defined for a parent part"
msgstr ""
-#: templates/js/translated/part.js:1885
+#: templates/js/translated/part.js:1981
msgid "Edit Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:1899
+#: templates/js/translated/part.js:1995
msgid "Delete Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:1924
+#: templates/js/translated/part.js:2020
#, python-brace-format
msgid "No ${human_name} information found"
msgstr ""
-#: templates/js/translated/part.js:1981
+#: templates/js/translated/part.js:2077
#, python-brace-format
msgid "Edit ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:1982
+#: templates/js/translated/part.js:2078
#, python-brace-format
msgid "Delete ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:2096
+#: templates/js/translated/part.js:2192
msgid "Current Stock"
msgstr ""
-#: templates/js/translated/part.js:2129
+#: templates/js/translated/part.js:2225
msgid "No scheduling information available for this part"
msgstr ""
-#: templates/js/translated/part.js:2155
+#: templates/js/translated/part.js:2251
msgid "Scheduled Stock Quantities"
msgstr ""
-#: templates/js/translated/part.js:2225
+#: templates/js/translated/part.js:2321
msgid "Single Price"
msgstr ""
-#: templates/js/translated/part.js:2244
+#: templates/js/translated/part.js:2340
msgid "Single Price Difference"
msgstr ""
@@ -9378,360 +9415,360 @@ msgstr ""
msgid "Remove results"
msgstr ""
-#: templates/js/translated/stock.js:73
+#: templates/js/translated/stock.js:72
msgid "Serialize Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:101
+#: templates/js/translated/stock.js:100
msgid "Confirm Stock Serialization"
msgstr ""
-#: templates/js/translated/stock.js:110
+#: templates/js/translated/stock.js:109
msgid "Parent stock location"
msgstr ""
-#: templates/js/translated/stock.js:139
+#: templates/js/translated/stock.js:138
msgid "Edit Stock Location"
msgstr ""
-#: templates/js/translated/stock.js:154
+#: templates/js/translated/stock.js:153
msgid "New Stock Location"
msgstr ""
-#: templates/js/translated/stock.js:194
+#: templates/js/translated/stock.js:193
msgid "This part cannot be serialized"
msgstr ""
-#: templates/js/translated/stock.js:233
+#: templates/js/translated/stock.js:232
msgid "Enter initial quantity for this stock item"
msgstr ""
-#: templates/js/translated/stock.js:239
+#: templates/js/translated/stock.js:238
msgid "Enter serial numbers for new stock (or leave blank)"
msgstr ""
-#: templates/js/translated/stock.js:304
+#: templates/js/translated/stock.js:303
msgid "Stock item duplicated"
msgstr ""
-#: templates/js/translated/stock.js:324
+#: templates/js/translated/stock.js:323
msgid "Duplicate Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:344
+#: templates/js/translated/stock.js:343
msgid "Edit Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:394
+#: templates/js/translated/stock.js:393
msgid "Created new stock item"
msgstr ""
-#: templates/js/translated/stock.js:407
+#: templates/js/translated/stock.js:406
msgid "Created multiple stock items"
msgstr ""
-#: templates/js/translated/stock.js:432
+#: templates/js/translated/stock.js:431
msgid "Find Serial Number"
msgstr ""
-#: templates/js/translated/stock.js:436 templates/js/translated/stock.js:437
+#: templates/js/translated/stock.js:435 templates/js/translated/stock.js:436
msgid "Enter serial number"
msgstr ""
-#: templates/js/translated/stock.js:453
+#: templates/js/translated/stock.js:452
msgid "Enter a serial number"
msgstr ""
-#: templates/js/translated/stock.js:473
+#: templates/js/translated/stock.js:472
msgid "No matching serial number"
msgstr ""
-#: templates/js/translated/stock.js:482
+#: templates/js/translated/stock.js:481
msgid "More than one matching result found"
msgstr ""
-#: templates/js/translated/stock.js:605
+#: templates/js/translated/stock.js:604
msgid "Confirm stock assignment"
msgstr ""
-#: templates/js/translated/stock.js:606
+#: templates/js/translated/stock.js:605
msgid "Assign Stock to Customer"
msgstr ""
-#: templates/js/translated/stock.js:683
+#: templates/js/translated/stock.js:682
msgid "Warning: Merge operation cannot be reversed"
msgstr ""
-#: templates/js/translated/stock.js:684
+#: templates/js/translated/stock.js:683
msgid "Some information will be lost when merging stock items"
msgstr ""
-#: templates/js/translated/stock.js:686
+#: templates/js/translated/stock.js:685
msgid "Stock transaction history will be deleted for merged items"
msgstr ""
-#: templates/js/translated/stock.js:687
+#: templates/js/translated/stock.js:686
msgid "Supplier part information will be deleted for merged items"
msgstr ""
-#: templates/js/translated/stock.js:773
+#: templates/js/translated/stock.js:772
msgid "Confirm stock item merge"
msgstr ""
-#: templates/js/translated/stock.js:774
+#: templates/js/translated/stock.js:773
msgid "Merge Stock Items"
msgstr ""
-#: templates/js/translated/stock.js:869
+#: templates/js/translated/stock.js:868
msgid "Transfer Stock"
msgstr ""
-#: templates/js/translated/stock.js:870
+#: templates/js/translated/stock.js:869
msgid "Move"
msgstr ""
-#: templates/js/translated/stock.js:876
+#: templates/js/translated/stock.js:875
msgid "Count Stock"
msgstr ""
-#: templates/js/translated/stock.js:877
+#: templates/js/translated/stock.js:876
msgid "Count"
msgstr ""
-#: templates/js/translated/stock.js:881
+#: templates/js/translated/stock.js:880
msgid "Remove Stock"
msgstr ""
-#: templates/js/translated/stock.js:882
+#: templates/js/translated/stock.js:881
msgid "Take"
msgstr ""
-#: templates/js/translated/stock.js:886
+#: templates/js/translated/stock.js:885
msgid "Add Stock"
msgstr ""
-#: templates/js/translated/stock.js:887 users/models.py:215
+#: templates/js/translated/stock.js:886 users/models.py:215
msgid "Add"
msgstr ""
-#: templates/js/translated/stock.js:891
+#: templates/js/translated/stock.js:890
msgid "Delete Stock"
msgstr ""
-#: templates/js/translated/stock.js:984
+#: templates/js/translated/stock.js:983
msgid "Quantity cannot be adjusted for serialized stock"
msgstr ""
-#: templates/js/translated/stock.js:984
+#: templates/js/translated/stock.js:983
msgid "Specify stock quantity"
msgstr ""
-#: templates/js/translated/stock.js:1024
+#: templates/js/translated/stock.js:1023
msgid "You must select at least one available stock item"
msgstr ""
-#: templates/js/translated/stock.js:1047
+#: templates/js/translated/stock.js:1046
msgid "Confirm stock adjustment"
msgstr ""
-#: templates/js/translated/stock.js:1172
+#: templates/js/translated/stock.js:1182
msgid "PASS"
msgstr ""
-#: templates/js/translated/stock.js:1174
+#: templates/js/translated/stock.js:1184
msgid "FAIL"
msgstr ""
-#: templates/js/translated/stock.js:1179
+#: templates/js/translated/stock.js:1189
msgid "NO RESULT"
msgstr ""
-#: templates/js/translated/stock.js:1226
+#: templates/js/translated/stock.js:1236
msgid "Pass test"
msgstr ""
-#: templates/js/translated/stock.js:1229
+#: templates/js/translated/stock.js:1239
msgid "Add test result"
msgstr ""
-#: templates/js/translated/stock.js:1255
+#: templates/js/translated/stock.js:1265
msgid "No test results found"
msgstr ""
-#: templates/js/translated/stock.js:1311
+#: templates/js/translated/stock.js:1321
msgid "Test Date"
msgstr ""
-#: templates/js/translated/stock.js:1476
+#: templates/js/translated/stock.js:1486
msgid "Edit Test Result"
msgstr ""
-#: templates/js/translated/stock.js:1498
+#: templates/js/translated/stock.js:1508
msgid "Delete Test Result"
msgstr ""
-#: templates/js/translated/stock.js:1527
+#: templates/js/translated/stock.js:1537
msgid "In production"
msgstr ""
-#: templates/js/translated/stock.js:1531
+#: templates/js/translated/stock.js:1541
msgid "Installed in Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:1539
+#: templates/js/translated/stock.js:1549
msgid "Assigned to Sales Order"
msgstr ""
-#: templates/js/translated/stock.js:1545
+#: templates/js/translated/stock.js:1555
msgid "No stock location set"
msgstr ""
-#: templates/js/translated/stock.js:1712
+#: templates/js/translated/stock.js:1722
msgid "Stock item is in production"
msgstr ""
-#: templates/js/translated/stock.js:1717
+#: templates/js/translated/stock.js:1727
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:1720
+#: templates/js/translated/stock.js:1730
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:1723
+#: templates/js/translated/stock.js:1733
msgid "Serialized stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:1725
+#: templates/js/translated/stock.js:1735
msgid "Stock item has been fully allocated"
msgstr ""
-#: templates/js/translated/stock.js:1727
+#: templates/js/translated/stock.js:1737
msgid "Stock item has been partially allocated"
msgstr ""
-#: templates/js/translated/stock.js:1730
+#: templates/js/translated/stock.js:1740
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:1734
+#: templates/js/translated/stock.js:1744
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:1736
+#: templates/js/translated/stock.js:1746
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:1743
+#: templates/js/translated/stock.js:1753
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:1745
+#: templates/js/translated/stock.js:1755
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:1747
+#: templates/js/translated/stock.js:1757
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:1751
+#: templates/js/translated/stock.js:1761
#: templates/js/translated/table_filters.js:188
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:1802
+#: templates/js/translated/stock.js:1812
msgid "Stocktake"
msgstr ""
-#: templates/js/translated/stock.js:1884
+#: templates/js/translated/stock.js:1894
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:1922
+#: templates/js/translated/stock.js:1932
msgid "No stock items matching query"
msgstr ""
-#: templates/js/translated/stock.js:2095
+#: templates/js/translated/stock.js:2105
msgid "Set Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:2109
+#: templates/js/translated/stock.js:2119
msgid "Select Status Code"
msgstr ""
-#: templates/js/translated/stock.js:2110
+#: templates/js/translated/stock.js:2120
msgid "Status code must be selected"
msgstr ""
-#: templates/js/translated/stock.js:2365
+#: templates/js/translated/stock.js:2375
msgid "Details"
msgstr ""
-#: templates/js/translated/stock.js:2381
+#: templates/js/translated/stock.js:2391
msgid "Part information unavailable"
msgstr ""
-#: templates/js/translated/stock.js:2403
+#: templates/js/translated/stock.js:2413
msgid "Location no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2422
+#: templates/js/translated/stock.js:2432
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2441
+#: templates/js/translated/stock.js:2451
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2459
+#: templates/js/translated/stock.js:2469
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2482
+#: templates/js/translated/stock.js:2492
msgid "Added"
msgstr ""
-#: templates/js/translated/stock.js:2490
+#: templates/js/translated/stock.js:2500
msgid "Removed"
msgstr ""
-#: templates/js/translated/stock.js:2566
+#: templates/js/translated/stock.js:2576
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:2617 templates/js/translated/stock.js:2653
+#: templates/js/translated/stock.js:2627 templates/js/translated/stock.js:2663
msgid "Uninstall Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:2666
+#: templates/js/translated/stock.js:2676
msgid "Select stock item to uninstall"
msgstr ""
-#: templates/js/translated/stock.js:2687
+#: templates/js/translated/stock.js:2697
msgid "Install another stock item into this item"
msgstr ""
-#: templates/js/translated/stock.js:2688
+#: templates/js/translated/stock.js:2698
msgid "Stock items can only be installed if they meet the following criteria"
msgstr ""
-#: templates/js/translated/stock.js:2690
+#: templates/js/translated/stock.js:2700
msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:2691
+#: templates/js/translated/stock.js:2701
msgid "The Stock Item is currently available in stock"
msgstr ""
-#: templates/js/translated/stock.js:2692
+#: templates/js/translated/stock.js:2702
msgid "The Stock Item is not already installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:2693
+#: templates/js/translated/stock.js:2703
msgid "The Stock Item is tracked by either a batch code or serial number"
msgstr ""
-#: templates/js/translated/stock.js:2706
+#: templates/js/translated/stock.js:2716
msgid "Select part to install"
msgstr ""
diff --git a/InvenTree/locale/fr/LC_MESSAGES/django.po b/InvenTree/locale/fr/LC_MESSAGES/django.po
index a542ca17c1..5434e6978a 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: 2022-06-05 14:26+0000\n"
-"PO-Revision-Date: 2022-06-05 14:34\n"
+"POT-Creation-Date: 2022-06-06 22:59+0000\n"
+"PO-Revision-Date: 2022-06-07 14:34\n"
"Last-Translator: \n"
"Language-Team: French\n"
"Language: fr_FR\n"
@@ -17,7 +17,7 @@ msgstr ""
"X-Crowdin-File: /[inventree.InvenTree] l10/InvenTree/locale/en/LC_MESSAGES/django.po\n"
"X-Crowdin-File-ID: 154\n"
-#: InvenTree/api.py:46
+#: InvenTree/api.py:49
msgid "API endpoint not found"
msgstr "Point de terminaison de l'API introuvable"
@@ -29,275 +29,273 @@ msgstr "Les détails de l'erreur peuvent être trouvées dans le panneau d'admin
msgid "Enter date"
msgstr "Entrer la date"
-#: InvenTree/forms.py:117 templates/account/email_confirm.html:20
-#: templates/js/translated/forms.js:630
-msgid "Confirm"
-msgstr "Confirmer"
-
-#: InvenTree/forms.py:134
+#: InvenTree/forms.py:117
msgid "Confirm delete"
msgstr "Confirmer la suppression"
-#: InvenTree/forms.py:135
+#: InvenTree/forms.py:118
msgid "Confirm item deletion"
msgstr "Confirmer la suppression de cet élément"
-#: InvenTree/forms.py:167
+#: InvenTree/forms.py:150
msgid "Enter password"
msgstr "Entrer le mot de passe"
-#: InvenTree/forms.py:168
+#: InvenTree/forms.py:151
msgid "Enter new password"
msgstr "Entrer le nouveau mot de passe"
-#: InvenTree/forms.py:175
+#: InvenTree/forms.py:158
msgid "Confirm password"
msgstr "Confirmez le mot de passe"
-#: InvenTree/forms.py:176
+#: InvenTree/forms.py:159
msgid "Confirm new password"
msgstr "Confirmer le nouveau mot de passe"
-#: InvenTree/forms.py:213
-msgid "Select Category"
-msgstr "Sélectionnez une catégorie"
-
-#: InvenTree/forms.py:234
+#: InvenTree/forms.py:184
msgid "Email (again)"
msgstr "Email (encore)"
-#: InvenTree/forms.py:238
+#: InvenTree/forms.py:188
msgid "Email address confirmation"
msgstr "Confirmation de l'adresse email"
-#: InvenTree/forms.py:259
+#: InvenTree/forms.py:209
msgid "You must type the same email each time."
msgstr "Vous devez taper le même e-mail à chaque fois."
-#: InvenTree/helpers.py:402
+#: InvenTree/helpers.py:404
#, python-brace-format
msgid "Duplicate serial: {sn}"
msgstr "Dupliquer le numéro : {sn}"
-#: InvenTree/helpers.py:409 order/models.py:365 order/models.py:517
+#: InvenTree/helpers.py:411 order/models.py:370 order/models.py:522
msgid "Invalid quantity provided"
msgstr "Quantité fournie invalide"
-#: InvenTree/helpers.py:412
+#: InvenTree/helpers.py:414
msgid "Empty serial number string"
msgstr "Chaîne de numéro de série vide"
-#: InvenTree/helpers.py:444
+#: InvenTree/helpers.py:446
#, python-brace-format
msgid "Invalid group range: {g}"
msgstr "Plage de groupe invalide : {g}"
-#: InvenTree/helpers.py:447
+#: InvenTree/helpers.py:449
#, python-brace-format
msgid "Invalid group: {g}"
msgstr "Groupe invalide : {g}"
-#: InvenTree/helpers.py:475
+#: InvenTree/helpers.py:477
#, python-brace-format
msgid "Invalid group sequence: {g}"
msgstr "Séquence de groupe invalide : {g}"
-#: InvenTree/helpers.py:483
+#: InvenTree/helpers.py:485
#, python-brace-format
msgid "Invalid/no group {group}"
msgstr "Invalide/aucun groupe {group}"
-#: InvenTree/helpers.py:489
+#: InvenTree/helpers.py:491
msgid "No serial numbers found"
msgstr "Aucun numéro de série trouvé"
-#: InvenTree/helpers.py:493
+#: InvenTree/helpers.py:495
#, python-brace-format
msgid "Number of unique serial numbers ({s}) must match quantity ({q})"
msgstr ""
-#: InvenTree/models.py:174
+#: InvenTree/models.py:178
msgid "Missing file"
msgstr "Fichier manquant"
-#: InvenTree/models.py:175
+#: InvenTree/models.py:179
msgid "Missing external link"
msgstr "Lien externe manquant"
-#: InvenTree/models.py:187 stock/models.py:2087
-#: templates/js/translated/attachment.js:101
-#: templates/js/translated/attachment.js:198
+#: InvenTree/models.py:191 stock/models.py:2091
+#: templates/js/translated/attachment.js:103
+#: templates/js/translated/attachment.js:194
msgid "Attachment"
msgstr "Pièce jointe"
-#: InvenTree/models.py:188
+#: InvenTree/models.py:192
msgid "Select file to attach"
msgstr "Sélectionnez un fichier à joindre"
-#: InvenTree/models.py:194 company/models.py:123 company/models.py:272
-#: company/models.py:506 order/models.py:135 order/models.py:1235
+#: InvenTree/models.py:198 company/models.py:123 company/models.py:272
+#: company/models.py:506 order/models.py:136 order/models.py:1251
#: part/models.py:795
#: report/templates/report/inventree_build_order_base.html:165
-#: templates/js/translated/company.js:655
-#: templates/js/translated/company.js:946 templates/js/translated/order.js:2676
-#: templates/js/translated/part.js:1441
+#: templates/js/translated/company.js:640
+#: templates/js/translated/company.js:931 templates/js/translated/order.js:2676
+#: templates/js/translated/part.js:1485
msgid "Link"
msgstr "Lien"
-#: InvenTree/models.py:195 build/models.py:320 part/models.py:796
+#: InvenTree/models.py:199 build/models.py:320 part/models.py:796
#: stock/models.py:642
msgid "Link to external URL"
msgstr "Lien vers une url externe"
-#: InvenTree/models.py:198 templates/js/translated/attachment.js:102
-#: templates/js/translated/attachment.js:242
+#: InvenTree/models.py:202 templates/js/translated/attachment.js:104
+#: templates/js/translated/attachment.js:238
msgid "Comment"
msgstr "Commentaire"
-#: InvenTree/models.py:198
+#: InvenTree/models.py:202
msgid "File comment"
msgstr "Commentaire du fichier"
-#: InvenTree/models.py:204 InvenTree/models.py:205 common/models.py:1499
-#: common/models.py:1500 common/models.py:1728 common/models.py:1729
-#: common/models.py:1991 common/models.py:1992 part/models.py:2153
-#: part/models.py:2173 plugin/models.py:238 plugin/models.py:239
+#: InvenTree/models.py:208 InvenTree/models.py:209 common/models.py:1506
+#: common/models.py:1507 common/models.py:1735 common/models.py:1736
+#: common/models.py:1998 common/models.py:1999 part/models.py:2141
+#: part/models.py:2161 plugin/models.py:238 plugin/models.py:239
#: report/templates/report/inventree_test_report_base.html:96
-#: templates/js/translated/stock.js:2513
+#: templates/js/translated/stock.js:2523
msgid "User"
msgstr "Utilisateur"
-#: InvenTree/models.py:208
+#: InvenTree/models.py:212
msgid "upload date"
msgstr "date de chargement"
-#: InvenTree/models.py:230
+#: InvenTree/models.py:234
msgid "Filename must not be empty"
msgstr "Le nom de fichier ne doit pas être vide"
-#: InvenTree/models.py:253
+#: InvenTree/models.py:257
msgid "Invalid attachment directory"
msgstr "Répertoire de pièce jointe invalide"
-#: InvenTree/models.py:263
+#: InvenTree/models.py:267
#, python-brace-format
msgid "Filename contains illegal character '{c}'"
msgstr "Le nom de fichier contient le caractère illégal '{c}'"
-#: InvenTree/models.py:266
+#: InvenTree/models.py:270
msgid "Filename missing extension"
msgstr "Extension manquante du nom de fichier"
-#: InvenTree/models.py:273
+#: InvenTree/models.py:277
msgid "Attachment with this filename already exists"
msgstr "Une pièce jointe avec ce nom de fichier existe déjà"
-#: InvenTree/models.py:280
+#: InvenTree/models.py:284
msgid "Error renaming file"
msgstr "Erreur lors du renommage du fichier"
-#: InvenTree/models.py:314
+#: InvenTree/models.py:318
msgid "Invalid choice"
msgstr "Choix invalide"
-#: InvenTree/models.py:333 InvenTree/models.py:334 common/models.py:1714
+#: InvenTree/models.py:337 InvenTree/models.py:338 common/models.py:1721
#: company/models.py:354 label/models.py:101 part/models.py:739
-#: part/models.py:2331 plugin/models.py:93 report/models.py:151
+#: part/models.py:2319 plugin/models.py:93 report/models.py:151
#: templates/InvenTree/notifications/notifications.html:84
#: templates/InvenTree/settings/mixins/urls.html:13
#: templates/InvenTree/settings/plugin.html:49
#: templates/InvenTree/settings/plugin.html:132
#: templates/InvenTree/settings/plugin_settings.html:23
#: templates/InvenTree/settings/settings.html:346
-#: templates/js/translated/company.js:539
-#: templates/js/translated/company.js:757 templates/js/translated/part.js:615
-#: templates/js/translated/part.js:767 templates/js/translated/part.js:1736
-#: templates/js/translated/stock.js:2283
+#: templates/js/translated/company.js:530
+#: templates/js/translated/company.js:742 templates/js/translated/part.js:659
+#: templates/js/translated/part.js:811 templates/js/translated/part.js:1832
+#: templates/js/translated/stock.js:2293
msgid "Name"
msgstr "Nom"
-#: InvenTree/models.py:340 build/models.py:197
+#: InvenTree/models.py:344 build/models.py:197
#: build/templates/build/detail.html:24 company/models.py:278
#: company/models.py:512 company/templates/company/company_base.html:71
#: company/templates/company/manufacturer_part.html:75
#: company/templates/company/supplier_part.html:73 label/models.py:108
-#: order/models.py:133 part/models.py:762 part/templates/part/category.html:74
-#: part/templates/part/part_base.html:167
-#: part/templates/part/set_category.html:14 report/models.py:164
+#: order/models.py:134 part/models.py:762 part/templates/part/category.html:74
+#: part/templates/part/part_base.html:167 report/models.py:164
#: report/models.py:509 report/models.py:550
#: report/templates/report/inventree_build_order_base.html:118
#: stock/templates/stock/location.html:103
#: templates/InvenTree/settings/plugin_settings.html:33
-#: templates/js/translated/bom.js:553 templates/js/translated/bom.js:851
-#: templates/js/translated/build.js:2476 templates/js/translated/company.js:401
-#: templates/js/translated/company.js:666
-#: templates/js/translated/company.js:957 templates/js/translated/order.js:1656
+#: templates/js/translated/bom.js:553 templates/js/translated/bom.js:845
+#: templates/js/translated/build.js:2476 templates/js/translated/company.js:395
+#: templates/js/translated/company.js:651
+#: templates/js/translated/company.js:942 templates/js/translated/order.js:1656
#: templates/js/translated/order.js:1888 templates/js/translated/order.js:2476
-#: templates/js/translated/part.js:674 templates/js/translated/part.js:1082
-#: templates/js/translated/part.js:1355 templates/js/translated/part.js:1755
-#: templates/js/translated/part.js:1824 templates/js/translated/stock.js:1676
-#: templates/js/translated/stock.js:2295 templates/js/translated/stock.js:2350
+#: templates/js/translated/part.js:718 templates/js/translated/part.js:1126
+#: templates/js/translated/part.js:1399 templates/js/translated/part.js:1851
+#: templates/js/translated/part.js:1920 templates/js/translated/stock.js:1686
+#: templates/js/translated/stock.js:2305 templates/js/translated/stock.js:2360
msgid "Description"
msgstr "Description"
-#: InvenTree/models.py:341
+#: InvenTree/models.py:345
msgid "Description (optional)"
msgstr "Description (facultative)"
-#: InvenTree/models.py:349
+#: InvenTree/models.py:353
msgid "parent"
msgstr "parent"
-#: InvenTree/serializers.py:52 part/models.py:2652
+#: InvenTree/models.py:466
+msgid "Server Error"
+msgstr ""
+
+#: InvenTree/models.py:467
+msgid "An error has been logged by the server."
+msgstr ""
+
+#: InvenTree/serializers.py:52 part/models.py:2640
msgid "Must be a valid number"
msgstr "Doit être un nombre valide"
-#: InvenTree/serializers.py:271
+#: InvenTree/serializers.py:263
msgid "Filename"
msgstr "Nom du fichier"
-#: InvenTree/serializers.py:306
+#: InvenTree/serializers.py:298
msgid "Invalid value"
msgstr "Valeur non valide"
-#: InvenTree/serializers.py:328
+#: InvenTree/serializers.py:320
msgid "Data File"
msgstr "Fichier de données"
-#: InvenTree/serializers.py:329
+#: InvenTree/serializers.py:321
msgid "Select data file for upload"
msgstr "Sélectionnez le fichier de données à envoyer"
-#: InvenTree/serializers.py:350
+#: InvenTree/serializers.py:342
msgid "Unsupported file type"
msgstr "Format de fichier non supporté"
-#: InvenTree/serializers.py:356
+#: InvenTree/serializers.py:348
msgid "File is too large"
msgstr "Fichier trop volumineux"
-#: InvenTree/serializers.py:377
+#: InvenTree/serializers.py:369
msgid "No columns found in file"
msgstr "Pas de colonnes trouvées dans le fichier"
-#: InvenTree/serializers.py:380
+#: InvenTree/serializers.py:372
msgid "No data rows found in file"
msgstr "Par de lignes de données trouvées dans le fichier"
-#: InvenTree/serializers.py:503
+#: InvenTree/serializers.py:495
msgid "No data rows provided"
msgstr "Pas de lignes de données fournies"
-#: InvenTree/serializers.py:506
+#: InvenTree/serializers.py:498
msgid "No data columns supplied"
msgstr "Pas de colonne de données fournie"
-#: InvenTree/serializers.py:583
+#: InvenTree/serializers.py:575
#, python-brace-format
msgid "Missing required column: '{name}'"
msgstr "Colonne requise manquante : {name}"
-#: InvenTree/serializers.py:592
+#: InvenTree/serializers.py:584
#, python-brace-format
msgid "Duplicate column: '{col}'"
msgstr "Colonne duliquée : '{col}'"
@@ -440,7 +438,7 @@ msgstr "Perdu"
msgid "Returned"
msgstr "Retourné"
-#: InvenTree/status_codes.py:141 order/models.py:1114
+#: InvenTree/status_codes.py:141 order/models.py:1130
#: templates/js/translated/order.js:3264 templates/js/translated/order.js:3607
msgid "Shipped"
msgstr "Expédié"
@@ -525,7 +523,7 @@ msgstr "Séparer de l'élément parent"
msgid "Split child item"
msgstr "Fractionner l'élément enfant"
-#: InvenTree/status_codes.py:281 templates/js/translated/stock.js:2020
+#: InvenTree/status_codes.py:281 templates/js/translated/stock.js:2030
msgid "Merged stock items"
msgstr "Articles de stock fusionnés"
@@ -597,27 +595,27 @@ msgstr "Le surplus ne doit pas dépasser 100%"
msgid "Invalid value for overage"
msgstr "Valeur invalide pour le dépassement"
-#: InvenTree/views.py:522
+#: InvenTree/views.py:521
msgid "Delete Item"
msgstr "Supprimer cet élément"
-#: InvenTree/views.py:571
+#: InvenTree/views.py:570
msgid "Check box to confirm item deletion"
msgstr "Cochez la case pour confirmer la suppression de l'élément"
-#: InvenTree/views.py:586 templates/InvenTree/settings/user.html:22
+#: InvenTree/views.py:585 templates/InvenTree/settings/user.html:22
msgid "Edit User Information"
msgstr "Modifier les informations utilisateur"
-#: InvenTree/views.py:598 templates/InvenTree/settings/user.html:19
+#: InvenTree/views.py:597 templates/InvenTree/settings/user.html:19
msgid "Set Password"
msgstr "Définir le mot de passe"
-#: InvenTree/views.py:618
+#: InvenTree/views.py:617
msgid "Password fields must match"
msgstr "Les mots de passe doivent correspondre"
-#: InvenTree/views.py:842 templates/navbar.html:152
+#: InvenTree/views.py:807 templates/navbar.html:152
msgid "System Information"
msgstr "Informations système"
@@ -628,6 +626,7 @@ msgstr "Choix invalide pour la fabrication parente"
#: build/models.py:131 build/templates/build/build_base.html:9
#: build/templates/build/build_base.html:27
#: report/templates/report/inventree_build_order_base.html:106
+#: templates/email/overdue_build_order.html:15
#: templates/js/translated/build.js:727
msgid "Build Order"
msgstr "Ordre de Fabrication"
@@ -646,12 +645,12 @@ msgstr "Ordres de Fabrication"
msgid "Build Order Reference"
msgstr "Référence de l' Ordre de Fabrication"
-#: build/models.py:189 order/models.py:288 order/models.py:638
-#: order/models.py:916 part/models.py:2570
+#: build/models.py:189 order/models.py:293 order/models.py:654
+#: order/models.py:932 part/models.py:2558
#: part/templates/part/upload_bom.html:54
#: report/templates/report/inventree_po_report.html:91
#: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:688 templates/js/translated/bom.js:858
+#: templates/js/translated/bom.js:690 templates/js/translated/bom.js:852
#: templates/js/translated/build.js:1777 templates/js/translated/order.js:1919
#: templates/js/translated/order.js:2120 templates/js/translated/order.js:3448
#: templates/js/translated/order.js:3959
@@ -673,13 +672,12 @@ msgstr "BuildOrder associé a cette fabrication"
#: build/models.py:215 build/templates/build/build_base.html:77
#: build/templates/build/detail.html:29 company/models.py:647
-#: order/models.py:1012 order/models.py:1103 part/models.py:336
-#: part/models.py:2099 part/models.py:2114 part/models.py:2133
-#: part/models.py:2151 part/models.py:2250 part/models.py:2370
-#: part/models.py:2460 part/models.py:2545 part/models.py:2821
-#: part/serializers.py:793 part/templates/part/part_app_base.html:8
+#: order/models.py:1028 order/models.py:1119 part/models.py:336
+#: part/models.py:2087 part/models.py:2102 part/models.py:2121
+#: part/models.py:2139 part/models.py:2238 part/models.py:2358
+#: part/models.py:2448 part/models.py:2533 part/models.py:2809
+#: part/serializers.py:795 part/templates/part/part_app_base.html:8
#: part/templates/part/part_pricing.html:12
-#: part/templates/part/set_category.html:13
#: part/templates/part/upload_bom.html:52
#: report/templates/report/inventree_build_order_base.html:110
#: report/templates/report/inventree_po_report.html:89
@@ -687,22 +685,23 @@ msgstr "BuildOrder associé a cette fabrication"
#: templates/InvenTree/search.html:80
#: templates/email/build_order_required_stock.html:17
#: templates/email/low_stock_notification.html:16
+#: templates/email/overdue_build_order.html:16
#: templates/js/translated/barcode.js:435 templates/js/translated/bom.js:552
-#: templates/js/translated/bom.js:687 templates/js/translated/bom.js:805
+#: templates/js/translated/bom.js:689 templates/js/translated/bom.js:799
#: templates/js/translated/build.js:1153 templates/js/translated/build.js:1647
#: templates/js/translated/build.js:2083 templates/js/translated/build.js:2481
-#: templates/js/translated/company.js:252
-#: templates/js/translated/company.js:486
-#: templates/js/translated/company.js:607
-#: templates/js/translated/company.js:866 templates/js/translated/order.js:100
+#: templates/js/translated/company.js:253
+#: templates/js/translated/company.js:482
+#: templates/js/translated/company.js:592
+#: templates/js/translated/company.js:851 templates/js/translated/order.js:100
#: templates/js/translated/order.js:883 templates/js/translated/order.js:1315
#: templates/js/translated/order.js:1873 templates/js/translated/order.js:2819
#: templates/js/translated/order.js:3217 templates/js/translated/order.js:3432
-#: templates/js/translated/part.js:1067 templates/js/translated/part.js:1137
-#: templates/js/translated/part.js:1333 templates/js/translated/stock.js:531
-#: templates/js/translated/stock.js:696 templates/js/translated/stock.js:903
-#: templates/js/translated/stock.js:1633 templates/js/translated/stock.js:2376
-#: templates/js/translated/stock.js:2571 templates/js/translated/stock.js:2705
+#: templates/js/translated/part.js:1111 templates/js/translated/part.js:1181
+#: templates/js/translated/part.js:1377 templates/js/translated/stock.js:530
+#: templates/js/translated/stock.js:695 templates/js/translated/stock.js:902
+#: templates/js/translated/stock.js:1643 templates/js/translated/stock.js:2386
+#: templates/js/translated/stock.js:2581 templates/js/translated/stock.js:2715
msgid "Part"
msgstr "Pièce"
@@ -768,12 +767,12 @@ msgstr "Code de lot"
msgid "Batch code for this build output"
msgstr "Code de lot pour ce build output"
-#: build/models.py:282 order/models.py:137 part/models.py:932
+#: build/models.py:282 order/models.py:138 part/models.py:932
#: part/templates/part/part_base.html:305 templates/js/translated/order.js:2489
msgid "Creation Date"
msgstr "Date de création"
-#: build/models.py:286 order/models.py:660
+#: build/models.py:286 order/models.py:676
msgid "Target completion date"
msgstr "Date d'achèvement cible"
@@ -781,7 +780,7 @@ msgstr "Date d'achèvement cible"
msgid "Target date for build completion. Build will be overdue after this date."
msgstr "Date cible pour l'achèvement de la construction. La construction sera en retard après cette date."
-#: build/models.py:290 order/models.py:331
+#: build/models.py:290 order/models.py:336
#: templates/js/translated/build.js:2558
msgid "Completion Date"
msgstr "Date d'achèvement"
@@ -799,7 +798,7 @@ msgid "User who issued this build order"
msgstr "Utilisateur ayant émis cette commande de construction"
#: build/models.py:313 build/templates/build/build_base.html:190
-#: build/templates/build/detail.html:115 order/models.py:151
+#: build/templates/build/detail.html:115 order/models.py:152
#: order/templates/order/order_base.html:176
#: order/templates/order/sales_order_base.html:183 part/models.py:936
#: report/templates/report/inventree_build_order_base.html:159
@@ -822,20 +821,20 @@ msgstr "Lien Externe"
#: build/models.py:324 build/serializers.py:374
#: build/templates/build/sidebar.html:21 company/models.py:134
#: company/models.py:519 company/templates/company/sidebar.html:25
-#: order/models.py:155 order/models.py:918 order/models.py:1213
+#: order/models.py:156 order/models.py:934 order/models.py:1229
#: order/templates/order/po_sidebar.html:11
#: order/templates/order/so_sidebar.html:17 part/models.py:921
#: part/templates/part/part_sidebar.html:59
#: report/templates/report/inventree_build_order_base.html:173
-#: stock/models.py:713 stock/models.py:1985 stock/models.py:2093
+#: stock/models.py:713 stock/models.py:1989 stock/models.py:2097
#: stock/serializers.py:315 stock/serializers.py:444 stock/serializers.py:486
-#: stock/serializers.py:772 stock/serializers.py:871 stock/serializers.py:1003
+#: stock/serializers.py:759 stock/serializers.py:858 stock/serializers.py:990
#: stock/templates/stock/stock_sidebar.html:25
-#: templates/js/translated/barcode.js:100 templates/js/translated/bom.js:1044
-#: templates/js/translated/company.js:962 templates/js/translated/order.js:2040
+#: templates/js/translated/barcode.js:100 templates/js/translated/bom.js:1038
+#: templates/js/translated/company.js:947 templates/js/translated/order.js:2040
#: templates/js/translated/order.js:2191 templates/js/translated/order.js:2687
#: templates/js/translated/order.js:3632 templates/js/translated/order.js:4030
-#: templates/js/translated/stock.js:1307 templates/js/translated/stock.js:1916
+#: templates/js/translated/stock.js:1317 templates/js/translated/stock.js:1926
msgid "Notes"
msgstr "Notes"
@@ -855,44 +854,44 @@ msgstr "L'ordre de production a déjà été réalisé"
msgid "Build output does not match Build Order"
msgstr "L'ordre de production de correspond pas à l'ordre de commande"
-#: build/models.py:1108
+#: build/models.py:1111
msgid "Build item must specify a build output, as master part is marked as trackable"
msgstr "L'élément de construction doit spécifier une sortie de construction, la pièce maîtresse étant marquée comme objet traçable"
-#: build/models.py:1117
+#: build/models.py:1120
#, python-brace-format
msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})"
msgstr "La quantité allouée ({q}) ne doit pas excéder la quantité disponible ({a})"
-#: build/models.py:1127
+#: build/models.py:1130
msgid "Stock item is over-allocated"
msgstr "L'article de stock est suralloué"
-#: build/models.py:1133 order/models.py:1372
+#: build/models.py:1136 order/models.py:1388
msgid "Allocation quantity must be greater than zero"
msgstr "La quantité allouée doit être supérieure à zéro"
-#: build/models.py:1139
+#: build/models.py:1142
msgid "Quantity must be 1 for serialized stock"
msgstr "La quantité doit être de 1 pour stock sérialisé"
-#: build/models.py:1196
+#: build/models.py:1199
msgid "Selected stock item not found in BOM"
msgstr "L'article du stock sélectionné n'a pas été trouvé dans la BOM"
-#: build/models.py:1265 stock/templates/stock/item_base.html:177
+#: build/models.py:1268 stock/templates/stock/item_base.html:177
#: templates/InvenTree/search.html:137 templates/js/translated/build.js:2454
#: templates/navbar.html:38
msgid "Build"
msgstr "Assemblage"
-#: build/models.py:1266
+#: build/models.py:1269
msgid "Build to allocate parts"
msgstr "Construction à laquelle allouer des pièces"
-#: build/models.py:1282 build/serializers.py:603 order/serializers.py:994
-#: order/serializers.py:1015 stock/serializers.py:382 stock/serializers.py:703
-#: stock/serializers.py:829 stock/templates/stock/item_base.html:10
+#: build/models.py:1285 build/serializers.py:603 order/serializers.py:996
+#: order/serializers.py:1017 stock/serializers.py:382 stock/serializers.py:690
+#: stock/serializers.py:816 stock/templates/stock/item_base.html:10
#: stock/templates/stock/item_base.html:23
#: stock/templates/stock/item_base.html:199
#: templates/js/translated/build.js:738 templates/js/translated/build.js:743
@@ -900,22 +899,22 @@ msgstr "Construction à laquelle allouer des pièces"
#: templates/js/translated/order.js:101 templates/js/translated/order.js:2820
#: templates/js/translated/order.js:3124 templates/js/translated/order.js:3129
#: templates/js/translated/order.js:3224 templates/js/translated/order.js:3314
-#: templates/js/translated/stock.js:532 templates/js/translated/stock.js:697
-#: templates/js/translated/stock.js:2449
+#: templates/js/translated/stock.js:531 templates/js/translated/stock.js:696
+#: templates/js/translated/stock.js:2459
msgid "Stock Item"
msgstr "Article en stock"
-#: build/models.py:1283
+#: build/models.py:1286
msgid "Source stock item"
msgstr "Stock d'origine de l'article"
-#: build/models.py:1295 build/serializers.py:183
+#: build/models.py:1298 build/serializers.py:183
#: build/templates/build/build_base.html:82
-#: build/templates/build/detail.html:34 common/models.py:1536
+#: build/templates/build/detail.html:34 common/models.py:1543
#: company/forms.py:36 company/templates/company/supplier_part.html:258
-#: order/models.py:909 order/models.py:1412 order/serializers.py:1134
-#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:68
-#: part/forms.py:83 part/forms.py:98 part/models.py:2561
+#: order/models.py:925 order/models.py:1428 order/serializers.py:1136
+#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:59
+#: part/forms.py:74 part/forms.py:89 part/models.py:2549
#: part/templates/part/detail.html:935 part/templates/part/detail.html:1021
#: part/templates/part/part_pricing.html:16
#: part/templates/part/upload_bom.html:53
@@ -926,8 +925,8 @@ msgstr "Stock d'origine de l'article"
#: report/templates/report/inventree_test_report_base.html:139
#: stock/serializers.py:279 stock/templates/stock/item_base.html:292
#: stock/templates/stock/item_base.html:300
-#: templates/js/translated/barcode.js:437 templates/js/translated/bom.js:689
-#: templates/js/translated/bom.js:866 templates/js/translated/build.js:422
+#: templates/js/translated/barcode.js:437 templates/js/translated/bom.js:691
+#: templates/js/translated/bom.js:860 templates/js/translated/build.js:422
#: templates/js/translated/build.js:574 templates/js/translated/build.js:765
#: templates/js/translated/build.js:1175 templates/js/translated/build.js:1673
#: templates/js/translated/build.js:2086
@@ -937,23 +936,23 @@ msgstr "Stock d'origine de l'article"
#: templates/js/translated/order.js:2821 templates/js/translated/order.js:3143
#: templates/js/translated/order.js:3231 templates/js/translated/order.js:3320
#: templates/js/translated/order.js:3454 templates/js/translated/order.js:3965
-#: templates/js/translated/part.js:967 templates/js/translated/part.js:1969
-#: templates/js/translated/part.js:2200 templates/js/translated/part.js:2234
-#: templates/js/translated/part.js:2312 templates/js/translated/stock.js:403
-#: templates/js/translated/stock.js:557 templates/js/translated/stock.js:727
-#: templates/js/translated/stock.js:2498 templates/js/translated/stock.js:2583
+#: templates/js/translated/part.js:1011 templates/js/translated/part.js:2065
+#: templates/js/translated/part.js:2296 templates/js/translated/part.js:2330
+#: templates/js/translated/part.js:2408 templates/js/translated/stock.js:402
+#: templates/js/translated/stock.js:556 templates/js/translated/stock.js:726
+#: templates/js/translated/stock.js:2508 templates/js/translated/stock.js:2593
msgid "Quantity"
msgstr "Quantité"
-#: build/models.py:1296
+#: build/models.py:1299
msgid "Stock quantity to allocate to build"
msgstr "Quantité de stock à allouer à la construction"
-#: build/models.py:1304
+#: build/models.py:1307
msgid "Install into"
msgstr "Installer dans"
-#: build/models.py:1305
+#: build/models.py:1308
msgid "Destination stock item"
msgstr "Stock de destination de l'article"
@@ -982,9 +981,9 @@ msgstr "Cet ordre de production n'est pas complètement attribué"
msgid "Enter quantity for build output"
msgstr "Entrer la quantité désiré pour la fabrication"
-#: build/serializers.py:198 build/serializers.py:623 order/models.py:363
-#: order/serializers.py:280 order/serializers.py:435 part/serializers.py:512
-#: part/serializers.py:956 stock/models.py:470 stock/models.py:1239
+#: build/serializers.py:198 build/serializers.py:623 order/models.py:368
+#: order/serializers.py:280 order/serializers.py:435 part/serializers.py:514
+#: part/serializers.py:958 stock/models.py:470 stock/models.py:1239
#: stock/serializers.py:288
msgid "Quantity must be greater than zero"
msgstr "La quantité doit être supérieure à zéro"
@@ -997,9 +996,9 @@ msgstr "Quantité entière requise pour les pièces à suivre"
msgid "Integer quantity required, as the bill of materials contains trackable parts"
msgstr "Quantité entière requise, car la facture de matériaux contient des pièces à puce"
-#: build/serializers.py:222 order/serializers.py:448 order/serializers.py:1138
+#: build/serializers.py:222 order/serializers.py:448 order/serializers.py:1140
#: stock/serializers.py:297 templates/js/translated/order.js:1186
-#: templates/js/translated/stock.js:238 templates/js/translated/stock.js:404
+#: templates/js/translated/stock.js:237 templates/js/translated/stock.js:403
msgid "Serial Numbers"
msgstr "Numéros de série"
@@ -1015,7 +1014,7 @@ msgstr "Allouer automatiquement les numéros de série"
msgid "Automatically allocate required items with matching serial numbers"
msgstr "Affecter automatiquement les éléments requis avec les numéros de série correspondants"
-#: build/serializers.py:268 stock/api.py:552
+#: build/serializers.py:268 stock/api.py:553
msgid "The following serial numbers already exist"
msgstr "Le numéro de série suivant existe déjà"
@@ -1025,16 +1024,16 @@ msgstr "Une liste d'ordre de production doit être fourni"
#: build/serializers.py:356 order/serializers.py:421 order/serializers.py:525
#: stock/serializers.py:308 stock/serializers.py:439 stock/serializers.py:481
-#: stock/serializers.py:864 stock/serializers.py:1097
+#: stock/serializers.py:851 stock/serializers.py:1084
#: stock/templates/stock/item_base.html:390
#: templates/js/translated/barcode.js:436
#: templates/js/translated/barcode.js:618 templates/js/translated/build.js:750
#: templates/js/translated/build.js:1685 templates/js/translated/order.js:1213
#: templates/js/translated/order.js:3136 templates/js/translated/order.js:3239
#: templates/js/translated/order.js:3247 templates/js/translated/order.js:3328
-#: templates/js/translated/part.js:180 templates/js/translated/stock.js:533
-#: templates/js/translated/stock.js:698 templates/js/translated/stock.js:905
-#: templates/js/translated/stock.js:1787 templates/js/translated/stock.js:2390
+#: templates/js/translated/part.js:180 templates/js/translated/stock.js:532
+#: templates/js/translated/stock.js:697 templates/js/translated/stock.js:904
+#: templates/js/translated/stock.js:1797 templates/js/translated/stock.js:2400
msgid "Location"
msgstr "Emplacement"
@@ -1043,12 +1042,12 @@ msgid "Location for completed build outputs"
msgstr "Emplacement des ordres de production achevés"
#: build/serializers.py:363 build/templates/build/build_base.html:142
-#: build/templates/build/detail.html:62 order/models.py:654
+#: build/templates/build/detail.html:62 order/models.py:670
#: order/serializers.py:458 stock/templates/stock/item_base.html:423
#: templates/js/translated/barcode.js:182 templates/js/translated/build.js:2510
#: templates/js/translated/order.js:1320 templates/js/translated/order.js:1660
-#: templates/js/translated/order.js:2481 templates/js/translated/stock.js:1762
-#: templates/js/translated/stock.js:2467 templates/js/translated/stock.js:2599
+#: templates/js/translated/order.js:2481 templates/js/translated/stock.js:1772
+#: templates/js/translated/stock.js:2477 templates/js/translated/stock.js:2609
msgid "Status"
msgstr "État"
@@ -1108,8 +1107,8 @@ msgstr "L'ordre de production a des sorties incomplètes"
msgid "No build outputs have been created for this build order"
msgstr "Aucune sortie de construction n'a été créée pour cet ordre de construction"
-#: build/serializers.py:535 build/serializers.py:580 part/models.py:2679
-#: part/models.py:2813
+#: build/serializers.py:535 build/serializers.py:580 part/models.py:2667
+#: part/models.py:2801
msgid "BOM Item"
msgstr ""
@@ -1125,11 +1124,11 @@ msgstr ""
msgid "bom_item.part must point to the same part as the build order"
msgstr ""
-#: build/serializers.py:609 stock/serializers.py:716
+#: build/serializers.py:609 stock/serializers.py:703
msgid "Item must be in stock"
msgstr "L'article doit être en stock"
-#: build/serializers.py:667 order/serializers.py:1052
+#: build/serializers.py:667 order/serializers.py:1054
#, python-brace-format
msgid "Available quantity ({q}) exceeded"
msgstr "Quantité disponible ({q}) dépassée"
@@ -1146,7 +1145,7 @@ msgstr ""
msgid "This stock item has already been allocated to this build output"
msgstr ""
-#: build/serializers.py:708 order/serializers.py:1298
+#: build/serializers.py:708 order/serializers.py:1300
msgid "Allocation items must be provided"
msgstr ""
@@ -1178,10 +1177,19 @@ msgstr ""
msgid "Allow allocation of substitute parts"
msgstr ""
-#: build/tasks.py:96
+#: build/tasks.py:100
msgid "Stock required for build order"
msgstr "Stock requis pour la commande de construction"
+#: build/tasks.py:118
+msgid "Overdue Build Order"
+msgstr ""
+
+#: build/tasks.py:123
+#, python-brace-format
+msgid "Build order {bo} is now overdue"
+msgstr ""
+
#: build/templates/build/build_base.html:39
#: order/templates/order/order_base.html:28
#: order/templates/order/sales_order_base.html:38
@@ -1244,13 +1252,13 @@ msgid "Stock has not been fully allocated to this Build Order"
msgstr "Le stock n'a pas été entièrement alloué à cet ordre de construction"
#: build/templates/build/build_base.html:151
-#: build/templates/build/detail.html:131 order/models.py:922
+#: build/templates/build/detail.html:131 order/models.py:938
#: order/templates/order/order_base.html:162
#: order/templates/order/sales_order_base.html:164
#: report/templates/report/inventree_build_order_base.html:126
#: templates/js/translated/build.js:2550 templates/js/translated/order.js:1677
#: templates/js/translated/order.js:1987 templates/js/translated/order.js:2497
-#: templates/js/translated/order.js:3517 templates/js/translated/part.js:971
+#: templates/js/translated/order.js:3517 templates/js/translated/part.js:1015
msgid "Target Date"
msgstr "Date Cible"
@@ -1277,13 +1285,14 @@ msgid "Completed"
msgstr "Terminé"
#: build/templates/build/build_base.html:176
-#: build/templates/build/detail.html:94 order/models.py:1100
-#: order/models.py:1185 order/models.py:1320
+#: build/templates/build/detail.html:94 order/models.py:1116
+#: order/models.py:1201 order/models.py:1336
#: order/templates/order/sales_order_base.html:9
#: order/templates/order/sales_order_base.html:28
#: report/templates/report/inventree_build_order_base.html:136
#: report/templates/report/inventree_so_report.html:77
#: stock/templates/stock/item_base.html:370
+#: templates/email/overdue_sales_order.html:15
#: templates/js/translated/order.js:2436
msgid "Sales Order"
msgstr "Commandes"
@@ -1319,7 +1328,7 @@ msgstr "Stock d'origine"
msgid "Stock can be taken from any available location."
msgstr "Le stock peut être pris à partir de n'importe quel endroit disponible."
-#: build/templates/build/detail.html:49 order/models.py:1034
+#: build/templates/build/detail.html:49 order/models.py:1050
#: templates/js/translated/order.js:1321 templates/js/translated/order.js:2029
msgid "Destination"
msgstr "Destination"
@@ -1336,8 +1345,8 @@ msgstr "Pièces allouées"
#: stock/templates/stock/item_base.html:170
#: templates/js/translated/build.js:1179
#: templates/js/translated/model_renderers.js:112
-#: templates/js/translated/stock.js:971 templates/js/translated/stock.js:1776
-#: templates/js/translated/stock.js:2606
+#: templates/js/translated/stock.js:970 templates/js/translated/stock.js:1786
+#: templates/js/translated/stock.js:2616
#: templates/js/translated/table_filters.js:151
#: templates/js/translated/table_filters.js:242
msgid "Batch"
@@ -1716,7 +1725,7 @@ msgstr "Copier les templates de paramètres de catégorie"
msgid "Copy category parameter templates when creating a part"
msgstr "Copier les templates de paramètres de la catégorie lors de la création d'une pièce"
-#: common/models.py:820 part/models.py:2372 report/models.py:157
+#: common/models.py:820 part/models.py:2360 report/models.py:157
#: templates/js/translated/table_filters.js:38
#: templates/js/translated/table_filters.js:444
msgid "Template"
@@ -1726,7 +1735,7 @@ msgstr ""
msgid "Parts are templates by default"
msgstr "Les pièces sont des templates par défaut"
-#: common/models.py:827 part/models.py:884 templates/js/translated/bom.js:1390
+#: common/models.py:827 part/models.py:884 templates/js/translated/bom.js:1384
#: templates/js/translated/table_filters.js:168
#: templates/js/translated/table_filters.js:460
msgid "Assembly"
@@ -1880,576 +1889,584 @@ msgid "Default page size for PDF reports"
msgstr ""
#: common/models.py:968
-msgid "Test Reports"
-msgstr "Rapports de test"
+msgid "Enable Test Reports"
+msgstr ""
#: common/models.py:969
msgid "Enable generation of test reports"
msgstr ""
#: common/models.py:975
-msgid "Batch Code Template"
+msgid "Attach Test Reports"
msgstr ""
#: common/models.py:976
-msgid "Template for generating default batch codes for stock items"
-msgstr ""
-
-#: common/models.py:981
-msgid "Stock Expiry"
+msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item"
msgstr ""
#: common/models.py:982
-msgid "Enable stock expiry functionality"
+msgid "Batch Code Template"
+msgstr ""
+
+#: common/models.py:983
+msgid "Template for generating default batch codes for stock items"
msgstr ""
#: common/models.py:988
-msgid "Sell Expired Stock"
+msgid "Stock Expiry"
msgstr ""
#: common/models.py:989
-msgid "Allow sale of expired stock"
+msgid "Enable stock expiry functionality"
msgstr ""
#: common/models.py:995
-msgid "Stock Stale Time"
+msgid "Sell Expired Stock"
msgstr ""
#: common/models.py:996
+msgid "Allow sale of expired stock"
+msgstr ""
+
+#: common/models.py:1002
+msgid "Stock Stale Time"
+msgstr ""
+
+#: common/models.py:1003
msgid "Number of days stock items are considered stale before expiring"
msgstr ""
-#: common/models.py:998
+#: common/models.py:1005
msgid "days"
msgstr "jours"
-#: common/models.py:1003
+#: common/models.py:1010
msgid "Build Expired Stock"
msgstr ""
-#: common/models.py:1004
+#: common/models.py:1011
msgid "Allow building with expired stock"
msgstr ""
-#: common/models.py:1010
+#: common/models.py:1017
msgid "Stock Ownership Control"
msgstr ""
-#: common/models.py:1011
+#: common/models.py:1018
msgid "Enable ownership control over stock locations and items"
msgstr ""
-#: common/models.py:1017
+#: common/models.py:1024
msgid "Build Order Reference Prefix"
msgstr ""
-#: common/models.py:1018
+#: common/models.py:1025
msgid "Prefix value for build order reference"
msgstr ""
-#: common/models.py:1023
+#: common/models.py:1030
msgid "Build Order Reference Regex"
msgstr ""
-#: common/models.py:1024
+#: common/models.py:1031
msgid "Regular expression pattern for matching build order reference"
msgstr ""
-#: common/models.py:1028
+#: common/models.py:1035
msgid "Sales Order Reference Prefix"
msgstr ""
-#: common/models.py:1029
+#: common/models.py:1036
msgid "Prefix value for sales order reference"
msgstr "Valeur préfixe référence commande client"
-#: common/models.py:1034
+#: common/models.py:1041
msgid "Sales Order Default Shipment"
msgstr ""
-#: common/models.py:1035
+#: common/models.py:1042
msgid "Enable creation of default shipment with sales orders"
msgstr ""
-#: common/models.py:1041
+#: common/models.py:1048
msgid "Purchase Order Reference Prefix"
msgstr "Préfixe des commandes d'achats"
-#: common/models.py:1042
+#: common/models.py:1049
msgid "Prefix value for purchase order reference"
msgstr "Valeur préfixe référence bon de commande"
-#: common/models.py:1048
+#: common/models.py:1055
msgid "Enable password forgot"
msgstr "Activer les mots de passe oubliés"
-#: common/models.py:1049
+#: common/models.py:1056
msgid "Enable password forgot function on the login pages"
msgstr ""
-#: common/models.py:1055
+#: common/models.py:1062
msgid "Enable registration"
msgstr "Activer les inscriptions"
-#: common/models.py:1056
+#: common/models.py:1063
msgid "Enable self-registration for users on the login pages"
msgstr ""
-#: common/models.py:1062
+#: common/models.py:1069
msgid "Enable SSO"
msgstr "Activer le SSO"
-#: common/models.py:1063
+#: common/models.py:1070
msgid "Enable SSO on the login pages"
msgstr "Activer le SSO sur les pages de connexion"
-#: common/models.py:1069
+#: common/models.py:1076
msgid "Email required"
msgstr "Email requis"
-#: common/models.py:1070
+#: common/models.py:1077
msgid "Require user to supply mail on signup"
msgstr ""
-#: common/models.py:1076
+#: common/models.py:1083
msgid "Auto-fill SSO users"
msgstr "Saisie automatique des utilisateurs SSO"
-#: common/models.py:1077
+#: common/models.py:1084
msgid "Automatically fill out user-details from SSO account-data"
msgstr ""
-#: common/models.py:1083
+#: common/models.py:1090
msgid "Mail twice"
msgstr "Courriel en double"
-#: common/models.py:1084
+#: common/models.py:1091
msgid "On signup ask users twice for their mail"
msgstr ""
-#: common/models.py:1090
+#: common/models.py:1097
msgid "Password twice"
msgstr ""
-#: common/models.py:1091
+#: common/models.py:1098
msgid "On signup ask users twice for their password"
msgstr ""
-#: common/models.py:1097
+#: common/models.py:1104
msgid "Group on signup"
msgstr ""
-#: common/models.py:1098
+#: common/models.py:1105
msgid "Group to which new users are assigned on registration"
msgstr ""
-#: common/models.py:1104
+#: common/models.py:1111
msgid "Enforce MFA"
msgstr ""
-#: common/models.py:1105
+#: common/models.py:1112
msgid "Users must use multifactor security."
msgstr ""
-#: common/models.py:1111
+#: common/models.py:1118
msgid "Check plugins on startup"
msgstr ""
-#: common/models.py:1112
+#: common/models.py:1119
msgid "Check that all plugins are installed on startup - enable in container enviroments"
msgstr ""
-#: common/models.py:1120
+#: common/models.py:1127
msgid "Enable URL integration"
msgstr ""
-#: common/models.py:1121
+#: common/models.py:1128
msgid "Enable plugins to add URL routes"
msgstr ""
-#: common/models.py:1128
+#: common/models.py:1135
msgid "Enable navigation integration"
msgstr ""
-#: common/models.py:1129
+#: common/models.py:1136
msgid "Enable plugins to integrate into navigation"
msgstr ""
-#: common/models.py:1136
+#: common/models.py:1143
msgid "Enable app integration"
msgstr "Activer l'intégration de plugins"
-#: common/models.py:1137
+#: common/models.py:1144
msgid "Enable plugins to add apps"
msgstr "Activer l'intégration de plugin pour ajouter des apps"
-#: common/models.py:1144
+#: common/models.py:1151
msgid "Enable schedule integration"
msgstr ""
-#: common/models.py:1145
+#: common/models.py:1152
msgid "Enable plugins to run scheduled tasks"
msgstr ""
-#: common/models.py:1152
+#: common/models.py:1159
msgid "Enable event integration"
msgstr ""
-#: common/models.py:1153
+#: common/models.py:1160
msgid "Enable plugins to respond to internal events"
msgstr ""
-#: common/models.py:1170 common/models.py:1492
+#: common/models.py:1177 common/models.py:1499
msgid "Settings key (must be unique - case insensitive"
msgstr "Clé du paramètre (doit être unique - insensible à la casse)"
-#: common/models.py:1192
+#: common/models.py:1199
msgid "Show subscribed parts"
msgstr ""
-#: common/models.py:1193
+#: common/models.py:1200
msgid "Show subscribed parts on the homepage"
msgstr ""
-#: common/models.py:1199
+#: common/models.py:1206
msgid "Show subscribed categories"
msgstr ""
-#: common/models.py:1200
+#: common/models.py:1207
msgid "Show subscribed part categories on the homepage"
msgstr ""
-#: common/models.py:1206
+#: common/models.py:1213
msgid "Show latest parts"
msgstr "Afficher les dernières pièces"
-#: common/models.py:1207
+#: common/models.py:1214
msgid "Show latest parts on the homepage"
msgstr ""
-#: common/models.py:1213
+#: common/models.py:1220
msgid "Recent Part Count"
msgstr ""
-#: common/models.py:1214
+#: common/models.py:1221
msgid "Number of recent parts to display on index page"
msgstr ""
-#: common/models.py:1220
+#: common/models.py:1227
msgid "Show unvalidated BOMs"
msgstr ""
-#: common/models.py:1221
+#: common/models.py:1228
msgid "Show BOMs that await validation on the homepage"
msgstr ""
-#: common/models.py:1227
+#: common/models.py:1234
msgid "Show recent stock changes"
msgstr "Afficher les dernières modifications du stock"
-#: common/models.py:1228
+#: common/models.py:1235
msgid "Show recently changed stock items on the homepage"
msgstr ""
-#: common/models.py:1234
+#: common/models.py:1241
msgid "Recent Stock Count"
msgstr ""
-#: common/models.py:1235
+#: common/models.py:1242
msgid "Number of recent stock items to display on index page"
msgstr ""
-#: common/models.py:1241
+#: common/models.py:1248
msgid "Show low stock"
msgstr ""
-#: common/models.py:1242
+#: common/models.py:1249
msgid "Show low stock items on the homepage"
msgstr ""
-#: common/models.py:1248
+#: common/models.py:1255
msgid "Show depleted stock"
msgstr ""
-#: common/models.py:1249
+#: common/models.py:1256
msgid "Show depleted stock items on the homepage"
msgstr ""
-#: common/models.py:1255
+#: common/models.py:1262
msgid "Show needed stock"
msgstr ""
-#: common/models.py:1256
+#: common/models.py:1263
msgid "Show stock items needed for builds on the homepage"
msgstr ""
-#: common/models.py:1262
+#: common/models.py:1269
msgid "Show expired stock"
msgstr ""
-#: common/models.py:1263
+#: common/models.py:1270
msgid "Show expired stock items on the homepage"
msgstr ""
-#: common/models.py:1269
+#: common/models.py:1276
msgid "Show stale stock"
msgstr ""
-#: common/models.py:1270
+#: common/models.py:1277
msgid "Show stale stock items on the homepage"
msgstr ""
-#: common/models.py:1276
+#: common/models.py:1283
msgid "Show pending builds"
msgstr ""
-#: common/models.py:1277
+#: common/models.py:1284
msgid "Show pending builds on the homepage"
msgstr ""
-#: common/models.py:1283
+#: common/models.py:1290
msgid "Show overdue builds"
msgstr ""
-#: common/models.py:1284
+#: common/models.py:1291
msgid "Show overdue builds on the homepage"
msgstr ""
-#: common/models.py:1290
+#: common/models.py:1297
msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:1291
+#: common/models.py:1298
msgid "Show outstanding POs on the homepage"
msgstr ""
-#: common/models.py:1297
+#: common/models.py:1304
msgid "Show overdue POs"
msgstr ""
-#: common/models.py:1298
+#: common/models.py:1305
msgid "Show overdue POs on the homepage"
msgstr ""
-#: common/models.py:1304
+#: common/models.py:1311
msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:1305
+#: common/models.py:1312
msgid "Show outstanding SOs on the homepage"
msgstr ""
-#: common/models.py:1311
+#: common/models.py:1318
msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:1312
+#: common/models.py:1319
msgid "Show overdue SOs on the homepage"
msgstr ""
-#: common/models.py:1317
+#: common/models.py:1324
msgid "Enable label printing"
msgstr ""
-#: common/models.py:1318
+#: common/models.py:1325
msgid "Enable label printing from the web interface"
msgstr ""
-#: common/models.py:1324
+#: common/models.py:1331
msgid "Inline label display"
msgstr ""
-#: common/models.py:1325
+#: common/models.py:1332
msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:1331
+#: common/models.py:1338
msgid "Inline report display"
msgstr ""
-#: common/models.py:1332
+#: common/models.py:1339
msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:1338
+#: common/models.py:1345
msgid "Search Parts"
msgstr ""
-#: common/models.py:1339
+#: common/models.py:1346
msgid "Display parts in search preview window"
msgstr ""
-#: common/models.py:1345
+#: common/models.py:1352
msgid "Seach Supplier Parts"
msgstr ""
-#: common/models.py:1346
+#: common/models.py:1353
msgid "Display supplier parts in search preview window"
msgstr ""
-#: common/models.py:1352
+#: common/models.py:1359
msgid "Search Manufacturer Parts"
msgstr ""
-#: common/models.py:1353
+#: common/models.py:1360
msgid "Display manufacturer parts in search preview window"
msgstr ""
-#: common/models.py:1359
+#: common/models.py:1366
msgid "Hide Inactive Parts"
msgstr ""
-#: common/models.py:1360
+#: common/models.py:1367
msgid "Excluded inactive parts from search preview window"
msgstr ""
-#: common/models.py:1366
+#: common/models.py:1373
msgid "Search Categories"
msgstr ""
-#: common/models.py:1367
+#: common/models.py:1374
msgid "Display part categories in search preview window"
msgstr ""
-#: common/models.py:1373
+#: common/models.py:1380
msgid "Search Stock"
msgstr ""
-#: common/models.py:1374
+#: common/models.py:1381
msgid "Display stock items in search preview window"
msgstr ""
-#: common/models.py:1380
+#: common/models.py:1387
msgid "Hide Unavailable Stock Items"
msgstr ""
-#: common/models.py:1381
+#: common/models.py:1388
msgid "Exclude stock items which are not available from the search preview window"
msgstr ""
-#: common/models.py:1387
+#: common/models.py:1394
msgid "Search Locations"
msgstr ""
-#: common/models.py:1388
+#: common/models.py:1395
msgid "Display stock locations in search preview window"
msgstr ""
-#: common/models.py:1394
+#: common/models.py:1401
msgid "Search Companies"
msgstr ""
-#: common/models.py:1395
+#: common/models.py:1402
msgid "Display companies in search preview window"
msgstr ""
-#: common/models.py:1401
+#: common/models.py:1408
msgid "Search Purchase Orders"
msgstr ""
-#: common/models.py:1402
+#: common/models.py:1409
msgid "Display purchase orders in search preview window"
msgstr ""
-#: common/models.py:1408
+#: common/models.py:1415
msgid "Exclude Inactive Purchase Orders"
msgstr ""
-#: common/models.py:1409
+#: common/models.py:1416
msgid "Exclude inactive purchase orders from search preview window"
msgstr ""
-#: common/models.py:1415
+#: common/models.py:1422
msgid "Search Sales Orders"
msgstr ""
-#: common/models.py:1416
+#: common/models.py:1423
msgid "Display sales orders in search preview window"
msgstr ""
-#: common/models.py:1422
+#: common/models.py:1429
msgid "Exclude Inactive Sales Orders"
msgstr ""
-#: common/models.py:1423
+#: common/models.py:1430
msgid "Exclude inactive sales orders from search preview window"
msgstr ""
-#: common/models.py:1429
+#: common/models.py:1436
msgid "Search Preview Results"
msgstr ""
-#: common/models.py:1430
+#: common/models.py:1437
msgid "Number of results to show in each section of the search preview window"
msgstr ""
-#: common/models.py:1436
+#: common/models.py:1443
msgid "Show Quantity in Forms"
msgstr ""
-#: common/models.py:1437
+#: common/models.py:1444
msgid "Display available part quantity in some forms"
msgstr ""
-#: common/models.py:1443
+#: common/models.py:1450
msgid "Escape Key Closes Forms"
msgstr ""
-#: common/models.py:1444
+#: common/models.py:1451
msgid "Use the escape key to close modal forms"
msgstr ""
-#: common/models.py:1450
+#: common/models.py:1457
msgid "Fixed Navbar"
msgstr ""
-#: common/models.py:1451
+#: common/models.py:1458
msgid "The navbar position is fixed to the top of the screen"
msgstr ""
-#: common/models.py:1457
+#: common/models.py:1464
msgid "Date Format"
msgstr ""
-#: common/models.py:1458
+#: common/models.py:1465
msgid "Preferred format for displaying dates"
msgstr "Format préféré pour l'affichage des dates"
-#: common/models.py:1472 part/templates/part/detail.html:39
+#: common/models.py:1479 part/templates/part/detail.html:39
msgid "Part Scheduling"
msgstr ""
-#: common/models.py:1473
+#: common/models.py:1480
msgid "Display part scheduling information"
msgstr ""
-#: common/models.py:1537 company/forms.py:37
+#: common/models.py:1544 company/forms.py:37
msgid "Price break quantity"
msgstr ""
-#: common/models.py:1544 company/serializers.py:288
-#: company/templates/company/supplier_part.html:263 order/models.py:949
-#: templates/js/translated/part.js:998 templates/js/translated/part.js:1974
+#: common/models.py:1551 company/serializers.py:290
+#: company/templates/company/supplier_part.html:263 order/models.py:965
+#: templates/js/translated/part.js:1042 templates/js/translated/part.js:2070
msgid "Price"
msgstr "Prix"
-#: common/models.py:1545
+#: common/models.py:1552
msgid "Unit price at specified quantity"
msgstr ""
-#: common/models.py:1705 common/models.py:1883
+#: common/models.py:1712 common/models.py:1890
msgid "Endpoint"
msgstr ""
-#: common/models.py:1706
+#: common/models.py:1713
msgid "Endpoint at which this webhook is received"
msgstr ""
-#: common/models.py:1715
+#: common/models.py:1722
msgid "Name for this webhook"
msgstr ""
-#: common/models.py:1720 part/models.py:911 plugin/models.py:99
+#: common/models.py:1727 part/models.py:911 plugin/models.py:99
#: templates/js/translated/table_filters.js:34
#: templates/js/translated/table_filters.js:96
#: templates/js/translated/table_filters.js:308
@@ -2457,79 +2474,89 @@ msgstr ""
msgid "Active"
msgstr "Actif"
-#: common/models.py:1721
+#: common/models.py:1728
msgid "Is this webhook active"
msgstr ""
-#: common/models.py:1735
+#: common/models.py:1742
msgid "Token"
msgstr ""
-#: common/models.py:1736
+#: common/models.py:1743
msgid "Token for access"
msgstr ""
-#: common/models.py:1743
+#: common/models.py:1750
msgid "Secret"
msgstr ""
-#: common/models.py:1744
+#: common/models.py:1751
msgid "Shared secret for HMAC"
msgstr ""
-#: common/models.py:1850
+#: common/models.py:1857
msgid "Message ID"
msgstr ""
-#: common/models.py:1851
+#: common/models.py:1858
msgid "Unique identifier for this message"
msgstr ""
-#: common/models.py:1859
+#: common/models.py:1866
msgid "Host"
msgstr ""
-#: common/models.py:1860
+#: common/models.py:1867
msgid "Host from which this message was received"
msgstr ""
-#: common/models.py:1867
+#: common/models.py:1874
msgid "Header"
msgstr ""
-#: common/models.py:1868
+#: common/models.py:1875
msgid "Header of this message"
msgstr ""
-#: common/models.py:1874
+#: common/models.py:1881
msgid "Body"
msgstr ""
-#: common/models.py:1875
+#: common/models.py:1882
msgid "Body of this message"
msgstr ""
-#: common/models.py:1884
+#: common/models.py:1891
msgid "Endpoint on which this message was received"
msgstr ""
-#: common/models.py:1889
+#: common/models.py:1896
msgid "Worked on"
msgstr ""
-#: common/models.py:1890
+#: common/models.py:1897
msgid "Was the work on this message finished?"
msgstr ""
+#: common/notifications.py:292
+#, python-brace-format
+msgid "New {verbose_name}"
+msgstr ""
+
+#: common/notifications.py:294
+#, python-brace-format
+msgid "A new {verbose_name} has been created and ,assigned to you"
+msgstr ""
+
#: common/views.py:87 order/templates/order/purchase_order_detail.html:23
-#: order/views.py:102 part/views.py:191
+#: order/views.py:102 part/views.py:116
#: templates/patterns/wizard/upload.html:37
msgid "Upload File"
msgstr ""
#: common/views.py:88 order/views.py:103
#: part/templates/part/import_wizard/ajax_match_fields.html:45
-#: part/views.py:192 templates/patterns/wizard/match_fields.html:51
+#: part/views.py:117 templates/patterns/wizard/match_fields.html:51
msgid "Match Fields"
msgstr ""
@@ -2545,19 +2572,19 @@ msgstr ""
msgid "Parts imported"
msgstr "Composantes importées"
-#: common/views.py:507 order/templates/order/order_wizard/match_parts.html:19
+#: common/views.py:511 order/templates/order/order_wizard/match_parts.html:19
#: part/templates/part/import_wizard/match_references.html:19
#: templates/patterns/wizard/match_fields.html:26
#: templates/patterns/wizard/upload.html:35
msgid "Previous Step"
msgstr "Étape précédente"
-#: company/forms.py:16 part/forms.py:21
+#: company/forms.py:16 part/forms.py:18
#: templates/InvenTree/settings/mixins/urls.html:14
msgid "URL"
msgstr ""
-#: company/forms.py:17 part/forms.py:22
+#: company/forms.py:17 part/forms.py:19
msgid "Image URL"
msgstr "URL de l'image"
@@ -2571,7 +2598,7 @@ msgstr ""
#: company/models.py:104 company/templates/company/company_base.html:100
#: templates/InvenTree/settings/plugin_settings.html:55
-#: templates/js/translated/company.js:405
+#: templates/js/translated/company.js:399
msgid "Website"
msgstr ""
@@ -2644,9 +2671,9 @@ msgstr "est fabricant"
msgid "Does this company manufacture parts?"
msgstr "Cette entreprise fabrique-t-elle des pièces?"
-#: company/models.py:144 company/serializers.py:294
-#: company/templates/company/company_base.html:106 part/serializers.py:137
-#: part/serializers.py:168 stock/serializers.py:162
+#: company/models.py:144 company/serializers.py:296
+#: company/templates/company/company_base.html:106 part/serializers.py:139
+#: part/serializers.py:170 stock/serializers.py:162
msgid "Currency"
msgstr "Devise"
@@ -2667,10 +2694,10 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:90
#: company/templates/company/supplier_part.html:103
#: stock/templates/stock/item_base.html:212
-#: templates/js/translated/company.js:389
-#: templates/js/translated/company.js:488
-#: templates/js/translated/company.js:632
-#: templates/js/translated/company.js:917 templates/js/translated/part.js:235
+#: templates/js/translated/company.js:383
+#: templates/js/translated/company.js:484
+#: templates/js/translated/company.js:617
+#: templates/js/translated/company.js:902 templates/js/translated/part.js:235
#: templates/js/translated/table_filters.js:411
msgid "Manufacturer"
msgstr "Fabricant"
@@ -2681,11 +2708,11 @@ msgstr "Sélectionner un fabricant"
#: company/models.py:266 company/templates/company/manufacturer_part.html:101
#: company/templates/company/supplier_part.html:111
-#: templates/js/translated/company.js:255
-#: templates/js/translated/company.js:487
-#: templates/js/translated/company.js:648
-#: templates/js/translated/company.js:935 templates/js/translated/order.js:1907
-#: templates/js/translated/part.js:246 templates/js/translated/part.js:956
+#: templates/js/translated/company.js:256
+#: templates/js/translated/company.js:483
+#: templates/js/translated/company.js:633
+#: templates/js/translated/company.js:920 templates/js/translated/order.js:1907
+#: templates/js/translated/part.js:246 templates/js/translated/part.js:1000
msgid "MPN"
msgstr ""
@@ -2714,9 +2741,9 @@ msgstr ""
#: company/models.py:361
#: report/templates/report/inventree_test_report_base.html:95
-#: stock/models.py:2080 templates/js/translated/company.js:540
-#: templates/js/translated/company.js:763 templates/js/translated/part.js:776
-#: templates/js/translated/stock.js:1294
+#: stock/models.py:2084 templates/js/translated/company.js:531
+#: templates/js/translated/company.js:748 templates/js/translated/part.js:820
+#: templates/js/translated/stock.js:1304
msgid "Value"
msgstr "Valeur"
@@ -2724,10 +2751,10 @@ msgstr "Valeur"
msgid "Parameter value"
msgstr ""
-#: company/models.py:368 part/models.py:878 part/models.py:2339
+#: company/models.py:368 part/models.py:878 part/models.py:2327
#: part/templates/part/part_base.html:280
#: templates/InvenTree/settings/settings.html:351
-#: templates/js/translated/company.js:769 templates/js/translated/part.js:782
+#: templates/js/translated/company.js:754 templates/js/translated/part.js:826
msgid "Units"
msgstr ""
@@ -2740,13 +2767,14 @@ msgid "Linked manufacturer part must reference the same base part"
msgstr ""
#: company/models.py:487 company/templates/company/company_base.html:81
-#: company/templates/company/supplier_part.html:87 order/models.py:303
+#: company/templates/company/supplier_part.html:87 order/models.py:308
#: order/templates/order/order_base.html:112 part/bom.py:237 part/bom.py:265
#: stock/templates/stock/item_base.html:229
-#: templates/js/translated/company.js:254
-#: templates/js/translated/company.js:393
-#: templates/js/translated/company.js:891 templates/js/translated/order.js:1643
-#: templates/js/translated/part.js:216 templates/js/translated/part.js:924
+#: templates/email/overdue_purchase_order.html:16
+#: templates/js/translated/company.js:255
+#: templates/js/translated/company.js:387
+#: templates/js/translated/company.js:876 templates/js/translated/order.js:1643
+#: templates/js/translated/part.js:216 templates/js/translated/part.js:968
#: templates/js/translated/table_filters.js:415
msgid "Supplier"
msgstr "Fournisseur"
@@ -2756,9 +2784,9 @@ msgid "Select supplier"
msgstr ""
#: company/models.py:493 company/templates/company/supplier_part.html:97
-#: part/bom.py:238 part/bom.py:266 templates/js/translated/company.js:253
+#: part/bom.py:238 part/bom.py:266 templates/js/translated/company.js:254
#: templates/js/translated/order.js:1894 templates/js/translated/part.js:227
-#: templates/js/translated/part.js:942
+#: templates/js/translated/part.js:986
msgid "SKU"
msgstr ""
@@ -2779,23 +2807,23 @@ msgid "Supplier part description"
msgstr ""
#: company/models.py:518 company/templates/company/supplier_part.html:125
-#: part/models.py:2573 part/templates/part/upload_bom.html:59
+#: part/models.py:2561 part/templates/part/upload_bom.html:59
#: report/templates/report/inventree_po_report.html:92
#: report/templates/report/inventree_so_report.html:93 stock/serializers.py:387
msgid "Note"
msgstr ""
-#: company/models.py:522 part/models.py:1688
+#: company/models.py:522 part/models.py:1683
msgid "base cost"
msgstr "coût de base"
-#: company/models.py:522 part/models.py:1688
+#: company/models.py:522 part/models.py:1683
msgid "Minimum charge (e.g. stocking fee)"
msgstr ""
#: company/models.py:524 company/templates/company/supplier_part.html:118
#: stock/models.py:608 stock/templates/stock/item_base.html:245
-#: templates/js/translated/company.js:967 templates/js/translated/stock.js:1912
+#: templates/js/translated/company.js:952 templates/js/translated/stock.js:1922
msgid "Packaging"
msgstr ""
@@ -2803,7 +2831,7 @@ msgstr ""
msgid "Part packaging"
msgstr ""
-#: company/models.py:526 part/models.py:1690
+#: company/models.py:526 part/models.py:1685
msgid "multiple"
msgstr ""
@@ -2825,7 +2853,7 @@ msgstr ""
#: company/templates/company/company_base.html:8
#: company/templates/company/company_base.html:12
-#: templates/InvenTree/search.html:177 templates/js/translated/company.js:378
+#: templates/InvenTree/search.html:177 templates/js/translated/company.js:372
msgid "Company"
msgstr ""
@@ -2843,7 +2871,7 @@ msgid "Edit company information"
msgstr ""
#: company/templates/company/company_base.html:34
-#: templates/js/translated/company.js:321
+#: templates/js/translated/company.js:315
msgid "Edit Company"
msgstr ""
@@ -2866,12 +2894,13 @@ msgstr "Ajouter une nouvelle image"
msgid "Download image from URL"
msgstr "Télécharger l'image depuis l'URL"
-#: company/templates/company/company_base.html:86 order/models.py:649
+#: company/templates/company/company_base.html:86 order/models.py:665
#: order/templates/order/sales_order_base.html:116 stock/models.py:627
-#: stock/models.py:628 stock/serializers.py:758
+#: stock/models.py:628 stock/serializers.py:745
#: stock/templates/stock/item_base.html:401
-#: templates/js/translated/company.js:385 templates/js/translated/order.js:2458
-#: templates/js/translated/stock.js:2431
+#: templates/email/overdue_sales_order.html:16
+#: templates/js/translated/company.js:379 templates/js/translated/order.js:2458
+#: templates/js/translated/stock.js:2441
#: templates/js/translated/table_filters.js:419
msgid "Customer"
msgstr ""
@@ -2999,7 +3028,7 @@ msgid "Supplier List"
msgstr "Liste des Fournisseurs"
#: company/templates/company/manufacturer_part.html:15 company/views.py:45
-#: part/templates/part/prices.html:170 templates/InvenTree/search.html:179
+#: part/templates/part/prices.html:172 templates/InvenTree/search.html:179
#: templates/navbar.html:49
msgid "Manufacturers"
msgstr "Fabricants"
@@ -3012,12 +3041,12 @@ msgid "Order part"
msgstr ""
#: company/templates/company/manufacturer_part.html:39
-#: templates/js/translated/company.js:680
+#: templates/js/translated/company.js:665
msgid "Edit manufacturer part"
msgstr ""
#: company/templates/company/manufacturer_part.html:43
-#: templates/js/translated/company.js:681
+#: templates/js/translated/company.js:666
msgid "Delete manufacturer part"
msgstr ""
@@ -3032,7 +3061,7 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:119
#: company/templates/company/supplier_part.html:15 company/views.py:39
-#: part/templates/part/part_sidebar.html:35 part/templates/part/prices.html:166
+#: part/templates/part/part_sidebar.html:35 part/templates/part/prices.html:168
#: templates/InvenTree/search.html:189 templates/navbar.html:48
msgid "Suppliers"
msgstr "Fournisseurs"
@@ -3092,18 +3121,18 @@ msgstr ""
#: company/templates/company/supplier_part.html:7
#: company/templates/company/supplier_part.html:24 stock/models.py:592
#: stock/templates/stock/item_base.html:238
-#: templates/js/translated/company.js:907 templates/js/translated/order.js:884
-#: templates/js/translated/stock.js:1869
+#: templates/js/translated/company.js:892 templates/js/translated/order.js:884
+#: templates/js/translated/stock.js:1879
msgid "Supplier Part"
msgstr ""
#: company/templates/company/supplier_part.html:38
-#: templates/js/translated/company.js:980
+#: templates/js/translated/company.js:965
msgid "Edit supplier part"
msgstr ""
#: company/templates/company/supplier_part.html:42
-#: templates/js/translated/company.js:981
+#: templates/js/translated/company.js:966
msgid "Delete supplier part"
msgstr ""
@@ -3123,7 +3152,7 @@ msgstr ""
#: company/templates/company/supplier_part.html:148
#: part/templates/part/detail.html:24 stock/templates/stock/location.html:177
-#: templates/js/translated/stock.js:380
+#: templates/js/translated/stock.js:379
msgid "New Stock Item"
msgstr ""
@@ -3144,7 +3173,7 @@ msgstr "Information sur les prix"
#: company/templates/company/supplier_part.html:191
#: company/templates/company/supplier_part.html:305
-#: part/templates/part/prices.html:274 templates/js/translated/part.js:2046
+#: part/templates/part/prices.html:276 templates/js/translated/part.js:2142
msgid "Add Price Break"
msgstr ""
@@ -3153,12 +3182,12 @@ msgid "No price break information found"
msgstr ""
#: company/templates/company/supplier_part.html:231
-#: templates/js/translated/part.js:2056
+#: templates/js/translated/part.js:2152
msgid "Delete Price Break"
msgstr ""
#: company/templates/company/supplier_part.html:245
-#: templates/js/translated/part.js:2070
+#: templates/js/translated/part.js:2166
msgid "Edit Price Break"
msgstr ""
@@ -3180,9 +3209,9 @@ msgstr ""
#: stock/templates/stock/stock_app_base.html:10
#: templates/InvenTree/search.html:151
#: templates/InvenTree/settings/sidebar.html:43
-#: templates/js/translated/bom.js:554 templates/js/translated/part.js:678
-#: templates/js/translated/part.js:1226 templates/js/translated/part.js:1387
-#: templates/js/translated/stock.js:904 templates/js/translated/stock.js:1687
+#: templates/js/translated/bom.js:554 templates/js/translated/part.js:722
+#: templates/js/translated/part.js:1270 templates/js/translated/part.js:1431
+#: templates/js/translated/stock.js:903 templates/js/translated/stock.js:1697
#: templates/navbar.html:31
msgid "Stock"
msgstr ""
@@ -3209,7 +3238,7 @@ msgstr "Tarif"
#: stock/templates/stock/location.html:173
#: stock/templates/stock/location_sidebar.html:7
#: templates/InvenTree/search.html:153 templates/js/translated/search.js:223
-#: templates/js/translated/stock.js:2307 users/models.py:39
+#: templates/js/translated/stock.js:2317 users/models.py:39
msgid "Stock Items"
msgstr "Éléments en stock"
@@ -3238,20 +3267,20 @@ msgstr "Entreprises"
msgid "New Company"
msgstr "Nouvelle Entreprise"
-#: company/views.py:112 part/views.py:576
+#: company/views.py:112 part/views.py:501
msgid "Download Image"
msgstr ""
-#: company/views.py:139 part/views.py:606
+#: company/views.py:139 part/views.py:531
msgid "Image size exceeds maximum allowable size for download"
msgstr ""
-#: company/views.py:146 part/views.py:613
+#: company/views.py:146 part/views.py:538
#, python-brace-format
msgid "Invalid response: {code}"
msgstr ""
-#: company/views.py:155 part/views.py:622
+#: company/views.py:155 part/views.py:547
msgid "Supplied URL is not a valid image file"
msgstr ""
@@ -3320,313 +3349,314 @@ msgstr ""
msgid "Part query filters (comma-separated value of key=value pairs)"
msgstr ""
-#: order/models.py:133
+#: order/models.py:134
msgid "Order description"
msgstr "Description de la commande"
-#: order/models.py:135 order/models.py:1236
+#: order/models.py:136 order/models.py:1252
msgid "Link to external page"
msgstr "Lien vers une page externe"
-#: order/models.py:143
+#: order/models.py:144
msgid "Created By"
msgstr "Créé par"
-#: order/models.py:150
+#: order/models.py:151
msgid "User or group responsible for this order"
msgstr ""
-#: order/models.py:155
+#: order/models.py:156
msgid "Order notes"
msgstr "Notes de commande"
-#: order/models.py:289 order/models.py:639
+#: order/models.py:294 order/models.py:655
msgid "Order reference"
msgstr ""
-#: order/models.py:294 order/models.py:654
+#: order/models.py:299 order/models.py:670
msgid "Purchase order status"
msgstr ""
-#: order/models.py:304
+#: order/models.py:309
msgid "Company from which the items are being ordered"
msgstr ""
-#: order/models.py:307 order/templates/order/order_base.html:124
+#: order/models.py:312 order/templates/order/order_base.html:124
#: templates/js/translated/order.js:1652
msgid "Supplier Reference"
msgstr ""
-#: order/models.py:307
+#: order/models.py:312
msgid "Supplier order reference code"
msgstr ""
-#: order/models.py:314
+#: order/models.py:319
msgid "received by"
msgstr ""
-#: order/models.py:319
+#: order/models.py:324
msgid "Issue Date"
msgstr ""
-#: order/models.py:320
+#: order/models.py:325
msgid "Date order was issued"
msgstr ""
-#: order/models.py:325
+#: order/models.py:330
msgid "Target Delivery Date"
msgstr ""
-#: order/models.py:326
+#: order/models.py:331
msgid "Expected date for order delivery. Order will be overdue after this date."
msgstr ""
-#: order/models.py:332
+#: order/models.py:337
msgid "Date order was completed"
msgstr ""
-#: order/models.py:368
+#: order/models.py:373
msgid "Part supplier must match PO supplier"
msgstr ""
-#: order/models.py:512
+#: order/models.py:517
msgid "Quantity must be a positive number"
msgstr ""
-#: order/models.py:650
+#: order/models.py:666
msgid "Company to which the items are being sold"
msgstr ""
-#: order/models.py:656
+#: order/models.py:672
msgid "Customer Reference "
msgstr ""
-#: order/models.py:656
+#: order/models.py:672
msgid "Customer order reference code"
msgstr ""
-#: order/models.py:661
+#: order/models.py:677
msgid "Target date for order completion. Order will be overdue after this date."
msgstr ""
-#: order/models.py:664 order/models.py:1190
+#: order/models.py:680 order/models.py:1206
#: templates/js/translated/order.js:2505 templates/js/translated/order.js:2656
msgid "Shipment Date"
msgstr "Nom de l’expédition"
-#: order/models.py:671
+#: order/models.py:687
msgid "shipped by"
msgstr "expédié par"
-#: order/models.py:726
+#: order/models.py:742
msgid "Order cannot be completed as no parts have been assigned"
msgstr "La commande ne peut pas être terminée car aucune pièce n'a été assignée"
-#: order/models.py:730
+#: order/models.py:746
msgid "Only a pending order can be marked as complete"
msgstr "Seule une commande en attente peut être marquée comme terminée"
-#: order/models.py:733
+#: order/models.py:749
msgid "Order cannot be completed as there are incomplete shipments"
msgstr "La commande ne peut pas être terminée car il y a des envois incomplets"
-#: order/models.py:736
+#: order/models.py:752
msgid "Order cannot be completed as there are incomplete line items"
msgstr ""
-#: order/models.py:910
+#: order/models.py:926
msgid "Item quantity"
msgstr "Nombre d'élement"
-#: order/models.py:916
+#: order/models.py:932
msgid "Line item reference"
msgstr ""
-#: order/models.py:918
+#: order/models.py:934
msgid "Line item notes"
msgstr ""
-#: order/models.py:923
+#: order/models.py:939
msgid "Target shipping date for this line item"
msgstr ""
-#: order/models.py:941
+#: order/models.py:957
msgid "Context"
msgstr "Contexte"
-#: order/models.py:942
+#: order/models.py:958
msgid "Additional context for this line"
msgstr ""
-#: order/models.py:950
+#: order/models.py:966
msgid "Unit price"
msgstr ""
-#: order/models.py:980
+#: order/models.py:996
msgid "Supplier part must match supplier"
msgstr ""
-#: order/models.py:988
+#: order/models.py:1004
msgid "deleted"
msgstr ""
-#: order/models.py:994 order/models.py:1074 order/models.py:1099
-#: order/models.py:1184 order/models.py:1320
+#: order/models.py:1010 order/models.py:1090 order/models.py:1115
+#: order/models.py:1200 order/models.py:1336
#: templates/js/translated/order.js:3112
msgid "Order"
msgstr "Commande"
-#: order/models.py:995 order/models.py:1074
+#: order/models.py:1011 order/models.py:1090
#: order/templates/order/order_base.html:9
#: order/templates/order/order_base.html:18
#: report/templates/report/inventree_po_report.html:76
#: stock/templates/stock/item_base.html:184
+#: templates/email/overdue_purchase_order.html:15
#: templates/js/translated/order.js:885 templates/js/translated/order.js:1621
-#: templates/js/translated/part.js:899 templates/js/translated/stock.js:1846
-#: templates/js/translated/stock.js:2412
+#: templates/js/translated/part.js:943 templates/js/translated/stock.js:1856
+#: templates/js/translated/stock.js:2422
msgid "Purchase Order"
msgstr "Commande d’achat"
-#: order/models.py:1013
+#: order/models.py:1029
msgid "Supplier part"
msgstr "Pièce fournisseur"
-#: order/models.py:1020 order/templates/order/order_base.html:169
+#: order/models.py:1036 order/templates/order/order_base.html:169
#: templates/js/translated/order.js:1318 templates/js/translated/order.js:2009
-#: templates/js/translated/part.js:993 templates/js/translated/part.js:1020
+#: templates/js/translated/part.js:1037 templates/js/translated/part.js:1064
#: templates/js/translated/table_filters.js:330
msgid "Received"
msgstr "Reçu"
-#: order/models.py:1021
+#: order/models.py:1037
msgid "Number of items received"
msgstr "Nombre d'éléments reçus"
-#: order/models.py:1028 part/templates/part/prices.html:179 stock/models.py:722
+#: order/models.py:1044 part/templates/part/prices.html:181 stock/models.py:722
#: stock/serializers.py:153 stock/templates/stock/item_base.html:191
-#: templates/js/translated/stock.js:1900
+#: templates/js/translated/stock.js:1910
msgid "Purchase Price"
msgstr "Prix d'achat"
-#: order/models.py:1029
+#: order/models.py:1045
msgid "Unit purchase price"
msgstr ""
-#: order/models.py:1037
+#: order/models.py:1053
msgid "Where does the Purchaser want this item to be stored?"
msgstr ""
-#: order/models.py:1109 part/templates/part/part_pricing.html:112
-#: part/templates/part/prices.html:119 part/templates/part/prices.html:288
+#: order/models.py:1125 part/templates/part/part_pricing.html:115
+#: part/templates/part/prices.html:121 part/templates/part/prices.html:290
msgid "Sale Price"
msgstr "Prix de vente"
-#: order/models.py:1110
+#: order/models.py:1126
msgid "Unit sale price"
msgstr ""
-#: order/models.py:1115
+#: order/models.py:1131
msgid "Shipped quantity"
msgstr ""
-#: order/models.py:1191
+#: order/models.py:1207
msgid "Date of shipment"
msgstr ""
-#: order/models.py:1198
+#: order/models.py:1214
msgid "Checked By"
msgstr ""
-#: order/models.py:1199
+#: order/models.py:1215
msgid "User who checked this shipment"
msgstr ""
-#: order/models.py:1207
+#: order/models.py:1223
msgid "Shipment number"
msgstr ""
-#: order/models.py:1214
+#: order/models.py:1230
msgid "Shipment notes"
msgstr ""
-#: order/models.py:1221
+#: order/models.py:1237
msgid "Tracking Number"
msgstr ""
-#: order/models.py:1222
+#: order/models.py:1238
msgid "Shipment tracking information"
msgstr ""
-#: order/models.py:1229
+#: order/models.py:1245
msgid "Invoice Number"
msgstr ""
-#: order/models.py:1230
+#: order/models.py:1246
msgid "Reference number for associated invoice"
msgstr ""
-#: order/models.py:1248
+#: order/models.py:1264
msgid "Shipment has already been sent"
msgstr ""
-#: order/models.py:1251
+#: order/models.py:1267
msgid "Shipment has no allocated stock items"
msgstr ""
-#: order/models.py:1354 order/models.py:1356
+#: order/models.py:1370 order/models.py:1372
msgid "Stock item has not been assigned"
msgstr ""
-#: order/models.py:1360
+#: order/models.py:1376
msgid "Cannot allocate stock item to a line with a different part"
msgstr ""
-#: order/models.py:1362
+#: order/models.py:1378
msgid "Cannot allocate stock to a line without a part"
msgstr ""
-#: order/models.py:1365
+#: order/models.py:1381
msgid "Allocation quantity cannot exceed stock quantity"
msgstr ""
-#: order/models.py:1369
+#: order/models.py:1385
msgid "StockItem is over-allocated"
msgstr ""
-#: order/models.py:1375 order/serializers.py:1045
+#: order/models.py:1391 order/serializers.py:1047
msgid "Quantity must be 1 for serialized stock item"
msgstr ""
-#: order/models.py:1378
+#: order/models.py:1394
msgid "Sales order does not match shipment"
msgstr ""
-#: order/models.py:1379
+#: order/models.py:1395
msgid "Shipment does not match sales order"
msgstr ""
-#: order/models.py:1387
+#: order/models.py:1403
msgid "Line"
msgstr "Ligne"
-#: order/models.py:1395 order/serializers.py:1149 order/serializers.py:1273
+#: order/models.py:1411 order/serializers.py:1151 order/serializers.py:1275
#: templates/js/translated/model_renderers.js:301
msgid "Shipment"
msgstr "Envoi"
-#: order/models.py:1396
+#: order/models.py:1412
msgid "Sales order shipment reference"
msgstr ""
-#: order/models.py:1408 templates/InvenTree/notifications/notifications.html:70
+#: order/models.py:1424 templates/InvenTree/notifications/notifications.html:70
msgid "Item"
msgstr "Article"
-#: order/models.py:1409
+#: order/models.py:1425
msgid "Select stock item to allocate"
msgstr ""
-#: order/models.py:1412
+#: order/models.py:1428
msgid "Enter stock allocation quantity"
msgstr ""
@@ -3662,7 +3692,7 @@ msgstr ""
msgid "Purchase order must match supplier"
msgstr ""
-#: order/serializers.py:406 order/serializers.py:1117
+#: order/serializers.py:406 order/serializers.py:1119
msgid "Line Item"
msgstr ""
@@ -3710,42 +3740,60 @@ msgstr ""
msgid "Supplied barcode values must be unique"
msgstr ""
-#: order/serializers.py:866
+#: order/serializers.py:868
msgid "Sale price currency"
msgstr ""
-#: order/serializers.py:947
+#: order/serializers.py:949
msgid "No shipment details provided"
msgstr ""
-#: order/serializers.py:1006 order/serializers.py:1126
+#: order/serializers.py:1008 order/serializers.py:1128
msgid "Line item is not associated with this order"
msgstr ""
-#: order/serializers.py:1028
+#: order/serializers.py:1030
msgid "Quantity must be positive"
msgstr ""
-#: order/serializers.py:1139
+#: order/serializers.py:1141
msgid "Enter serial numbers to allocate"
msgstr "Entrez les numéros de série à allouer"
-#: order/serializers.py:1161 order/serializers.py:1281
+#: order/serializers.py:1163 order/serializers.py:1283
msgid "Shipment has already been shipped"
msgstr ""
-#: order/serializers.py:1164 order/serializers.py:1284
+#: order/serializers.py:1166 order/serializers.py:1286
msgid "Shipment is not associated with this order"
msgstr ""
-#: order/serializers.py:1214
+#: order/serializers.py:1216
msgid "No match found for the following serial numbers"
msgstr "Aucune correspondance trouvée pour les numéros de série suivants"
-#: order/serializers.py:1224
+#: order/serializers.py:1226
msgid "The following serial numbers are already allocated"
msgstr "Les numéros de série suivants sont déjà alloués"
+#: order/tasks.py:26
+msgid "Overdue Purchase Order"
+msgstr ""
+
+#: order/tasks.py:31
+#, python-brace-format
+msgid "Purchase order {po} is now overdue"
+msgstr ""
+
+#: order/tasks.py:88
+msgid "Overdue Sales Order"
+msgstr ""
+
+#: order/tasks.py:93
+#, python-brace-format
+msgid "Sales order {so} is now overdue"
+msgstr ""
+
#: order/templates/order/order_base.html:33
msgid "Print purchase order report"
msgstr ""
@@ -3870,8 +3918,8 @@ msgstr ""
#: templates/js/translated/bom.js:77 templates/js/translated/build.js:427
#: templates/js/translated/build.js:579 templates/js/translated/build.js:1972
#: templates/js/translated/order.js:833 templates/js/translated/order.js:1265
-#: templates/js/translated/order.js:2731 templates/js/translated/stock.js:570
-#: templates/js/translated/stock.js:738
+#: templates/js/translated/order.js:2731 templates/js/translated/stock.js:569
+#: templates/js/translated/stock.js:737
#: templates/patterns/wizard/match_fields.html:70
msgid "Remove row"
msgstr "Supprimer la ligne"
@@ -3990,7 +4038,7 @@ msgid "Pending Shipments"
msgstr "Expéditions en attente"
#: order/templates/order/sales_order_detail.html:70
-#: templates/attachment_table.html:6 templates/js/translated/bom.js:1053
+#: templates/attachment_table.html:6 templates/js/translated/bom.js:1047
#: templates/js/translated/build.js:1880
msgid "Actions"
msgstr ""
@@ -4021,47 +4069,47 @@ msgstr ""
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr ""
-#: part/api.py:481
+#: part/api.py:482
msgid "Incoming Purchase Order"
msgstr ""
-#: part/api.py:501
+#: part/api.py:502
msgid "Outgoing Sales Order"
msgstr ""
-#: part/api.py:519
+#: part/api.py:520
msgid "Stock produced by Build Order"
msgstr ""
-#: part/api.py:551
+#: part/api.py:552
msgid "Stock required for Build Order"
msgstr ""
-#: part/api.py:637
+#: part/api.py:638
msgid "Valid"
msgstr ""
-#: part/api.py:638
+#: part/api.py:639
msgid "Validate entire Bill of Materials"
msgstr ""
-#: part/api.py:644
+#: part/api.py:645
msgid "This option must be selected"
msgstr ""
-#: part/api.py:1010
+#: part/api.py:1011
msgid "Must be greater than zero"
msgstr ""
-#: part/api.py:1014
+#: part/api.py:1015
msgid "Must be a valid quantity"
msgstr ""
-#: part/api.py:1029
+#: part/api.py:1030
msgid "Specify location for initial part stock"
msgstr ""
-#: part/api.py:1060 part/api.py:1064 part/api.py:1079 part/api.py:1083
+#: part/api.py:1061 part/api.py:1065 part/api.py:1080 part/api.py:1084
msgid "This field is required"
msgstr ""
@@ -4080,17 +4128,13 @@ msgid "Available Stock"
msgstr ""
#: part/bom.py:130 part/templates/part/part_base.html:207
-#: templates/js/translated/part.js:517 templates/js/translated/part.js:537
-#: templates/js/translated/part.js:1229 templates/js/translated/part.js:1401
-#: templates/js/translated/part.js:1417
+#: templates/js/translated/part.js:561 templates/js/translated/part.js:581
+#: templates/js/translated/part.js:1273 templates/js/translated/part.js:1445
+#: templates/js/translated/part.js:1461
msgid "On Order"
msgstr "En Commande"
-#: part/forms.py:59
-msgid "Select part category"
-msgstr ""
-
-#: part/forms.py:69
+#: part/forms.py:60
msgid "Input quantity for price calculation"
msgstr ""
@@ -4106,7 +4150,7 @@ msgstr ""
msgid "Default keywords for parts in this category"
msgstr ""
-#: part/models.py:115 part/models.py:2415 part/templates/part/category.html:15
+#: part/models.py:115 part/models.py:2403 part/templates/part/category.html:15
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr "Catégorie de composant"
@@ -4123,7 +4167,7 @@ msgstr "Catégories de composants"
#: part/templates/part/category_sidebar.html:9
#: templates/InvenTree/index.html:85 templates/InvenTree/search.html:82
#: templates/InvenTree/settings/sidebar.html:39
-#: templates/js/translated/part.js:1768 templates/js/translated/search.js:144
+#: templates/js/translated/part.js:1864 templates/js/translated/search.js:144
#: templates/navbar.html:24 users/models.py:37
msgid "Parts"
msgstr "Composantes"
@@ -4153,7 +4197,7 @@ msgstr "Le numéro de série le plus récent est"
msgid "Duplicate IPN not allowed in part settings"
msgstr "IPN dupliqué non autorisé dans les paramètres de la pièce"
-#: part/models.py:738 part/models.py:2469
+#: part/models.py:738 part/models.py:2457
msgid "Part name"
msgstr ""
@@ -4186,12 +4230,11 @@ msgstr ""
msgid "Part keywords to improve visibility in search results"
msgstr ""
-#: part/models.py:776 part/models.py:2171 part/models.py:2414
+#: part/models.py:776 part/models.py:2159 part/models.py:2402
#: part/templates/part/part_base.html:257
-#: part/templates/part/set_category.html:15
#: templates/InvenTree/notifications/notifications.html:65
#: templates/InvenTree/settings/settings.html:231
-#: templates/js/translated/part.js:1369
+#: templates/js/translated/part.js:1413 templates/js/translated/part.js:1639
msgid "Category"
msgstr "Catégorie"
@@ -4200,8 +4243,8 @@ msgid "Part category"
msgstr "Catégorie de la pièce"
#: part/models.py:782 part/templates/part/part_base.html:266
-#: templates/js/translated/part.js:666 templates/js/translated/part.js:1322
-#: templates/js/translated/stock.js:1659
+#: templates/js/translated/part.js:710 templates/js/translated/part.js:1366
+#: templates/js/translated/stock.js:1669
msgid "IPN"
msgstr ""
@@ -4214,7 +4257,7 @@ msgid "Part revision or version number"
msgstr ""
#: part/models.py:790 part/templates/part/part_base.html:273
-#: report/models.py:170 templates/js/translated/part.js:670
+#: report/models.py:170 templates/js/translated/part.js:714
msgid "Revision"
msgstr "Révision"
@@ -4302,317 +4345,321 @@ msgstr ""
msgid "Creation User"
msgstr ""
-#: part/models.py:1690
+#: part/models.py:1685
msgid "Sell multiple"
msgstr "Ventes multiples"
-#: part/models.py:2218
+#: part/models.py:2206
msgid "Test templates can only be created for trackable parts"
msgstr ""
-#: part/models.py:2235
+#: part/models.py:2223
msgid "Test with this name already exists for this part"
msgstr ""
-#: part/models.py:2255 templates/js/translated/part.js:1819
-#: templates/js/translated/stock.js:1274
+#: part/models.py:2243 templates/js/translated/part.js:1915
+#: templates/js/translated/stock.js:1284
msgid "Test Name"
msgstr "Nom de test"
-#: part/models.py:2256
+#: part/models.py:2244
msgid "Enter a name for the test"
msgstr ""
-#: part/models.py:2261
+#: part/models.py:2249
msgid "Test Description"
msgstr ""
-#: part/models.py:2262
+#: part/models.py:2250
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:2267 templates/js/translated/part.js:1828
+#: part/models.py:2255 templates/js/translated/part.js:1924
#: templates/js/translated/table_filters.js:294
msgid "Required"
msgstr "Requis"
-#: part/models.py:2268
+#: part/models.py:2256
msgid "Is this test required to pass?"
msgstr ""
-#: part/models.py:2273 templates/js/translated/part.js:1836
+#: part/models.py:2261 templates/js/translated/part.js:1932
msgid "Requires Value"
msgstr ""
-#: part/models.py:2274
+#: part/models.py:2262
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:2279 templates/js/translated/part.js:1843
+#: part/models.py:2267 templates/js/translated/part.js:1939
msgid "Requires Attachment"
msgstr ""
-#: part/models.py:2280
+#: part/models.py:2268
msgid "Does this test require a file attachment when adding a test result?"
msgstr ""
-#: part/models.py:2288
+#: part/models.py:2276
#, python-brace-format
msgid "Illegal character in template name ({c})"
msgstr ""
-#: part/models.py:2324
+#: part/models.py:2312
msgid "Parameter template name must be unique"
msgstr ""
-#: part/models.py:2332
+#: part/models.py:2320
msgid "Parameter Name"
msgstr ""
-#: part/models.py:2339
+#: part/models.py:2327
msgid "Parameter Units"
msgstr ""
-#: part/models.py:2370
+#: part/models.py:2358
msgid "Parent Part"
msgstr ""
-#: part/models.py:2372 part/models.py:2420 part/models.py:2421
+#: part/models.py:2360 part/models.py:2408 part/models.py:2409
#: templates/InvenTree/settings/settings.html:226
msgid "Parameter Template"
msgstr ""
-#: part/models.py:2374
+#: part/models.py:2362
msgid "Data"
msgstr "Données"
-#: part/models.py:2374
+#: part/models.py:2362
msgid "Parameter Value"
msgstr ""
-#: part/models.py:2425 templates/InvenTree/settings/settings.html:235
+#: part/models.py:2413 templates/InvenTree/settings/settings.html:235
msgid "Default Value"
msgstr ""
-#: part/models.py:2426
+#: part/models.py:2414
msgid "Default Parameter Value"
msgstr ""
-#: part/models.py:2461
+#: part/models.py:2449
msgid "Part ID or part name"
msgstr ""
-#: part/models.py:2464 templates/js/translated/model_renderers.js:200
+#: part/models.py:2452 templates/js/translated/model_renderers.js:200
msgid "Part ID"
msgstr "ID de composant"
-#: part/models.py:2465
+#: part/models.py:2453
msgid "Unique part ID value"
msgstr ""
-#: part/models.py:2468
+#: part/models.py:2456
msgid "Part Name"
msgstr ""
-#: part/models.py:2472
+#: part/models.py:2460
msgid "Part IPN"
msgstr ""
-#: part/models.py:2473
+#: part/models.py:2461
msgid "Part IPN value"
msgstr ""
-#: part/models.py:2476
+#: part/models.py:2464
msgid "Level"
msgstr ""
-#: part/models.py:2477
+#: part/models.py:2465
msgid "BOM level"
msgstr ""
-#: part/models.py:2546
+#: part/models.py:2534
msgid "Select parent part"
msgstr ""
-#: part/models.py:2554
+#: part/models.py:2542
msgid "Sub part"
msgstr ""
-#: part/models.py:2555
+#: part/models.py:2543
msgid "Select part to be used in BOM"
msgstr ""
-#: part/models.py:2561
+#: part/models.py:2549
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:2563 part/templates/part/upload_bom.html:58
-#: templates/js/translated/bom.js:877 templates/js/translated/bom.js:971
+#: part/models.py:2551 part/templates/part/upload_bom.html:58
+#: templates/js/translated/bom.js:871 templates/js/translated/bom.js:965
#: templates/js/translated/table_filters.js:92
msgid "Optional"
msgstr ""
-#: part/models.py:2563
+#: part/models.py:2551
msgid "This BOM item is optional"
msgstr ""
-#: part/models.py:2566 part/templates/part/upload_bom.html:55
+#: part/models.py:2554 part/templates/part/upload_bom.html:55
msgid "Overage"
msgstr "Surplus"
-#: part/models.py:2567
+#: part/models.py:2555
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr ""
-#: part/models.py:2570
+#: part/models.py:2558
msgid "BOM item reference"
msgstr ""
-#: part/models.py:2573
+#: part/models.py:2561
msgid "BOM item notes"
msgstr ""
-#: part/models.py:2575
+#: part/models.py:2563
msgid "Checksum"
msgstr ""
-#: part/models.py:2575
+#: part/models.py:2563
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:2579 part/templates/part/upload_bom.html:57
-#: templates/js/translated/bom.js:988
+#: part/models.py:2567 part/templates/part/upload_bom.html:57
+#: templates/js/translated/bom.js:982
#: templates/js/translated/table_filters.js:68
#: templates/js/translated/table_filters.js:88
msgid "Inherited"
msgstr ""
-#: part/models.py:2580
+#: part/models.py:2568
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr ""
-#: part/models.py:2585 part/templates/part/upload_bom.html:56
-#: templates/js/translated/bom.js:980
+#: part/models.py:2573 part/templates/part/upload_bom.html:56
+#: templates/js/translated/bom.js:974
msgid "Allow Variants"
msgstr ""
-#: part/models.py:2586
+#: part/models.py:2574
msgid "Stock items for variant parts can be used for this BOM item"
msgstr ""
-#: part/models.py:2664 stock/models.py:460
+#: part/models.py:2652 stock/models.py:460
msgid "Quantity must be integer value for trackable parts"
msgstr ""
-#: part/models.py:2673 part/models.py:2675
+#: part/models.py:2661 part/models.py:2663
msgid "Sub part must be specified"
msgstr ""
-#: part/models.py:2780
+#: part/models.py:2768
msgid "BOM Item Substitute"
msgstr ""
-#: part/models.py:2801
+#: part/models.py:2789
msgid "Substitute part cannot be the same as the master part"
msgstr ""
-#: part/models.py:2814
+#: part/models.py:2802
msgid "Parent BOM item"
msgstr ""
-#: part/models.py:2822
+#: part/models.py:2810
msgid "Substitute part"
msgstr ""
-#: part/models.py:2833
+#: part/models.py:2825
msgid "Part 1"
msgstr ""
-#: part/models.py:2837
+#: part/models.py:2829
msgid "Part 2"
msgstr ""
-#: part/models.py:2837
+#: part/models.py:2829
msgid "Select Related Part"
msgstr ""
-#: part/models.py:2868
-msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique"
+#: part/models.py:2847
+msgid "Part relationship cannot be created between a part and itself"
msgstr ""
-#: part/serializers.py:138 part/serializers.py:169 stock/serializers.py:163
+#: part/models.py:2851
+msgid "Duplicate relationship already exists"
+msgstr ""
+
+#: part/serializers.py:140 part/serializers.py:171 stock/serializers.py:163
msgid "Purchase currency of this stock item"
msgstr "Devise d'achat de l'item"
-#: part/serializers.py:794
+#: part/serializers.py:796
msgid "Select part to copy BOM from"
msgstr ""
-#: part/serializers.py:802
+#: part/serializers.py:804
msgid "Remove Existing Data"
msgstr ""
-#: part/serializers.py:803
+#: part/serializers.py:805
msgid "Remove existing BOM items before copying"
msgstr ""
-#: part/serializers.py:808
+#: part/serializers.py:810
msgid "Include Inherited"
msgstr ""
-#: part/serializers.py:809
+#: part/serializers.py:811
msgid "Include BOM items which are inherited from templated parts"
msgstr ""
-#: part/serializers.py:814
+#: part/serializers.py:816
msgid "Skip Invalid Rows"
msgstr ""
-#: part/serializers.py:815
+#: part/serializers.py:817
msgid "Enable this option to skip invalid rows"
msgstr ""
-#: part/serializers.py:820
+#: part/serializers.py:822
msgid "Copy Substitute Parts"
msgstr ""
-#: part/serializers.py:821
+#: part/serializers.py:823
msgid "Copy substitute parts when duplicate BOM items"
msgstr ""
-#: part/serializers.py:861
+#: part/serializers.py:863
msgid "Clear Existing BOM"
msgstr ""
-#: part/serializers.py:862
+#: part/serializers.py:864
msgid "Delete existing BOM items before uploading"
msgstr ""
-#: part/serializers.py:892
+#: part/serializers.py:894
msgid "No part column specified"
msgstr ""
-#: part/serializers.py:935
+#: part/serializers.py:937
msgid "Multiple matching parts found"
msgstr ""
-#: part/serializers.py:938
+#: part/serializers.py:940
msgid "No matching part found"
msgstr ""
-#: part/serializers.py:941
+#: part/serializers.py:943
msgid "Part is not designated as a component"
msgstr ""
-#: part/serializers.py:950
+#: part/serializers.py:952
msgid "Quantity not provided"
msgstr ""
-#: part/serializers.py:958
+#: part/serializers.py:960
msgid "Invalid quantity"
msgstr ""
-#: part/serializers.py:979
+#: part/serializers.py:981
msgid "At least one BOM item is required"
msgstr ""
@@ -5088,10 +5135,10 @@ msgid "Part is virtual (not a physical part)"
msgstr ""
#: part/templates/part/part_base.html:143
-#: templates/js/translated/company.js:623
-#: templates/js/translated/company.js:882
+#: templates/js/translated/company.js:608
+#: templates/js/translated/company.js:867
#: templates/js/translated/model_renderers.js:192
-#: templates/js/translated/part.js:581 templates/js/translated/part.js:658
+#: templates/js/translated/part.js:625 templates/js/translated/part.js:702
msgid "Inactive"
msgstr ""
@@ -5120,13 +5167,13 @@ msgstr ""
msgid "Allocated to Sales Orders"
msgstr ""
-#: part/templates/part/part_base.html:232 templates/js/translated/bom.js:1009
+#: part/templates/part/part_base.html:232 templates/js/translated/bom.js:1003
msgid "Can Build"
msgstr ""
-#: part/templates/part/part_base.html:238 templates/js/translated/part.js:520
-#: templates/js/translated/part.js:540 templates/js/translated/part.js:1233
-#: templates/js/translated/part.js:1405 templates/js/translated/part.js:1421
+#: part/templates/part/part_base.html:238 templates/js/translated/part.js:564
+#: templates/js/translated/part.js:584 templates/js/translated/part.js:1277
+#: templates/js/translated/part.js:1449 templates/js/translated/part.js:1465
msgid "Building"
msgstr ""
@@ -5143,7 +5190,7 @@ msgstr "Dernier numéro de série"
msgid "Search for serial number"
msgstr "Rechercher un numéro de série"
-#: part/templates/part/part_base.html:443 part/templates/part/prices.html:147
+#: part/templates/part/part_base.html:443 part/templates/part/prices.html:149
msgid "Calculate"
msgstr "Calculer"
@@ -5161,54 +5208,55 @@ msgstr ""
#: part/templates/part/part_pricing.html:26
#: part/templates/part/part_pricing.html:52
-#: part/templates/part/part_pricing.html:100
-#: part/templates/part/part_pricing.html:115 part/templates/part/prices.html:28
-#: part/templates/part/prices.html:55 part/templates/part/prices.html:106
-#: part/templates/part/prices.html:123
+#: part/templates/part/part_pricing.html:103
+#: part/templates/part/part_pricing.html:118 part/templates/part/prices.html:28
+#: part/templates/part/prices.html:55 part/templates/part/prices.html:108
+#: part/templates/part/prices.html:125
msgid "Unit Cost"
msgstr ""
#: part/templates/part/part_pricing.html:32
#: part/templates/part/part_pricing.html:58
-#: part/templates/part/part_pricing.html:104
-#: part/templates/part/part_pricing.html:119 part/templates/part/prices.html:35
-#: part/templates/part/prices.html:62 part/templates/part/prices.html:111
-#: part/templates/part/prices.html:128
+#: part/templates/part/part_pricing.html:107
+#: part/templates/part/part_pricing.html:122 part/templates/part/prices.html:35
+#: part/templates/part/prices.html:62 part/templates/part/prices.html:113
+#: part/templates/part/prices.html:130
msgid "Total Cost"
msgstr ""
#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:43
-#: templates/js/translated/bom.js:963
+#: templates/js/translated/bom.js:957
msgid "No supplier pricing available"
msgstr ""
#: part/templates/part/part_pricing.html:48 part/templates/part/prices.html:52
-#: part/templates/part/prices.html:246
+#: part/templates/part/prices.html:248
msgid "BOM Pricing"
msgstr ""
-#: part/templates/part/part_pricing.html:65 part/templates/part/prices.html:72
+#: part/templates/part/part_pricing.html:66 part/templates/part/prices.html:72
msgid "Unit Purchase Price"
msgstr "Prix d’achat unitaire"
-#: part/templates/part/part_pricing.html:71 part/templates/part/prices.html:79
+#: part/templates/part/part_pricing.html:72 part/templates/part/prices.html:79
msgid "Total Purchase Price"
msgstr ""
-#: part/templates/part/part_pricing.html:81 part/templates/part/prices.html:89
+#: part/templates/part/part_pricing.html:82 part/templates/part/prices.html:89
msgid "Note: BOM pricing is incomplete for this part"
msgstr ""
-#: part/templates/part/part_pricing.html:88 part/templates/part/prices.html:96
+#: part/templates/part/part_pricing.html:91 part/templates/part/prices.html:98
msgid "No BOM pricing available"
msgstr ""
-#: part/templates/part/part_pricing.html:97 part/templates/part/prices.html:105
+#: part/templates/part/part_pricing.html:100
+#: part/templates/part/prices.html:107
msgid "Internal Price"
msgstr ""
-#: part/templates/part/part_pricing.html:128
-#: part/templates/part/prices.html:137
+#: part/templates/part/part_pricing.html:131
+#: part/templates/part/prices.html:139
msgid "No pricing information is available for this part."
msgstr ""
@@ -5232,43 +5280,6 @@ msgstr "Tester le modèle"
msgid "Select from existing images"
msgstr ""
-#: part/templates/part/partial_delete.html:9
-#, python-format
-msgid "Part '%(full_name)s' cannot be deleted as it is still marked as active.\n"
-"
Disable the \"Active\" part attribute and re-try.\n"
-" "
-msgstr ""
-
-#: part/templates/part/partial_delete.html:17
-#, python-format
-msgid "Are you sure you want to delete part '%(full_name)s'?"
-msgstr ""
-
-#: part/templates/part/partial_delete.html:22
-#, python-format
-msgid "This part is used in BOMs for %(count)s other parts. If you delete this part, the BOMs for the following parts will be updated"
-msgstr ""
-
-#: part/templates/part/partial_delete.html:32
-#, python-format
-msgid "There are %(count)s stock entries defined for this part. If you delete this part, the following stock entries will also be deleted:"
-msgstr ""
-
-#: part/templates/part/partial_delete.html:43
-#, python-format
-msgid "There are %(count)s manufacturers defined for this part. If you delete this part, the following manufacturer parts will also be deleted:"
-msgstr ""
-
-#: part/templates/part/partial_delete.html:54
-#, python-format
-msgid "There are %(count)s suppliers defined for this part. If you delete this part, the following supplier parts will also be deleted:"
-msgstr ""
-
-#: part/templates/part/partial_delete.html:67
-#, python-format
-msgid "There are %(count)s unique parts tracked for '%(full_name)s'. Deleting this part will permanently remove this tracking information."
-msgstr ""
-
#: part/templates/part/prices.html:19
msgid "Pricing ranges"
msgstr "Gammes de prix"
@@ -5285,66 +5296,58 @@ msgstr ""
msgid "Show BOM cost"
msgstr ""
-#: part/templates/part/prices.html:120
+#: part/templates/part/prices.html:122
msgid "Show sale cost"
msgstr ""
-#: part/templates/part/prices.html:121
+#: part/templates/part/prices.html:123
msgid "Show sale price"
msgstr "Afficher le prix de vente"
-#: part/templates/part/prices.html:143
+#: part/templates/part/prices.html:145
msgid "Calculation parameters"
msgstr ""
-#: part/templates/part/prices.html:158 templates/js/translated/bom.js:957
+#: part/templates/part/prices.html:160 templates/js/translated/bom.js:951
msgid "Supplier Cost"
msgstr ""
-#: part/templates/part/prices.html:159 part/templates/part/prices.html:180
-#: part/templates/part/prices.html:204 part/templates/part/prices.html:234
-#: part/templates/part/prices.html:260 part/templates/part/prices.html:289
+#: part/templates/part/prices.html:161 part/templates/part/prices.html:182
+#: part/templates/part/prices.html:206 part/templates/part/prices.html:236
+#: part/templates/part/prices.html:262 part/templates/part/prices.html:291
msgid "Jump to overview"
msgstr "Aller à la vue d'ensemble"
-#: part/templates/part/prices.html:184
+#: part/templates/part/prices.html:186
msgid "Stock Pricing"
msgstr ""
-#: part/templates/part/prices.html:193
+#: part/templates/part/prices.html:195
msgid "No stock pricing history is available for this part."
msgstr ""
-#: part/templates/part/prices.html:203
+#: part/templates/part/prices.html:205
msgid "Internal Cost"
msgstr ""
-#: part/templates/part/prices.html:218
+#: part/templates/part/prices.html:220
msgid "Add Internal Price Break"
msgstr ""
-#: part/templates/part/prices.html:233
+#: part/templates/part/prices.html:235
msgid "BOM Cost"
msgstr ""
-#: part/templates/part/prices.html:259
+#: part/templates/part/prices.html:261
msgid "Sale Cost"
msgstr ""
-#: part/templates/part/prices.html:300
+#: part/templates/part/prices.html:302
msgid "No sale pice history available for this part."
msgstr ""
-#: part/templates/part/set_category.html:9
-msgid "Set category for the following parts"
-msgstr ""
-
-#: part/templates/part/set_category.html:32
-msgid "Remove part"
-msgstr ""
-
-#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:543
-#: templates/js/translated/part.js:1221 templates/js/translated/part.js:1425
+#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:587
+#: templates/js/translated/part.js:1265 templates/js/translated/part.js:1469
msgid "No Stock"
msgstr ""
@@ -5407,56 +5410,39 @@ msgstr ""
msgid "{title} v{version}"
msgstr ""
-#: part/views.py:74
-msgid "Set Part Category"
-msgstr ""
-
-#: part/views.py:122
-#, python-brace-format
-msgid "Set category for {n} parts"
-msgstr ""
-
-#: part/views.py:193
+#: part/views.py:118
msgid "Match References"
msgstr ""
-#: part/views.py:494
+#: part/views.py:419
msgid "None"
msgstr "Aucun"
-#: part/views.py:556
+#: part/views.py:481
msgid "Part QR Code"
msgstr ""
-#: part/views.py:650
+#: part/views.py:575
msgid "Select Part Image"
msgstr ""
-#: part/views.py:676
+#: part/views.py:601
msgid "Updated part image"
msgstr ""
-#: part/views.py:679
+#: part/views.py:604
msgid "Part image not found"
msgstr ""
-#: part/views.py:768
-msgid "Confirm Part Deletion"
-msgstr ""
-
-#: part/views.py:776
-msgid "Part was deleted"
-msgstr ""
-
-#: part/views.py:785
+#: part/views.py:693
msgid "Part Pricing"
msgstr ""
-#: part/views.py:976
+#: part/views.py:884
msgid "Delete Part Category"
msgstr ""
-#: part/views.py:983
+#: part/views.py:891
msgid "Part category was deleted"
msgstr ""
@@ -5516,21 +5502,21 @@ msgstr "Code-barres associé à l'article en stock"
msgid "Label printing failed"
msgstr ""
-#: plugin/builtin/integration/core_notifications.py:28
+#: plugin/builtin/integration/core_notifications.py:29
msgid "InvenTree contributors"
msgstr ""
-#: plugin/builtin/integration/core_notifications.py:29
+#: plugin/builtin/integration/core_notifications.py:30
msgid "Integrated outgoing notificaton methods"
msgstr ""
-#: plugin/builtin/integration/core_notifications.py:33
-#: plugin/builtin/integration/core_notifications.py:52
-msgid "Enable email notifications"
-msgstr ""
-
#: plugin/builtin/integration/core_notifications.py:34
#: plugin/builtin/integration/core_notifications.py:53
+msgid "Enable email notifications"
+msgstr ""
+
+#: plugin/builtin/integration/core_notifications.py:35
+#: plugin/builtin/integration/core_notifications.py:54
msgid "Allow sending of emails for event notifications"
msgstr ""
@@ -5646,15 +5632,19 @@ msgstr ""
msgid "Either packagename of URL must be provided"
msgstr ""
-#: report/api.py:166
+#: report/api.py:179
msgid "No valid objects provided to template"
msgstr "Aucun objet valide n'a été fourni au modèle"
-#: report/api.py:198 report/api.py:239
+#: report/api.py:215 report/api.py:256
#, python-brace-format
msgid "Template file '{template}' is missing or does not exist"
msgstr ""
+#: report/api.py:359
+msgid "Test report"
+msgstr ""
+
#: report/models.py:152
msgid "Template name"
msgstr "Nom du modèle"
@@ -5757,7 +5747,7 @@ msgstr ""
#: templates/js/translated/build.js:1173 templates/js/translated/build.js:1671
#: templates/js/translated/model_renderers.js:106
#: templates/js/translated/order.js:115 templates/js/translated/order.js:3229
-#: templates/js/translated/order.js:3318 templates/js/translated/stock.js:435
+#: templates/js/translated/order.js:3318 templates/js/translated/stock.js:434
msgid "Serial Number"
msgstr "Numéro de série"
@@ -5766,19 +5756,19 @@ msgid "Test Results"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:93
-#: stock/models.py:2068
+#: stock/models.py:2072
msgid "Test"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:94
-#: stock/models.py:2074
+#: stock/models.py:2078
msgid "Result"
msgstr "Résultat"
#: report/templates/report/inventree_test_report_base.html:97
#: templates/InvenTree/settings/plugin.html:51
#: templates/InvenTree/settings/plugin_settings.html:38
-#: templates/js/translated/order.js:1669 templates/js/translated/stock.js:2340
+#: templates/js/translated/order.js:1669 templates/js/translated/stock.js:2350
msgid "Date"
msgstr ""
@@ -5796,20 +5786,20 @@ msgid "Installed Items"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:137
-#: templates/js/translated/stock.js:555 templates/js/translated/stock.js:725
-#: templates/js/translated/stock.js:2589
+#: templates/js/translated/stock.js:554 templates/js/translated/stock.js:724
+#: templates/js/translated/stock.js:2599
msgid "Serial"
msgstr ""
-#: stock/api.py:504
+#: stock/api.py:505
msgid "Quantity is required"
msgstr ""
-#: stock/api.py:511
+#: stock/api.py:512
msgid "Valid part must be supplied"
msgstr ""
-#: stock/api.py:536
+#: stock/api.py:537
msgid "Serial numbers cannot be supplied for a non-trackable part"
msgstr ""
@@ -5917,7 +5907,7 @@ msgid "Destination Sales Order"
msgstr ""
#: stock/models.py:690 stock/templates/stock/item_base.html:429
-#: templates/js/translated/stock.js:1816
+#: templates/js/translated/stock.js:1826
msgid "Expiry Date"
msgstr ""
@@ -5971,79 +5961,79 @@ msgstr "La quantité ne correspond pas au nombre de numéros de série"
msgid "Serial numbers already exist: {exists}"
msgstr "Les numéros de série existent déja : {exists}"
-#: stock/models.py:1321
+#: stock/models.py:1325
msgid "Stock item has been assigned to a sales order"
msgstr ""
-#: stock/models.py:1324
+#: stock/models.py:1328
msgid "Stock item is installed in another item"
msgstr ""
-#: stock/models.py:1327
+#: stock/models.py:1331
msgid "Stock item contains other items"
msgstr ""
-#: stock/models.py:1330
+#: stock/models.py:1334
msgid "Stock item has been assigned to a customer"
msgstr ""
-#: stock/models.py:1333
+#: stock/models.py:1337
msgid "Stock item is currently in production"
msgstr ""
-#: stock/models.py:1336
+#: stock/models.py:1340
msgid "Serialized stock cannot be merged"
msgstr ""
-#: stock/models.py:1343 stock/serializers.py:908
+#: stock/models.py:1347 stock/serializers.py:895
msgid "Duplicate stock items"
msgstr ""
-#: stock/models.py:1347
+#: stock/models.py:1351
msgid "Stock items must refer to the same part"
msgstr ""
-#: stock/models.py:1351
+#: stock/models.py:1355
msgid "Stock items must refer to the same supplier part"
msgstr ""
-#: stock/models.py:1355
+#: stock/models.py:1359
msgid "Stock status codes must match"
msgstr ""
-#: stock/models.py:1524
+#: stock/models.py:1528
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:1986
+#: stock/models.py:1990
msgid "Entry notes"
msgstr ""
-#: stock/models.py:2044
+#: stock/models.py:2048
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:2050
+#: stock/models.py:2054
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:2069
+#: stock/models.py:2073
msgid "Test name"
msgstr ""
-#: stock/models.py:2075
+#: stock/models.py:2079
msgid "Test result"
msgstr ""
-#: stock/models.py:2081
+#: stock/models.py:2085
msgid "Test output value"
msgstr ""
-#: stock/models.py:2088
+#: stock/models.py:2092
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:2094
+#: stock/models.py:2098
msgid "Test notes"
msgstr ""
@@ -6064,7 +6054,7 @@ msgstr ""
msgid "Enter serial numbers for new items"
msgstr "Entrez les numéros de série pour les nouveaux articles"
-#: stock/serializers.py:309 stock/serializers.py:865 stock/serializers.py:1098
+#: stock/serializers.py:309 stock/serializers.py:852 stock/serializers.py:1085
msgid "Destination stock location"
msgstr ""
@@ -6104,63 +6094,63 @@ msgstr ""
msgid "Destination location for returned item"
msgstr ""
-#: stock/serializers.py:720
+#: stock/serializers.py:707
msgid "Part must be salable"
msgstr ""
-#: stock/serializers.py:724
+#: stock/serializers.py:711
msgid "Item is allocated to a sales order"
msgstr ""
-#: stock/serializers.py:728
+#: stock/serializers.py:715
msgid "Item is allocated to a build order"
msgstr ""
-#: stock/serializers.py:759
+#: stock/serializers.py:746
msgid "Customer to assign stock items"
msgstr ""
-#: stock/serializers.py:765
+#: stock/serializers.py:752
msgid "Selected company is not a customer"
msgstr ""
-#: stock/serializers.py:773
+#: stock/serializers.py:760
msgid "Stock assignment notes"
msgstr ""
-#: stock/serializers.py:783 stock/serializers.py:1014
+#: stock/serializers.py:770 stock/serializers.py:1001
msgid "A list of stock items must be provided"
msgstr ""
-#: stock/serializers.py:872
+#: stock/serializers.py:859
msgid "Stock merging notes"
msgstr ""
-#: stock/serializers.py:877
+#: stock/serializers.py:864
msgid "Allow mismatched suppliers"
msgstr ""
-#: stock/serializers.py:878
+#: stock/serializers.py:865
msgid "Allow stock items with different supplier parts to be merged"
msgstr ""
-#: stock/serializers.py:883
+#: stock/serializers.py:870
msgid "Allow mismatched status"
msgstr ""
-#: stock/serializers.py:884
+#: stock/serializers.py:871
msgid "Allow stock items with different status codes to be merged"
msgstr ""
-#: stock/serializers.py:894
+#: stock/serializers.py:881
msgid "At least two stock items must be provided"
msgstr ""
-#: stock/serializers.py:976
+#: stock/serializers.py:963
msgid "StockItem primary key value"
msgstr ""
-#: stock/serializers.py:1004
+#: stock/serializers.py:991
msgid "Stock transaction notes"
msgstr ""
@@ -6185,7 +6175,7 @@ msgstr ""
msgid "Test Report"
msgstr ""
-#: stock/templates/stock/item.html:94
+#: stock/templates/stock/item.html:94 stock/templates/stock/item.html:298
msgid "Delete Test Data"
msgstr ""
@@ -6197,11 +6187,15 @@ msgstr ""
msgid "Installed Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:151 templates/js/translated/stock.js:2733
+#: stock/templates/stock/item.html:151 templates/js/translated/stock.js:2743
msgid "Install Stock Item"
msgstr ""
-#: stock/templates/stock/item.html:292 templates/js/translated/stock.js:1455
+#: stock/templates/stock/item.html:290
+msgid "Delete all test results for this stock item"
+msgstr ""
+
+#: stock/templates/stock/item.html:323 templates/js/translated/stock.js:1465
msgid "Add Test Result"
msgstr ""
@@ -6388,7 +6382,7 @@ msgid "Stale"
msgstr ""
#: stock/templates/stock/item_base.html:442
-#: templates/js/translated/stock.js:1832
+#: templates/js/translated/stock.js:1842
msgid "Last Updated"
msgstr ""
@@ -6529,7 +6523,7 @@ msgstr ""
msgid "Child Items"
msgstr ""
-#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:182
+#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:144
msgid "Convert Stock Item"
msgstr ""
@@ -6550,31 +6544,19 @@ msgstr ""
msgid "This action cannot be easily undone"
msgstr ""
-#: stock/views.py:113
+#: stock/views.py:111
msgid "Stock Location QR code"
msgstr ""
-#: stock/views.py:131
-msgid "Delete All Test Data"
-msgstr ""
-
-#: stock/views.py:149
-msgid "Confirm test data deletion"
-msgstr ""
-
-#: stock/views.py:150
-msgid "Check the confirmation box"
-msgstr "Cocher la case de confirmation"
-
-#: stock/views.py:165
+#: stock/views.py:127
msgid "Stock Item QR Code"
msgstr ""
-#: stock/views.py:216
+#: stock/views.py:178
msgid "Delete Stock Location"
msgstr ""
-#: stock/views.py:229
+#: stock/views.py:191
msgid "Delete Stock Item"
msgstr ""
@@ -7317,8 +7299,8 @@ msgstr ""
#: templates/about.html:11 templates/about.html:105
#: templates/js/translated/bom.js:133 templates/js/translated/bom.js:621
-#: templates/js/translated/modals.js:56 templates/js/translated/modals.js:595
-#: templates/js/translated/modals.js:689 templates/js/translated/modals.js:997
+#: templates/js/translated/modals.js:56 templates/js/translated/modals.js:601
+#: templates/js/translated/modals.js:695 templates/js/translated/modals.js:1003
#: templates/js/translated/order.js:928 templates/modals.html:15
#: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50
msgid "Close"
@@ -7390,6 +7372,10 @@ msgstr ""
msgid "Please confirm that %(email)s is an email address for user %(user_display)s."
msgstr ""
+#: templates/account/email_confirm.html:20 templates/js/translated/forms.js:630
+msgid "Confirm"
+msgstr "Confirmer"
+
#: templates/account/email_confirm.html:27
#, python-format
msgid "This email confirmation link expired or is invalid. Please issue a new email confirmation request."
@@ -7562,7 +7548,7 @@ msgstr "Ajouter une pièce jointe"
msgid "Delete selected attachments"
msgstr ""
-#: templates/attachment_table.html:12 templates/js/translated/attachment.js:110
+#: templates/attachment_table.html:12 templates/js/translated/attachment.js:112
msgid "Delete Attachments"
msgstr ""
@@ -7596,15 +7582,15 @@ msgid "The following parts are low on required stock"
msgstr ""
#: templates/email/build_order_required_stock.html:18
-#: templates/js/translated/bom.js:1425
+#: templates/js/translated/bom.js:1419
msgid "Required Quantity"
msgstr "Quantité requise"
#: templates/email/build_order_required_stock.html:19
#: templates/email/low_stock_notification.html:18
-#: templates/js/translated/bom.js:890 templates/js/translated/build.js:1787
-#: templates/js/translated/build.js:2650 templates/js/translated/part.js:527
-#: templates/js/translated/part.js:530
+#: templates/js/translated/bom.js:884 templates/js/translated/build.js:1787
+#: templates/js/translated/build.js:2650 templates/js/translated/part.js:571
+#: templates/js/translated/part.js:574
#: templates/js/translated/table_filters.js:178
msgid "Available"
msgstr "Disponible"
@@ -7622,6 +7608,13 @@ msgstr ""
msgid "Minimum Quantity"
msgstr ""
+#: templates/email/new_order_assigned.html:9
+#: templates/email/overdue_build_order.html:9
+#: templates/email/overdue_purchase_order.html:9
+#: templates/email/overdue_sales_order.html:9
+msgid "Click on the following link to view this order"
+msgstr ""
+
#: templates/image_download.html:8
msgid "Specify URL for downloading image"
msgstr ""
@@ -7638,91 +7631,91 @@ msgstr "Le serveur distant doit être accessible"
msgid "Remote image must not exceed maximum allowable file size"
msgstr "L'image distante ne doit pas excéder la taille maximale autorisée de fichier"
-#: templates/js/translated/api.js:235 templates/js/translated/modals.js:1067
+#: templates/js/translated/api.js:195 templates/js/translated/modals.js:1073
msgid "No Response"
msgstr "Aucune réponse"
-#: templates/js/translated/api.js:236 templates/js/translated/modals.js:1068
+#: templates/js/translated/api.js:196 templates/js/translated/modals.js:1074
msgid "No response from the InvenTree server"
msgstr "Aucune réponse du serveur InvenTree"
-#: templates/js/translated/api.js:242
+#: templates/js/translated/api.js:202
msgid "Error 400: Bad request"
msgstr "Erreur 400: Mauvaise requête"
-#: templates/js/translated/api.js:243
+#: templates/js/translated/api.js:203
msgid "API request returned error code 400"
msgstr "La requête de l'API a retourné le code d'erreur 400"
-#: templates/js/translated/api.js:247 templates/js/translated/modals.js:1077
+#: templates/js/translated/api.js:207 templates/js/translated/modals.js:1083
msgid "Error 401: Not Authenticated"
msgstr "Erreur 401: non authentifié"
-#: templates/js/translated/api.js:248 templates/js/translated/modals.js:1078
+#: templates/js/translated/api.js:208 templates/js/translated/modals.js:1084
msgid "Authentication credentials not supplied"
msgstr "Informations d’authentification non fournies"
-#: templates/js/translated/api.js:252 templates/js/translated/modals.js:1082
+#: templates/js/translated/api.js:212 templates/js/translated/modals.js:1088
msgid "Error 403: Permission Denied"
msgstr "Erreur 403: Permission refusée"
-#: templates/js/translated/api.js:253 templates/js/translated/modals.js:1083
+#: templates/js/translated/api.js:213 templates/js/translated/modals.js:1089
msgid "You do not have the required permissions to access this function"
msgstr "Vous n'avez pas les autorisations requises pour accéder à cette fonction"
-#: templates/js/translated/api.js:257 templates/js/translated/modals.js:1087
+#: templates/js/translated/api.js:217 templates/js/translated/modals.js:1093
msgid "Error 404: Resource Not Found"
msgstr "Erreur 404: Ressource introuvable"
-#: templates/js/translated/api.js:258 templates/js/translated/modals.js:1088
+#: templates/js/translated/api.js:218 templates/js/translated/modals.js:1094
msgid "The requested resource could not be located on the server"
msgstr "La ressource demandée n'a pas pu être trouvée sur le serveur"
-#: templates/js/translated/api.js:262
+#: templates/js/translated/api.js:222
msgid "Error 405: Method Not Allowed"
msgstr "Erreur 405: Méthode non autorisée"
-#: templates/js/translated/api.js:263
+#: templates/js/translated/api.js:223
msgid "HTTP method not allowed at URL"
msgstr "Méthode HTTP non autorisée à l'adresse URL"
-#: templates/js/translated/api.js:267 templates/js/translated/modals.js:1092
+#: templates/js/translated/api.js:227 templates/js/translated/modals.js:1098
msgid "Error 408: Timeout"
msgstr "Erreur 408: Délai dépassé"
-#: templates/js/translated/api.js:268 templates/js/translated/modals.js:1093
+#: templates/js/translated/api.js:228 templates/js/translated/modals.js:1099
msgid "Connection timeout while requesting data from server"
msgstr "Délai de connexion dépassé lors de la demande de données depuis le serveur"
-#: templates/js/translated/api.js:271
+#: templates/js/translated/api.js:231
msgid "Unhandled Error Code"
msgstr "Code d'erreur non géré"
-#: templates/js/translated/api.js:272
+#: templates/js/translated/api.js:232
msgid "Error code"
msgstr "Code d’erreur"
-#: templates/js/translated/attachment.js:96
+#: templates/js/translated/attachment.js:98
msgid "All selected attachments will be deleted"
msgstr ""
-#: templates/js/translated/attachment.js:156
+#: templates/js/translated/attachment.js:152
msgid "No attachments found"
msgstr "Aucune pièce jointe trouvée"
-#: templates/js/translated/attachment.js:180
+#: templates/js/translated/attachment.js:176
msgid "Edit Attachment"
msgstr "Modifier la pièce jointe"
-#: templates/js/translated/attachment.js:246
+#: templates/js/translated/attachment.js:242
msgid "Upload Date"
msgstr "Date d'upload"
-#: templates/js/translated/attachment.js:262
+#: templates/js/translated/attachment.js:264
msgid "Edit attachment"
msgstr "Modifier la pièce jointe"
-#: templates/js/translated/attachment.js:269
+#: templates/js/translated/attachment.js:271
msgid "Delete attachment"
msgstr "Supprimer la pièce jointe"
@@ -7755,7 +7748,7 @@ msgid "Unknown response from server"
msgstr "Réponse inconnue du serveur"
#: templates/js/translated/barcode.js:182
-#: templates/js/translated/modals.js:1057
+#: templates/js/translated/modals.js:1063
msgid "Invalid server response"
msgstr "Réponse du serveur invalide"
@@ -7783,7 +7776,7 @@ msgstr "Ceci supprimera l'association entre cet article de stock et le code-barr
msgid "Unlink"
msgstr "Délier"
-#: templates/js/translated/barcode.js:456 templates/js/translated/stock.js:999
+#: templates/js/translated/barcode.js:456 templates/js/translated/stock.js:998
msgid "Remove stock item"
msgstr "Supprimer l'article de stock"
@@ -7918,89 +7911,89 @@ msgstr ""
msgid "Edit BOM Item Substitutes"
msgstr ""
-#: templates/js/translated/bom.js:682
+#: templates/js/translated/bom.js:684
msgid "All selected BOM items will be deleted"
msgstr ""
-#: templates/js/translated/bom.js:697
+#: templates/js/translated/bom.js:699
msgid "Delete selected BOM items?"
msgstr ""
-#: templates/js/translated/bom.js:824
+#: templates/js/translated/bom.js:818
msgid "Load BOM for subassembly"
msgstr ""
-#: templates/js/translated/bom.js:834
+#: templates/js/translated/bom.js:828
msgid "Substitutes Available"
msgstr ""
-#: templates/js/translated/bom.js:838 templates/js/translated/build.js:1769
+#: templates/js/translated/bom.js:832 templates/js/translated/build.js:1769
msgid "Variant stock allowed"
msgstr ""
-#: templates/js/translated/bom.js:906 templates/js/translated/build.js:1814
+#: templates/js/translated/bom.js:900 templates/js/translated/build.js:1814
#: templates/js/translated/order.js:3562
msgid "No Stock Available"
msgstr ""
-#: templates/js/translated/bom.js:910 templates/js/translated/build.js:1818
+#: templates/js/translated/bom.js:904 templates/js/translated/build.js:1818
msgid "Includes variant and substitute stock"
msgstr ""
-#: templates/js/translated/bom.js:912 templates/js/translated/build.js:1820
-#: templates/js/translated/part.js:690
+#: templates/js/translated/bom.js:906 templates/js/translated/build.js:1820
+#: templates/js/translated/part.js:734
msgid "Includes variant stock"
msgstr ""
-#: templates/js/translated/bom.js:914 templates/js/translated/build.js:1822
+#: templates/js/translated/bom.js:908 templates/js/translated/build.js:1822
msgid "Includes substitute stock"
msgstr ""
-#: templates/js/translated/bom.js:928
+#: templates/js/translated/bom.js:922
msgid "Substitutes"
msgstr ""
-#: templates/js/translated/bom.js:943
+#: templates/js/translated/bom.js:937
msgid "Purchase Price Range"
msgstr ""
-#: templates/js/translated/bom.js:950
+#: templates/js/translated/bom.js:944
msgid "Purchase Price Average"
msgstr ""
-#: templates/js/translated/bom.js:999 templates/js/translated/bom.js:1090
+#: templates/js/translated/bom.js:993 templates/js/translated/bom.js:1084
msgid "View BOM"
msgstr ""
-#: templates/js/translated/bom.js:1061
+#: templates/js/translated/bom.js:1055
msgid "Validate BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:1063
+#: templates/js/translated/bom.js:1057
msgid "This line has been validated"
msgstr ""
-#: templates/js/translated/bom.js:1065
+#: templates/js/translated/bom.js:1059
msgid "Edit substitute parts"
msgstr ""
-#: templates/js/translated/bom.js:1067 templates/js/translated/bom.js:1228
+#: templates/js/translated/bom.js:1061 templates/js/translated/bom.js:1222
msgid "Edit BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:1069
+#: templates/js/translated/bom.js:1063
msgid "Delete BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:1164 templates/js/translated/build.js:1615
+#: templates/js/translated/bom.js:1158 templates/js/translated/build.js:1615
msgid "No BOM items found"
msgstr ""
-#: templates/js/translated/bom.js:1408 templates/js/translated/build.js:1753
+#: templates/js/translated/bom.js:1402 templates/js/translated/build.js:1753
msgid "Required Part"
msgstr ""
-#: templates/js/translated/bom.js:1430
+#: templates/js/translated/bom.js:1424
msgid "Inherited from parent BOM"
msgstr ""
@@ -8040,13 +8033,13 @@ msgstr ""
msgid "Complete Build Order"
msgstr ""
-#: templates/js/translated/build.js:259 templates/js/translated/stock.js:91
-#: templates/js/translated/stock.js:181
+#: templates/js/translated/build.js:259 templates/js/translated/stock.js:90
+#: templates/js/translated/stock.js:180
msgid "Next available serial number"
msgstr "Prochain numéro de série disponible"
-#: templates/js/translated/build.js:261 templates/js/translated/stock.js:93
-#: templates/js/translated/stock.js:183
+#: templates/js/translated/build.js:261 templates/js/translated/stock.js:92
+#: templates/js/translated/stock.js:182
msgid "Latest serial number"
msgstr "Dernier numéro de série"
@@ -8259,9 +8252,9 @@ msgstr ""
msgid "No builds matching query"
msgstr ""
-#: templates/js/translated/build.js:2448 templates/js/translated/part.js:1314
-#: templates/js/translated/part.js:1729 templates/js/translated/stock.js:1619
-#: templates/js/translated/stock.js:2277
+#: templates/js/translated/build.js:2448 templates/js/translated/part.js:1358
+#: templates/js/translated/part.js:1825 templates/js/translated/stock.js:1629
+#: templates/js/translated/stock.js:2287
msgid "Select"
msgstr ""
@@ -8273,7 +8266,7 @@ msgstr ""
msgid "Progress"
msgstr ""
-#: templates/js/translated/build.js:2532 templates/js/translated/stock.js:2519
+#: templates/js/translated/build.js:2532 templates/js/translated/stock.js:2529
msgid "No user information"
msgstr "Pas d'informations sur l'utilisateur"
@@ -8285,107 +8278,107 @@ msgstr ""
msgid "No parts allocated for"
msgstr ""
-#: templates/js/translated/company.js:66
+#: templates/js/translated/company.js:65
msgid "Add Manufacturer"
msgstr ""
-#: templates/js/translated/company.js:79 templates/js/translated/company.js:169
+#: templates/js/translated/company.js:78 templates/js/translated/company.js:168
msgid "Add Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:100
+#: templates/js/translated/company.js:99
msgid "Edit Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:157 templates/js/translated/order.js:506
+#: templates/js/translated/company.js:156 templates/js/translated/order.js:506
msgid "Add Supplier"
msgstr ""
-#: templates/js/translated/company.js:185
+#: templates/js/translated/company.js:184
msgid "Add Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:200
+#: templates/js/translated/company.js:199
msgid "Edit Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:248
+#: templates/js/translated/company.js:249
msgid "All selected supplier parts will be deleted"
msgstr ""
-#: templates/js/translated/company.js:263
+#: templates/js/translated/company.js:264
msgid "Delete Supplier Parts"
msgstr ""
-#: templates/js/translated/company.js:342
+#: templates/js/translated/company.js:336
msgid "Add new Company"
msgstr ""
-#: templates/js/translated/company.js:419
+#: templates/js/translated/company.js:413
msgid "Parts Supplied"
msgstr "Composantes fournies"
-#: templates/js/translated/company.js:428
+#: templates/js/translated/company.js:422
msgid "Parts Manufactured"
msgstr "Composantes fabriquées"
-#: templates/js/translated/company.js:443
+#: templates/js/translated/company.js:437
msgid "No company information found"
msgstr ""
-#: templates/js/translated/company.js:482
+#: templates/js/translated/company.js:478
msgid "All selected manufacturer parts will be deleted"
msgstr ""
-#: templates/js/translated/company.js:496
+#: templates/js/translated/company.js:492
msgid "Delete Manufacturer Parts"
msgstr ""
-#: templates/js/translated/company.js:535
+#: templates/js/translated/company.js:526
msgid "All selected parameters will be deleted"
msgstr ""
-#: templates/js/translated/company.js:548
+#: templates/js/translated/company.js:539
msgid "Delete Parameters"
msgstr ""
-#: templates/js/translated/company.js:595
+#: templates/js/translated/company.js:580
msgid "No manufacturer parts found"
msgstr ""
-#: templates/js/translated/company.js:615
-#: templates/js/translated/company.js:874 templates/js/translated/part.js:565
-#: templates/js/translated/part.js:650
+#: templates/js/translated/company.js:600
+#: templates/js/translated/company.js:859 templates/js/translated/part.js:609
+#: templates/js/translated/part.js:694
msgid "Template part"
msgstr ""
-#: templates/js/translated/company.js:619
-#: templates/js/translated/company.js:878 templates/js/translated/part.js:569
-#: templates/js/translated/part.js:654
+#: templates/js/translated/company.js:604
+#: templates/js/translated/company.js:863 templates/js/translated/part.js:613
+#: templates/js/translated/part.js:698
msgid "Assembled part"
msgstr ""
-#: templates/js/translated/company.js:747 templates/js/translated/part.js:757
+#: templates/js/translated/company.js:732 templates/js/translated/part.js:801
msgid "No parameters found"
msgstr ""
-#: templates/js/translated/company.js:784 templates/js/translated/part.js:799
+#: templates/js/translated/company.js:769 templates/js/translated/part.js:843
msgid "Edit parameter"
msgstr ""
-#: templates/js/translated/company.js:785 templates/js/translated/part.js:800
+#: templates/js/translated/company.js:770 templates/js/translated/part.js:844
msgid "Delete parameter"
msgstr ""
-#: templates/js/translated/company.js:804 templates/js/translated/part.js:817
+#: templates/js/translated/company.js:789 templates/js/translated/part.js:861
msgid "Edit Parameter"
msgstr ""
-#: templates/js/translated/company.js:815 templates/js/translated/part.js:829
+#: templates/js/translated/company.js:800 templates/js/translated/part.js:873
msgid "Delete Parameter"
msgstr ""
-#: templates/js/translated/company.js:854
+#: templates/js/translated/company.js:839
msgid "No supplier parts found"
msgstr ""
@@ -8448,36 +8441,36 @@ msgstr ""
msgid "Keep this form open"
msgstr ""
-#: templates/js/translated/forms.js:756
+#: templates/js/translated/forms.js:757
msgid "Enter a valid number"
msgstr ""
-#: templates/js/translated/forms.js:1248 templates/modals.html:19
+#: templates/js/translated/forms.js:1249 templates/modals.html:19
#: templates/modals.html:43
msgid "Form errors exist"
msgstr ""
-#: templates/js/translated/forms.js:1681
+#: templates/js/translated/forms.js:1682
msgid "No results found"
msgstr ""
-#: templates/js/translated/forms.js:1896 templates/search.html:29
+#: templates/js/translated/forms.js:1897 templates/search.html:29
msgid "Searching"
msgstr ""
-#: templates/js/translated/forms.js:2149
+#: templates/js/translated/forms.js:2150
msgid "Clear input"
msgstr ""
-#: templates/js/translated/forms.js:2615
+#: templates/js/translated/forms.js:2616
msgid "File Column"
msgstr ""
-#: templates/js/translated/forms.js:2615
+#: templates/js/translated/forms.js:2616
msgid "Field Name"
msgstr ""
-#: templates/js/translated/forms.js:2627
+#: templates/js/translated/forms.js:2628
msgid "Select Columns"
msgstr ""
@@ -8498,7 +8491,7 @@ msgid "Labels sent to printer"
msgstr ""
#: templates/js/translated/label.js:60 templates/js/translated/report.js:118
-#: templates/js/translated/stock.js:1023
+#: templates/js/translated/stock.js:1022
msgid "Select Stock Items"
msgstr ""
@@ -8552,12 +8545,12 @@ msgid "Select Label Template"
msgstr ""
#: templates/js/translated/modals.js:82 templates/js/translated/modals.js:142
-#: templates/js/translated/modals.js:621
+#: templates/js/translated/modals.js:627
msgid "Cancel"
msgstr "Annuler"
#: templates/js/translated/modals.js:83 templates/js/translated/modals.js:141
-#: templates/js/translated/modals.js:688 templates/js/translated/modals.js:996
+#: templates/js/translated/modals.js:694 templates/js/translated/modals.js:1002
#: templates/modals.html:28 templates/modals.html:51
msgid "Submit"
msgstr ""
@@ -8566,47 +8559,47 @@ msgstr ""
msgid "Form Title"
msgstr ""
-#: templates/js/translated/modals.js:403
+#: templates/js/translated/modals.js:421
msgid "Waiting for server..."
msgstr ""
-#: templates/js/translated/modals.js:562
+#: templates/js/translated/modals.js:568
msgid "Show Error Information"
msgstr ""
-#: templates/js/translated/modals.js:620
+#: templates/js/translated/modals.js:626
msgid "Accept"
msgstr ""
-#: templates/js/translated/modals.js:677
+#: templates/js/translated/modals.js:683
msgid "Loading Data"
msgstr ""
-#: templates/js/translated/modals.js:948
+#: templates/js/translated/modals.js:954
msgid "Invalid response from server"
msgstr ""
-#: templates/js/translated/modals.js:948
+#: templates/js/translated/modals.js:954
msgid "Form data missing from server response"
msgstr ""
-#: templates/js/translated/modals.js:960
+#: templates/js/translated/modals.js:966
msgid "Error posting form data"
msgstr ""
-#: templates/js/translated/modals.js:1057
+#: templates/js/translated/modals.js:1063
msgid "JSON response missing form data"
msgstr ""
-#: templates/js/translated/modals.js:1072
+#: templates/js/translated/modals.js:1078
msgid "Error 400: Bad Request"
msgstr ""
-#: templates/js/translated/modals.js:1073
+#: templates/js/translated/modals.js:1079
msgid "Server returned error code 400"
msgstr ""
-#: templates/js/translated/modals.js:1096
+#: templates/js/translated/modals.js:1102
msgid "Error requesting form data"
msgstr ""
@@ -8656,11 +8649,11 @@ msgstr ""
msgid "Mark as read"
msgstr ""
-#: templates/js/translated/notification.js:259
+#: templates/js/translated/notification.js:260
msgid "No unread notifications"
msgstr ""
-#: templates/js/translated/notification.js:300 templates/notifications.html:10
+#: templates/js/translated/notification.js:302 templates/notifications.html:10
msgid "Notifications will load here"
msgstr ""
@@ -8804,7 +8797,7 @@ msgstr ""
msgid "Quantity to receive"
msgstr ""
-#: templates/js/translated/order.js:1225 templates/js/translated/stock.js:2080
+#: templates/js/translated/order.js:1225 templates/js/translated/stock.js:2090
msgid "Stock Status"
msgstr ""
@@ -8828,7 +8821,7 @@ msgstr ""
msgid "Receive Purchase Order Items"
msgstr ""
-#: templates/js/translated/order.js:1602 templates/js/translated/part.js:870
+#: templates/js/translated/order.js:1602 templates/js/translated/part.js:914
msgid "No purchase orders found"
msgstr ""
@@ -8863,7 +8856,7 @@ msgstr ""
#: templates/js/translated/order.js:1937 templates/js/translated/order.js:2139
#: templates/js/translated/order.js:3467 templates/js/translated/order.js:3978
-#: templates/js/translated/part.js:1948 templates/js/translated/part.js:2301
+#: templates/js/translated/part.js:2044 templates/js/translated/part.js:2397
msgid "Unit Price"
msgstr ""
@@ -8873,11 +8866,11 @@ msgid "Total Price"
msgstr ""
#: templates/js/translated/order.js:1993 templates/js/translated/order.js:3525
-#: templates/js/translated/part.js:979
+#: templates/js/translated/part.js:1023
msgid "This line item is overdue"
msgstr ""
-#: templates/js/translated/order.js:2052 templates/js/translated/part.js:1025
+#: templates/js/translated/order.js:2052 templates/js/translated/part.js:1069
msgid "Receive line item"
msgstr ""
@@ -8998,7 +8991,7 @@ msgid "Delete Stock Allocation"
msgstr ""
#: templates/js/translated/order.js:3243 templates/js/translated/order.js:3332
-#: templates/js/translated/stock.js:1535
+#: templates/js/translated/stock.js:1545
msgid "Shipped to customer"
msgstr "Livré au client"
@@ -9138,165 +9131,209 @@ msgstr "Pièce modifiée"
msgid "Create Part Variant"
msgstr "Créer une variante de pièce"
+#: templates/js/translated/part.js:405
+msgid "Active Part"
+msgstr ""
+
+#: templates/js/translated/part.js:406
+msgid "Part cannot be deleted as it is currently active"
+msgstr ""
+
+#: templates/js/translated/part.js:420
+msgid "Deleting this part cannot be reversed"
+msgstr ""
+
+#: templates/js/translated/part.js:422
+msgid "Any stock items for this part will be deleted"
+msgstr ""
+
#: templates/js/translated/part.js:423
+msgid "This part will be removed from any Bills of Material"
+msgstr ""
+
+#: templates/js/translated/part.js:424
+msgid "All manufacturer and supplier information for this part will be deleted"
+msgstr ""
+
+#: templates/js/translated/part.js:431
+msgid "Delete Part"
+msgstr ""
+
+#: templates/js/translated/part.js:467
msgid "You are subscribed to notifications for this item"
msgstr ""
-#: templates/js/translated/part.js:425
+#: templates/js/translated/part.js:469
msgid "You have subscribed to notifications for this item"
msgstr ""
-#: templates/js/translated/part.js:430
+#: templates/js/translated/part.js:474
msgid "Subscribe to notifications for this item"
msgstr ""
-#: templates/js/translated/part.js:432
+#: templates/js/translated/part.js:476
msgid "You have unsubscribed to notifications for this item"
msgstr ""
-#: templates/js/translated/part.js:449
+#: templates/js/translated/part.js:493
msgid "Validating the BOM will mark each line item as valid"
msgstr ""
-#: templates/js/translated/part.js:459
+#: templates/js/translated/part.js:503
msgid "Validate Bill of Materials"
msgstr ""
-#: templates/js/translated/part.js:462
+#: templates/js/translated/part.js:506
msgid "Validated Bill of Materials"
msgstr ""
-#: templates/js/translated/part.js:487
+#: templates/js/translated/part.js:531
msgid "Copy Bill of Materials"
msgstr ""
-#: templates/js/translated/part.js:513 templates/js/translated/part.js:1397
+#: templates/js/translated/part.js:557 templates/js/translated/part.js:1441
#: templates/js/translated/table_filters.js:452
msgid "Low stock"
msgstr "Stock bas"
-#: templates/js/translated/part.js:523 templates/js/translated/part.js:1409
+#: templates/js/translated/part.js:567 templates/js/translated/part.js:1453
msgid "No stock available"
msgstr ""
-#: templates/js/translated/part.js:557 templates/js/translated/part.js:642
+#: templates/js/translated/part.js:601 templates/js/translated/part.js:686
msgid "Trackable part"
msgstr "Pièce traçable"
-#: templates/js/translated/part.js:561 templates/js/translated/part.js:646
+#: templates/js/translated/part.js:605 templates/js/translated/part.js:690
msgid "Virtual part"
msgstr "Pièce virtuelle"
-#: templates/js/translated/part.js:573
+#: templates/js/translated/part.js:617
msgid "Subscribed part"
msgstr ""
-#: templates/js/translated/part.js:577
+#: templates/js/translated/part.js:621
msgid "Salable part"
msgstr "Pièce vendable"
-#: templates/js/translated/part.js:705
+#: templates/js/translated/part.js:749
msgid "No variants found"
msgstr "Aucune variante trouvée"
-#: templates/js/translated/part.js:1095
+#: templates/js/translated/part.js:1139
msgid "Delete part relationship"
msgstr ""
-#: templates/js/translated/part.js:1119
+#: templates/js/translated/part.js:1163
msgid "Delete Part Relationship"
msgstr ""
-#: templates/js/translated/part.js:1184 templates/js/translated/part.js:1480
+#: templates/js/translated/part.js:1228 templates/js/translated/part.js:1524
msgid "No parts found"
msgstr "Aucune pièce trouvée"
-#: templates/js/translated/part.js:1223
+#: templates/js/translated/part.js:1267
msgid "Not available"
msgstr ""
-#: templates/js/translated/part.js:1374
+#: templates/js/translated/part.js:1418
msgid "No category"
msgstr "Aucune catégorie"
-#: templates/js/translated/part.js:1504 templates/js/translated/part.js:1664
-#: templates/js/translated/stock.js:2238
+#: templates/js/translated/part.js:1548 templates/js/translated/part.js:1760
+#: templates/js/translated/stock.js:2248
msgid "Display as list"
msgstr "Afficher sous forme de liste"
-#: templates/js/translated/part.js:1520
+#: templates/js/translated/part.js:1564
msgid "Display as grid"
msgstr "Afficher sous forme de grille"
-#: templates/js/translated/part.js:1683 templates/js/translated/stock.js:2257
+#: templates/js/translated/part.js:1630
+msgid "Set the part category for the selected parts"
+msgstr ""
+
+#: templates/js/translated/part.js:1635
+msgid "Set Part Category"
+msgstr ""
+
+#: templates/js/translated/part.js:1640
+msgid "Select Part Category"
+msgstr ""
+
+#: templates/js/translated/part.js:1653
+msgid "Category is required"
+msgstr ""
+
+#: templates/js/translated/part.js:1779 templates/js/translated/stock.js:2267
msgid "Display as tree"
msgstr "Afficher sous forme d'arborescence"
-#: templates/js/translated/part.js:1747
+#: templates/js/translated/part.js:1843
msgid "Subscribed category"
msgstr ""
-#: templates/js/translated/part.js:1761 templates/js/translated/stock.js:2301
+#: templates/js/translated/part.js:1857 templates/js/translated/stock.js:2311
msgid "Path"
msgstr "Chemin d'accès"
-#: templates/js/translated/part.js:1805
+#: templates/js/translated/part.js:1901
msgid "No test templates matching query"
msgstr ""
-#: templates/js/translated/part.js:1856 templates/js/translated/stock.js:1233
+#: templates/js/translated/part.js:1952 templates/js/translated/stock.js:1243
msgid "Edit test result"
msgstr "Modifier le résultat du test"
-#: templates/js/translated/part.js:1857 templates/js/translated/stock.js:1234
-#: templates/js/translated/stock.js:1493
+#: templates/js/translated/part.js:1953 templates/js/translated/stock.js:1244
+#: templates/js/translated/stock.js:1503
msgid "Delete test result"
msgstr "Supprimer le résultat du test"
-#: templates/js/translated/part.js:1863
+#: templates/js/translated/part.js:1959
msgid "This test is defined for a parent part"
msgstr ""
-#: templates/js/translated/part.js:1885
+#: templates/js/translated/part.js:1981
msgid "Edit Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:1899
+#: templates/js/translated/part.js:1995
msgid "Delete Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:1924
+#: templates/js/translated/part.js:2020
#, python-brace-format
msgid "No ${human_name} information found"
msgstr ""
-#: templates/js/translated/part.js:1981
+#: templates/js/translated/part.js:2077
#, python-brace-format
msgid "Edit ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:1982
+#: templates/js/translated/part.js:2078
#, python-brace-format
msgid "Delete ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:2096
+#: templates/js/translated/part.js:2192
msgid "Current Stock"
msgstr ""
-#: templates/js/translated/part.js:2129
+#: templates/js/translated/part.js:2225
msgid "No scheduling information available for this part"
msgstr ""
-#: templates/js/translated/part.js:2155
+#: templates/js/translated/part.js:2251
msgid "Scheduled Stock Quantities"
msgstr ""
-#: templates/js/translated/part.js:2225
+#: templates/js/translated/part.js:2321
msgid "Single Price"
msgstr ""
-#: templates/js/translated/part.js:2244
+#: templates/js/translated/part.js:2340
msgid "Single Price Difference"
msgstr ""
@@ -9378,360 +9415,360 @@ msgstr ""
msgid "Remove results"
msgstr ""
-#: templates/js/translated/stock.js:73
+#: templates/js/translated/stock.js:72
msgid "Serialize Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:101
+#: templates/js/translated/stock.js:100
msgid "Confirm Stock Serialization"
msgstr ""
-#: templates/js/translated/stock.js:110
+#: templates/js/translated/stock.js:109
msgid "Parent stock location"
msgstr ""
-#: templates/js/translated/stock.js:139
+#: templates/js/translated/stock.js:138
msgid "Edit Stock Location"
msgstr ""
-#: templates/js/translated/stock.js:154
+#: templates/js/translated/stock.js:153
msgid "New Stock Location"
msgstr ""
-#: templates/js/translated/stock.js:194
+#: templates/js/translated/stock.js:193
msgid "This part cannot be serialized"
msgstr ""
-#: templates/js/translated/stock.js:233
+#: templates/js/translated/stock.js:232
msgid "Enter initial quantity for this stock item"
msgstr ""
-#: templates/js/translated/stock.js:239
+#: templates/js/translated/stock.js:238
msgid "Enter serial numbers for new stock (or leave blank)"
msgstr "Entrez les numéros de série pour le nouveau stock (ou laisser vide)"
-#: templates/js/translated/stock.js:304
+#: templates/js/translated/stock.js:303
msgid "Stock item duplicated"
msgstr ""
-#: templates/js/translated/stock.js:324
+#: templates/js/translated/stock.js:323
msgid "Duplicate Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:344
+#: templates/js/translated/stock.js:343
msgid "Edit Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:394
+#: templates/js/translated/stock.js:393
msgid "Created new stock item"
msgstr ""
-#: templates/js/translated/stock.js:407
+#: templates/js/translated/stock.js:406
msgid "Created multiple stock items"
msgstr ""
-#: templates/js/translated/stock.js:432
+#: templates/js/translated/stock.js:431
msgid "Find Serial Number"
msgstr "Trouver un numéro de série"
-#: templates/js/translated/stock.js:436 templates/js/translated/stock.js:437
+#: templates/js/translated/stock.js:435 templates/js/translated/stock.js:436
msgid "Enter serial number"
msgstr "Entrer le numéro de série"
-#: templates/js/translated/stock.js:453
+#: templates/js/translated/stock.js:452
msgid "Enter a serial number"
msgstr "Entrer un numéro de série"
-#: templates/js/translated/stock.js:473
+#: templates/js/translated/stock.js:472
msgid "No matching serial number"
msgstr "Aucun numéro de série correspondant"
-#: templates/js/translated/stock.js:482
+#: templates/js/translated/stock.js:481
msgid "More than one matching result found"
msgstr "Plus d'un résultat correspondant trouvé"
-#: templates/js/translated/stock.js:605
+#: templates/js/translated/stock.js:604
msgid "Confirm stock assignment"
msgstr "Confirmer l'assignation de stock"
-#: templates/js/translated/stock.js:606
+#: templates/js/translated/stock.js:605
msgid "Assign Stock to Customer"
msgstr "Assigner le stock au client"
-#: templates/js/translated/stock.js:683
+#: templates/js/translated/stock.js:682
msgid "Warning: Merge operation cannot be reversed"
msgstr "Attention : l'opération de fusion est irréversible"
-#: templates/js/translated/stock.js:684
+#: templates/js/translated/stock.js:683
msgid "Some information will be lost when merging stock items"
msgstr "Certaines informations seront perdues lors de la fusion des articles en stock"
-#: templates/js/translated/stock.js:686
+#: templates/js/translated/stock.js:685
msgid "Stock transaction history will be deleted for merged items"
msgstr "L'historique des transactions de stock sera supprimé pour les éléments fusionnés"
-#: templates/js/translated/stock.js:687
+#: templates/js/translated/stock.js:686
msgid "Supplier part information will be deleted for merged items"
msgstr "Les informations sur la pièce du fournisseur seront supprimées pour les éléments fusionnés"
-#: templates/js/translated/stock.js:773
+#: templates/js/translated/stock.js:772
msgid "Confirm stock item merge"
msgstr "Confirmer la fusion de l'article en stock"
-#: templates/js/translated/stock.js:774
+#: templates/js/translated/stock.js:773
msgid "Merge Stock Items"
msgstr "Fusionner les articles en stock"
-#: templates/js/translated/stock.js:869
+#: templates/js/translated/stock.js:868
msgid "Transfer Stock"
msgstr "Transférer le stock"
-#: templates/js/translated/stock.js:870
+#: templates/js/translated/stock.js:869
msgid "Move"
msgstr "Transférer"
-#: templates/js/translated/stock.js:876
+#: templates/js/translated/stock.js:875
msgid "Count Stock"
msgstr "Compter le stock"
-#: templates/js/translated/stock.js:877
+#: templates/js/translated/stock.js:876
msgid "Count"
msgstr "Compter"
-#: templates/js/translated/stock.js:881
+#: templates/js/translated/stock.js:880
msgid "Remove Stock"
msgstr "Supprimer du stock"
-#: templates/js/translated/stock.js:882
+#: templates/js/translated/stock.js:881
msgid "Take"
msgstr "Supprimer"
-#: templates/js/translated/stock.js:886
+#: templates/js/translated/stock.js:885
msgid "Add Stock"
msgstr "Ajouter du stock"
-#: templates/js/translated/stock.js:887 users/models.py:215
+#: templates/js/translated/stock.js:886 users/models.py:215
msgid "Add"
msgstr "Ajouter"
-#: templates/js/translated/stock.js:891
+#: templates/js/translated/stock.js:890
msgid "Delete Stock"
msgstr "Supprimer le stock"
-#: templates/js/translated/stock.js:984
+#: templates/js/translated/stock.js:983
msgid "Quantity cannot be adjusted for serialized stock"
msgstr "La quantité ne peut pas être ajustée pour un stock sérialisé"
-#: templates/js/translated/stock.js:984
+#: templates/js/translated/stock.js:983
msgid "Specify stock quantity"
msgstr "Spécifiez la quantité du stock"
-#: templates/js/translated/stock.js:1024
+#: templates/js/translated/stock.js:1023
msgid "You must select at least one available stock item"
msgstr "Vous devez sélectionner au moins un article en stock disponible"
-#: templates/js/translated/stock.js:1047
+#: templates/js/translated/stock.js:1046
msgid "Confirm stock adjustment"
msgstr ""
-#: templates/js/translated/stock.js:1172
+#: templates/js/translated/stock.js:1182
msgid "PASS"
msgstr "RÉUSSI"
-#: templates/js/translated/stock.js:1174
+#: templates/js/translated/stock.js:1184
msgid "FAIL"
msgstr "ÉCHEC"
-#: templates/js/translated/stock.js:1179
+#: templates/js/translated/stock.js:1189
msgid "NO RESULT"
msgstr "AUCUN RÉSULTAT"
-#: templates/js/translated/stock.js:1226
+#: templates/js/translated/stock.js:1236
msgid "Pass test"
msgstr ""
-#: templates/js/translated/stock.js:1229
+#: templates/js/translated/stock.js:1239
msgid "Add test result"
msgstr "Ajouter un résultat de test"
-#: templates/js/translated/stock.js:1255
+#: templates/js/translated/stock.js:1265
msgid "No test results found"
msgstr "Aucun résultat de test trouvé"
-#: templates/js/translated/stock.js:1311
+#: templates/js/translated/stock.js:1321
msgid "Test Date"
msgstr "Date du test"
-#: templates/js/translated/stock.js:1476
+#: templates/js/translated/stock.js:1486
msgid "Edit Test Result"
msgstr ""
-#: templates/js/translated/stock.js:1498
+#: templates/js/translated/stock.js:1508
msgid "Delete Test Result"
msgstr ""
-#: templates/js/translated/stock.js:1527
+#: templates/js/translated/stock.js:1537
msgid "In production"
msgstr "En production"
-#: templates/js/translated/stock.js:1531
+#: templates/js/translated/stock.js:1541
msgid "Installed in Stock Item"
msgstr "Article en stock installé dans un autre article en stock"
-#: templates/js/translated/stock.js:1539
+#: templates/js/translated/stock.js:1549
msgid "Assigned to Sales Order"
msgstr "Assigné à une commande de vente"
-#: templates/js/translated/stock.js:1545
+#: templates/js/translated/stock.js:1555
msgid "No stock location set"
msgstr "Aucun emplacement de stock défini"
-#: templates/js/translated/stock.js:1712
+#: templates/js/translated/stock.js:1722
msgid "Stock item is in production"
msgstr "L'article de stock est en production"
-#: templates/js/translated/stock.js:1717
+#: templates/js/translated/stock.js:1727
msgid "Stock item assigned to sales order"
msgstr "L'article en stock a été assigné à une commande de vente"
-#: templates/js/translated/stock.js:1720
+#: templates/js/translated/stock.js:1730
msgid "Stock item assigned to customer"
msgstr "L'article en stock a été assigné à un client"
-#: templates/js/translated/stock.js:1723
+#: templates/js/translated/stock.js:1733
msgid "Serialized stock item has been allocated"
msgstr "L'article de stock sérialisé a été alloué"
-#: templates/js/translated/stock.js:1725
+#: templates/js/translated/stock.js:1735
msgid "Stock item has been fully allocated"
msgstr "L'article de stock a été complètement alloué"
-#: templates/js/translated/stock.js:1727
+#: templates/js/translated/stock.js:1737
msgid "Stock item has been partially allocated"
msgstr "L'article de stock a été partiellement alloué"
-#: templates/js/translated/stock.js:1730
+#: templates/js/translated/stock.js:1740
msgid "Stock item has been installed in another item"
msgstr "L'article en stock a été installé dans un autre article"
-#: templates/js/translated/stock.js:1734
+#: templates/js/translated/stock.js:1744
msgid "Stock item has expired"
msgstr "L'article en stock a expiré"
-#: templates/js/translated/stock.js:1736
+#: templates/js/translated/stock.js:1746
msgid "Stock item will expire soon"
msgstr "L'article en stock va bientôt expirer"
-#: templates/js/translated/stock.js:1743
+#: templates/js/translated/stock.js:1753
msgid "Stock item has been rejected"
msgstr "L'article de stock a été rejeté"
-#: templates/js/translated/stock.js:1745
+#: templates/js/translated/stock.js:1755
msgid "Stock item is lost"
msgstr "L'article de stock est perdu"
-#: templates/js/translated/stock.js:1747
+#: templates/js/translated/stock.js:1757
msgid "Stock item is destroyed"
msgstr "L'article de stock est détruit"
-#: templates/js/translated/stock.js:1751
+#: templates/js/translated/stock.js:1761
#: templates/js/translated/table_filters.js:188
msgid "Depleted"
msgstr "Epuisé"
-#: templates/js/translated/stock.js:1802
+#: templates/js/translated/stock.js:1812
msgid "Stocktake"
msgstr "Prise d'inventaire"
-#: templates/js/translated/stock.js:1884
+#: templates/js/translated/stock.js:1894
msgid "Supplier part not specified"
msgstr "Pièce de fournisseur non précisée"
-#: templates/js/translated/stock.js:1922
+#: templates/js/translated/stock.js:1932
msgid "No stock items matching query"
msgstr "Aucun article de stock ne correspond à la requête"
-#: templates/js/translated/stock.js:2095
+#: templates/js/translated/stock.js:2105
msgid "Set Stock Status"
msgstr "Définir l'état du stock"
-#: templates/js/translated/stock.js:2109
+#: templates/js/translated/stock.js:2119
msgid "Select Status Code"
msgstr "Sélectionner le code de statut"
-#: templates/js/translated/stock.js:2110
+#: templates/js/translated/stock.js:2120
msgid "Status code must be selected"
msgstr "Le code de statut doit être sélectionné"
-#: templates/js/translated/stock.js:2365
+#: templates/js/translated/stock.js:2375
msgid "Details"
msgstr "Détails"
-#: templates/js/translated/stock.js:2381
+#: templates/js/translated/stock.js:2391
msgid "Part information unavailable"
msgstr ""
-#: templates/js/translated/stock.js:2403
+#: templates/js/translated/stock.js:2413
msgid "Location no longer exists"
msgstr "L'emplacement n'existe plus"
-#: templates/js/translated/stock.js:2422
+#: templates/js/translated/stock.js:2432
msgid "Purchase order no longer exists"
msgstr "La commande d'achat n'existe plus"
-#: templates/js/translated/stock.js:2441
+#: templates/js/translated/stock.js:2451
msgid "Customer no longer exists"
msgstr "Le client n'existe plus"
-#: templates/js/translated/stock.js:2459
+#: templates/js/translated/stock.js:2469
msgid "Stock item no longer exists"
msgstr "L'article de stock n'existe plus"
-#: templates/js/translated/stock.js:2482
+#: templates/js/translated/stock.js:2492
msgid "Added"
msgstr "Ajouté"
-#: templates/js/translated/stock.js:2490
+#: templates/js/translated/stock.js:2500
msgid "Removed"
msgstr "Supprimé"
-#: templates/js/translated/stock.js:2566
+#: templates/js/translated/stock.js:2576
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:2617 templates/js/translated/stock.js:2653
+#: templates/js/translated/stock.js:2627 templates/js/translated/stock.js:2663
msgid "Uninstall Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:2666
+#: templates/js/translated/stock.js:2676
msgid "Select stock item to uninstall"
msgstr ""
-#: templates/js/translated/stock.js:2687
+#: templates/js/translated/stock.js:2697
msgid "Install another stock item into this item"
msgstr ""
-#: templates/js/translated/stock.js:2688
+#: templates/js/translated/stock.js:2698
msgid "Stock items can only be installed if they meet the following criteria"
msgstr ""
-#: templates/js/translated/stock.js:2690
+#: templates/js/translated/stock.js:2700
msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:2691
+#: templates/js/translated/stock.js:2701
msgid "The Stock Item is currently available in stock"
msgstr ""
-#: templates/js/translated/stock.js:2692
+#: templates/js/translated/stock.js:2702
msgid "The Stock Item is not already installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:2693
+#: templates/js/translated/stock.js:2703
msgid "The Stock Item is tracked by either a batch code or serial number"
msgstr ""
-#: templates/js/translated/stock.js:2706
+#: templates/js/translated/stock.js:2716
msgid "Select part to install"
msgstr ""
diff --git a/InvenTree/locale/he/LC_MESSAGES/django.po b/InvenTree/locale/he/LC_MESSAGES/django.po
index ca5f4aa6db..0307c0ed93 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: 2022-06-05 14:26+0000\n"
-"PO-Revision-Date: 2022-06-05 14:34\n"
+"POT-Creation-Date: 2022-06-06 22:59+0000\n"
+"PO-Revision-Date: 2022-06-07 14:34\n"
"Last-Translator: \n"
"Language-Team: Hebrew\n"
"Language: he_IL\n"
@@ -17,7 +17,7 @@ msgstr ""
"X-Crowdin-File: /[inventree.InvenTree] l10/InvenTree/locale/en/LC_MESSAGES/django.po\n"
"X-Crowdin-File-ID: 154\n"
-#: InvenTree/api.py:46
+#: InvenTree/api.py:49
msgid "API endpoint not found"
msgstr ""
@@ -29,275 +29,273 @@ msgstr ""
msgid "Enter date"
msgstr "הזן תאריך סיום"
-#: InvenTree/forms.py:117 templates/account/email_confirm.html:20
-#: templates/js/translated/forms.js:630
-msgid "Confirm"
-msgstr "אשר"
-
-#: InvenTree/forms.py:134
+#: InvenTree/forms.py:117
msgid "Confirm delete"
msgstr "אשר מחיקה"
-#: InvenTree/forms.py:135
+#: InvenTree/forms.py:118
msgid "Confirm item deletion"
msgstr "אשר מחיקה"
-#: InvenTree/forms.py:167
+#: InvenTree/forms.py:150
msgid "Enter password"
msgstr "הכנס סיסמה"
-#: InvenTree/forms.py:168
+#: InvenTree/forms.py:151
msgid "Enter new password"
msgstr "הכנס סיסמה חדשה"
-#: InvenTree/forms.py:175
+#: InvenTree/forms.py:158
msgid "Confirm password"
msgstr "אישור סיסמה"
-#: InvenTree/forms.py:176
+#: InvenTree/forms.py:159
msgid "Confirm new password"
msgstr "אשר סיסמה חדשה"
-#: InvenTree/forms.py:213
-msgid "Select Category"
-msgstr "בחר קטגוריה"
-
-#: InvenTree/forms.py:234
+#: InvenTree/forms.py:184
msgid "Email (again)"
msgstr "אימייל (שנית)"
-#: InvenTree/forms.py:238
+#: InvenTree/forms.py:188
msgid "Email address confirmation"
msgstr "אישור כתובת אימייל"
-#: InvenTree/forms.py:259
+#: InvenTree/forms.py:209
msgid "You must type the same email each time."
msgstr "חובה לרשום את אותו אימייל בכל פעם."
-#: InvenTree/helpers.py:402
+#: InvenTree/helpers.py:404
#, python-brace-format
msgid "Duplicate serial: {sn}"
msgstr ""
-#: InvenTree/helpers.py:409 order/models.py:365 order/models.py:517
+#: InvenTree/helpers.py:411 order/models.py:370 order/models.py:522
msgid "Invalid quantity provided"
msgstr ""
-#: InvenTree/helpers.py:412
+#: InvenTree/helpers.py:414
msgid "Empty serial number string"
msgstr ""
-#: InvenTree/helpers.py:444
+#: InvenTree/helpers.py:446
#, python-brace-format
msgid "Invalid group range: {g}"
msgstr ""
-#: InvenTree/helpers.py:447
+#: InvenTree/helpers.py:449
#, python-brace-format
msgid "Invalid group: {g}"
msgstr "קבוצה שגויה: {g}"
-#: InvenTree/helpers.py:475
+#: InvenTree/helpers.py:477
#, python-brace-format
msgid "Invalid group sequence: {g}"
msgstr ""
-#: InvenTree/helpers.py:483
+#: InvenTree/helpers.py:485
#, python-brace-format
msgid "Invalid/no group {group}"
msgstr "קבוצה שגויה / לא נמצאה {group}"
-#: InvenTree/helpers.py:489
+#: InvenTree/helpers.py:491
msgid "No serial numbers found"
msgstr "מספרים סידוריים לא נמצאו"
-#: InvenTree/helpers.py:493
+#: InvenTree/helpers.py:495
#, python-brace-format
msgid "Number of unique serial numbers ({s}) must match quantity ({q})"
msgstr ""
-#: InvenTree/models.py:174
+#: InvenTree/models.py:178
msgid "Missing file"
msgstr "קובץ חסר"
-#: InvenTree/models.py:175
+#: InvenTree/models.py:179
msgid "Missing external link"
msgstr "חסר קישור חיצוני"
-#: InvenTree/models.py:187 stock/models.py:2087
-#: templates/js/translated/attachment.js:101
-#: templates/js/translated/attachment.js:198
+#: InvenTree/models.py:191 stock/models.py:2091
+#: templates/js/translated/attachment.js:103
+#: templates/js/translated/attachment.js:194
msgid "Attachment"
msgstr "קובץ מצורף"
-#: InvenTree/models.py:188
+#: InvenTree/models.py:192
msgid "Select file to attach"
msgstr "בחר קובץ לצירוף"
-#: InvenTree/models.py:194 company/models.py:123 company/models.py:272
-#: company/models.py:506 order/models.py:135 order/models.py:1235
+#: InvenTree/models.py:198 company/models.py:123 company/models.py:272
+#: company/models.py:506 order/models.py:136 order/models.py:1251
#: part/models.py:795
#: report/templates/report/inventree_build_order_base.html:165
-#: templates/js/translated/company.js:655
-#: templates/js/translated/company.js:946 templates/js/translated/order.js:2676
-#: templates/js/translated/part.js:1441
+#: templates/js/translated/company.js:640
+#: templates/js/translated/company.js:931 templates/js/translated/order.js:2676
+#: templates/js/translated/part.js:1485
msgid "Link"
msgstr "קישור"
-#: InvenTree/models.py:195 build/models.py:320 part/models.py:796
+#: InvenTree/models.py:199 build/models.py:320 part/models.py:796
#: stock/models.py:642
msgid "Link to external URL"
msgstr "קישור חיצוני"
-#: InvenTree/models.py:198 templates/js/translated/attachment.js:102
-#: templates/js/translated/attachment.js:242
+#: InvenTree/models.py:202 templates/js/translated/attachment.js:104
+#: templates/js/translated/attachment.js:238
msgid "Comment"
msgstr "הערה"
-#: InvenTree/models.py:198
+#: InvenTree/models.py:202
msgid "File comment"
msgstr "הערת קובץ"
-#: InvenTree/models.py:204 InvenTree/models.py:205 common/models.py:1499
-#: common/models.py:1500 common/models.py:1728 common/models.py:1729
-#: common/models.py:1991 common/models.py:1992 part/models.py:2153
-#: part/models.py:2173 plugin/models.py:238 plugin/models.py:239
+#: InvenTree/models.py:208 InvenTree/models.py:209 common/models.py:1506
+#: common/models.py:1507 common/models.py:1735 common/models.py:1736
+#: common/models.py:1998 common/models.py:1999 part/models.py:2141
+#: part/models.py:2161 plugin/models.py:238 plugin/models.py:239
#: report/templates/report/inventree_test_report_base.html:96
-#: templates/js/translated/stock.js:2513
+#: templates/js/translated/stock.js:2523
msgid "User"
msgstr "משתמש"
-#: InvenTree/models.py:208
+#: InvenTree/models.py:212
msgid "upload date"
msgstr "תאריך העלאה"
-#: InvenTree/models.py:230
+#: InvenTree/models.py:234
msgid "Filename must not be empty"
msgstr "חובה למלא שם קובץ"
-#: InvenTree/models.py:253
+#: InvenTree/models.py:257
msgid "Invalid attachment directory"
msgstr "תיקיית קובץ שגויה"
-#: InvenTree/models.py:263
+#: InvenTree/models.py:267
#, python-brace-format
msgid "Filename contains illegal character '{c}'"
msgstr "שם הקובץ מכיל תו '{c}' שאינו חוקי"
-#: InvenTree/models.py:266
+#: InvenTree/models.py:270
msgid "Filename missing extension"
msgstr ""
-#: InvenTree/models.py:273
+#: InvenTree/models.py:277
msgid "Attachment with this filename already exists"
msgstr ""
-#: InvenTree/models.py:280
+#: InvenTree/models.py:284
msgid "Error renaming file"
msgstr "שגיאה בשינוי שם פריט"
-#: InvenTree/models.py:314
+#: InvenTree/models.py:318
msgid "Invalid choice"
msgstr "בחירה שגויה"
-#: InvenTree/models.py:333 InvenTree/models.py:334 common/models.py:1714
+#: InvenTree/models.py:337 InvenTree/models.py:338 common/models.py:1721
#: company/models.py:354 label/models.py:101 part/models.py:739
-#: part/models.py:2331 plugin/models.py:93 report/models.py:151
+#: part/models.py:2319 plugin/models.py:93 report/models.py:151
#: templates/InvenTree/notifications/notifications.html:84
#: templates/InvenTree/settings/mixins/urls.html:13
#: templates/InvenTree/settings/plugin.html:49
#: templates/InvenTree/settings/plugin.html:132
#: templates/InvenTree/settings/plugin_settings.html:23
#: templates/InvenTree/settings/settings.html:346
-#: templates/js/translated/company.js:539
-#: templates/js/translated/company.js:757 templates/js/translated/part.js:615
-#: templates/js/translated/part.js:767 templates/js/translated/part.js:1736
-#: templates/js/translated/stock.js:2283
+#: templates/js/translated/company.js:530
+#: templates/js/translated/company.js:742 templates/js/translated/part.js:659
+#: templates/js/translated/part.js:811 templates/js/translated/part.js:1832
+#: templates/js/translated/stock.js:2293
msgid "Name"
msgstr "שם"
-#: InvenTree/models.py:340 build/models.py:197
+#: InvenTree/models.py:344 build/models.py:197
#: build/templates/build/detail.html:24 company/models.py:278
#: company/models.py:512 company/templates/company/company_base.html:71
#: company/templates/company/manufacturer_part.html:75
#: company/templates/company/supplier_part.html:73 label/models.py:108
-#: order/models.py:133 part/models.py:762 part/templates/part/category.html:74
-#: part/templates/part/part_base.html:167
-#: part/templates/part/set_category.html:14 report/models.py:164
+#: order/models.py:134 part/models.py:762 part/templates/part/category.html:74
+#: part/templates/part/part_base.html:167 report/models.py:164
#: report/models.py:509 report/models.py:550
#: report/templates/report/inventree_build_order_base.html:118
#: stock/templates/stock/location.html:103
#: templates/InvenTree/settings/plugin_settings.html:33
-#: templates/js/translated/bom.js:553 templates/js/translated/bom.js:851
-#: templates/js/translated/build.js:2476 templates/js/translated/company.js:401
-#: templates/js/translated/company.js:666
-#: templates/js/translated/company.js:957 templates/js/translated/order.js:1656
+#: templates/js/translated/bom.js:553 templates/js/translated/bom.js:845
+#: templates/js/translated/build.js:2476 templates/js/translated/company.js:395
+#: templates/js/translated/company.js:651
+#: templates/js/translated/company.js:942 templates/js/translated/order.js:1656
#: templates/js/translated/order.js:1888 templates/js/translated/order.js:2476
-#: templates/js/translated/part.js:674 templates/js/translated/part.js:1082
-#: templates/js/translated/part.js:1355 templates/js/translated/part.js:1755
-#: templates/js/translated/part.js:1824 templates/js/translated/stock.js:1676
-#: templates/js/translated/stock.js:2295 templates/js/translated/stock.js:2350
+#: templates/js/translated/part.js:718 templates/js/translated/part.js:1126
+#: templates/js/translated/part.js:1399 templates/js/translated/part.js:1851
+#: templates/js/translated/part.js:1920 templates/js/translated/stock.js:1686
+#: templates/js/translated/stock.js:2305 templates/js/translated/stock.js:2360
msgid "Description"
msgstr "תיאור"
-#: InvenTree/models.py:341
+#: InvenTree/models.py:345
msgid "Description (optional)"
msgstr "תיאור (לא חובה)"
-#: InvenTree/models.py:349
+#: InvenTree/models.py:353
msgid "parent"
msgstr "מקור"
-#: InvenTree/serializers.py:52 part/models.py:2652
+#: InvenTree/models.py:466
+msgid "Server Error"
+msgstr ""
+
+#: InvenTree/models.py:467
+msgid "An error has been logged by the server."
+msgstr ""
+
+#: InvenTree/serializers.py:52 part/models.py:2640
msgid "Must be a valid number"
msgstr "המספר חייב להיות תקין"
-#: InvenTree/serializers.py:271
+#: InvenTree/serializers.py:263
msgid "Filename"
msgstr "שם קובץ"
-#: InvenTree/serializers.py:306
+#: InvenTree/serializers.py:298
msgid "Invalid value"
msgstr ""
-#: InvenTree/serializers.py:328
+#: InvenTree/serializers.py:320
msgid "Data File"
msgstr ""
-#: InvenTree/serializers.py:329
+#: InvenTree/serializers.py:321
msgid "Select data file for upload"
msgstr ""
-#: InvenTree/serializers.py:350
+#: InvenTree/serializers.py:342
msgid "Unsupported file type"
msgstr ""
-#: InvenTree/serializers.py:356
+#: InvenTree/serializers.py:348
msgid "File is too large"
msgstr ""
-#: InvenTree/serializers.py:377
+#: InvenTree/serializers.py:369
msgid "No columns found in file"
msgstr ""
-#: InvenTree/serializers.py:380
+#: InvenTree/serializers.py:372
msgid "No data rows found in file"
msgstr ""
-#: InvenTree/serializers.py:503
+#: InvenTree/serializers.py:495
msgid "No data rows provided"
msgstr ""
-#: InvenTree/serializers.py:506
+#: InvenTree/serializers.py:498
msgid "No data columns supplied"
msgstr ""
-#: InvenTree/serializers.py:583
+#: InvenTree/serializers.py:575
#, python-brace-format
msgid "Missing required column: '{name}'"
msgstr ""
-#: InvenTree/serializers.py:592
+#: InvenTree/serializers.py:584
#, python-brace-format
msgid "Duplicate column: '{col}'"
msgstr ""
@@ -440,7 +438,7 @@ msgstr "אבד"
msgid "Returned"
msgstr "הוחזר"
-#: InvenTree/status_codes.py:141 order/models.py:1114
+#: InvenTree/status_codes.py:141 order/models.py:1130
#: templates/js/translated/order.js:3264 templates/js/translated/order.js:3607
msgid "Shipped"
msgstr "נשלח"
@@ -525,7 +523,7 @@ msgstr ""
msgid "Split child item"
msgstr ""
-#: InvenTree/status_codes.py:281 templates/js/translated/stock.js:2020
+#: InvenTree/status_codes.py:281 templates/js/translated/stock.js:2030
msgid "Merged stock items"
msgstr ""
@@ -597,27 +595,27 @@ msgstr ""
msgid "Invalid value for overage"
msgstr ""
-#: InvenTree/views.py:522
+#: InvenTree/views.py:521
msgid "Delete Item"
msgstr "מחק פריט"
-#: InvenTree/views.py:571
+#: InvenTree/views.py:570
msgid "Check box to confirm item deletion"
msgstr ""
-#: InvenTree/views.py:586 templates/InvenTree/settings/user.html:22
+#: InvenTree/views.py:585 templates/InvenTree/settings/user.html:22
msgid "Edit User Information"
msgstr "ערוך מידע אודות המשתמש"
-#: InvenTree/views.py:598 templates/InvenTree/settings/user.html:19
+#: InvenTree/views.py:597 templates/InvenTree/settings/user.html:19
msgid "Set Password"
msgstr "הגדר סיסמא"
-#: InvenTree/views.py:618
+#: InvenTree/views.py:617
msgid "Password fields must match"
msgstr "הסיסמאות מוכרחות להיות תואמות"
-#: InvenTree/views.py:842 templates/navbar.html:152
+#: InvenTree/views.py:807 templates/navbar.html:152
msgid "System Information"
msgstr "מידע אודות המערכת"
@@ -628,6 +626,7 @@ msgstr ""
#: build/models.py:131 build/templates/build/build_base.html:9
#: build/templates/build/build_base.html:27
#: report/templates/report/inventree_build_order_base.html:106
+#: templates/email/overdue_build_order.html:15
#: templates/js/translated/build.js:727
msgid "Build Order"
msgstr ""
@@ -646,12 +645,12 @@ msgstr ""
msgid "Build Order Reference"
msgstr ""
-#: build/models.py:189 order/models.py:288 order/models.py:638
-#: order/models.py:916 part/models.py:2570
+#: build/models.py:189 order/models.py:293 order/models.py:654
+#: order/models.py:932 part/models.py:2558
#: part/templates/part/upload_bom.html:54
#: report/templates/report/inventree_po_report.html:91
#: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:688 templates/js/translated/bom.js:858
+#: templates/js/translated/bom.js:690 templates/js/translated/bom.js:852
#: templates/js/translated/build.js:1777 templates/js/translated/order.js:1919
#: templates/js/translated/order.js:2120 templates/js/translated/order.js:3448
#: templates/js/translated/order.js:3959
@@ -673,13 +672,12 @@ msgstr ""
#: build/models.py:215 build/templates/build/build_base.html:77
#: build/templates/build/detail.html:29 company/models.py:647
-#: order/models.py:1012 order/models.py:1103 part/models.py:336
-#: part/models.py:2099 part/models.py:2114 part/models.py:2133
-#: part/models.py:2151 part/models.py:2250 part/models.py:2370
-#: part/models.py:2460 part/models.py:2545 part/models.py:2821
-#: part/serializers.py:793 part/templates/part/part_app_base.html:8
+#: order/models.py:1028 order/models.py:1119 part/models.py:336
+#: part/models.py:2087 part/models.py:2102 part/models.py:2121
+#: part/models.py:2139 part/models.py:2238 part/models.py:2358
+#: part/models.py:2448 part/models.py:2533 part/models.py:2809
+#: part/serializers.py:795 part/templates/part/part_app_base.html:8
#: part/templates/part/part_pricing.html:12
-#: part/templates/part/set_category.html:13
#: part/templates/part/upload_bom.html:52
#: report/templates/report/inventree_build_order_base.html:110
#: report/templates/report/inventree_po_report.html:89
@@ -687,22 +685,23 @@ msgstr ""
#: templates/InvenTree/search.html:80
#: templates/email/build_order_required_stock.html:17
#: templates/email/low_stock_notification.html:16
+#: templates/email/overdue_build_order.html:16
#: templates/js/translated/barcode.js:435 templates/js/translated/bom.js:552
-#: templates/js/translated/bom.js:687 templates/js/translated/bom.js:805
+#: templates/js/translated/bom.js:689 templates/js/translated/bom.js:799
#: templates/js/translated/build.js:1153 templates/js/translated/build.js:1647
#: templates/js/translated/build.js:2083 templates/js/translated/build.js:2481
-#: templates/js/translated/company.js:252
-#: templates/js/translated/company.js:486
-#: templates/js/translated/company.js:607
-#: templates/js/translated/company.js:866 templates/js/translated/order.js:100
+#: templates/js/translated/company.js:253
+#: templates/js/translated/company.js:482
+#: templates/js/translated/company.js:592
+#: templates/js/translated/company.js:851 templates/js/translated/order.js:100
#: templates/js/translated/order.js:883 templates/js/translated/order.js:1315
#: templates/js/translated/order.js:1873 templates/js/translated/order.js:2819
#: templates/js/translated/order.js:3217 templates/js/translated/order.js:3432
-#: templates/js/translated/part.js:1067 templates/js/translated/part.js:1137
-#: templates/js/translated/part.js:1333 templates/js/translated/stock.js:531
-#: templates/js/translated/stock.js:696 templates/js/translated/stock.js:903
-#: templates/js/translated/stock.js:1633 templates/js/translated/stock.js:2376
-#: templates/js/translated/stock.js:2571 templates/js/translated/stock.js:2705
+#: templates/js/translated/part.js:1111 templates/js/translated/part.js:1181
+#: templates/js/translated/part.js:1377 templates/js/translated/stock.js:530
+#: templates/js/translated/stock.js:695 templates/js/translated/stock.js:902
+#: templates/js/translated/stock.js:1643 templates/js/translated/stock.js:2386
+#: templates/js/translated/stock.js:2581 templates/js/translated/stock.js:2715
msgid "Part"
msgstr "רכיב"
@@ -768,12 +767,12 @@ msgstr ""
msgid "Batch code for this build output"
msgstr ""
-#: build/models.py:282 order/models.py:137 part/models.py:932
+#: build/models.py:282 order/models.py:138 part/models.py:932
#: part/templates/part/part_base.html:305 templates/js/translated/order.js:2489
msgid "Creation Date"
msgstr ""
-#: build/models.py:286 order/models.py:660
+#: build/models.py:286 order/models.py:676
msgid "Target completion date"
msgstr ""
@@ -781,7 +780,7 @@ msgstr ""
msgid "Target date for build completion. Build will be overdue after this date."
msgstr ""
-#: build/models.py:290 order/models.py:331
+#: build/models.py:290 order/models.py:336
#: templates/js/translated/build.js:2558
msgid "Completion Date"
msgstr ""
@@ -799,7 +798,7 @@ msgid "User who issued this build order"
msgstr ""
#: build/models.py:313 build/templates/build/build_base.html:190
-#: build/templates/build/detail.html:115 order/models.py:151
+#: build/templates/build/detail.html:115 order/models.py:152
#: order/templates/order/order_base.html:176
#: order/templates/order/sales_order_base.html:183 part/models.py:936
#: report/templates/report/inventree_build_order_base.html:159
@@ -822,20 +821,20 @@ msgstr ""
#: build/models.py:324 build/serializers.py:374
#: build/templates/build/sidebar.html:21 company/models.py:134
#: company/models.py:519 company/templates/company/sidebar.html:25
-#: order/models.py:155 order/models.py:918 order/models.py:1213
+#: order/models.py:156 order/models.py:934 order/models.py:1229
#: order/templates/order/po_sidebar.html:11
#: order/templates/order/so_sidebar.html:17 part/models.py:921
#: part/templates/part/part_sidebar.html:59
#: report/templates/report/inventree_build_order_base.html:173
-#: stock/models.py:713 stock/models.py:1985 stock/models.py:2093
+#: stock/models.py:713 stock/models.py:1989 stock/models.py:2097
#: stock/serializers.py:315 stock/serializers.py:444 stock/serializers.py:486
-#: stock/serializers.py:772 stock/serializers.py:871 stock/serializers.py:1003
+#: stock/serializers.py:759 stock/serializers.py:858 stock/serializers.py:990
#: stock/templates/stock/stock_sidebar.html:25
-#: templates/js/translated/barcode.js:100 templates/js/translated/bom.js:1044
-#: templates/js/translated/company.js:962 templates/js/translated/order.js:2040
+#: templates/js/translated/barcode.js:100 templates/js/translated/bom.js:1038
+#: templates/js/translated/company.js:947 templates/js/translated/order.js:2040
#: templates/js/translated/order.js:2191 templates/js/translated/order.js:2687
#: templates/js/translated/order.js:3632 templates/js/translated/order.js:4030
-#: templates/js/translated/stock.js:1307 templates/js/translated/stock.js:1916
+#: templates/js/translated/stock.js:1317 templates/js/translated/stock.js:1926
msgid "Notes"
msgstr ""
@@ -855,44 +854,44 @@ msgstr ""
msgid "Build output does not match Build Order"
msgstr ""
-#: build/models.py:1108
+#: build/models.py:1111
msgid "Build item must specify a build output, as master part is marked as trackable"
msgstr ""
-#: build/models.py:1117
+#: build/models.py:1120
#, python-brace-format
msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})"
msgstr ""
-#: build/models.py:1127
+#: build/models.py:1130
msgid "Stock item is over-allocated"
msgstr ""
-#: build/models.py:1133 order/models.py:1372
+#: build/models.py:1136 order/models.py:1388
msgid "Allocation quantity must be greater than zero"
msgstr ""
-#: build/models.py:1139
+#: build/models.py:1142
msgid "Quantity must be 1 for serialized stock"
msgstr ""
-#: build/models.py:1196
+#: build/models.py:1199
msgid "Selected stock item not found in BOM"
msgstr ""
-#: build/models.py:1265 stock/templates/stock/item_base.html:177
+#: build/models.py:1268 stock/templates/stock/item_base.html:177
#: templates/InvenTree/search.html:137 templates/js/translated/build.js:2454
#: templates/navbar.html:38
msgid "Build"
msgstr ""
-#: build/models.py:1266
+#: build/models.py:1269
msgid "Build to allocate parts"
msgstr ""
-#: build/models.py:1282 build/serializers.py:603 order/serializers.py:994
-#: order/serializers.py:1015 stock/serializers.py:382 stock/serializers.py:703
-#: stock/serializers.py:829 stock/templates/stock/item_base.html:10
+#: build/models.py:1285 build/serializers.py:603 order/serializers.py:996
+#: order/serializers.py:1017 stock/serializers.py:382 stock/serializers.py:690
+#: stock/serializers.py:816 stock/templates/stock/item_base.html:10
#: stock/templates/stock/item_base.html:23
#: stock/templates/stock/item_base.html:199
#: templates/js/translated/build.js:738 templates/js/translated/build.js:743
@@ -900,22 +899,22 @@ msgstr ""
#: templates/js/translated/order.js:101 templates/js/translated/order.js:2820
#: templates/js/translated/order.js:3124 templates/js/translated/order.js:3129
#: templates/js/translated/order.js:3224 templates/js/translated/order.js:3314
-#: templates/js/translated/stock.js:532 templates/js/translated/stock.js:697
-#: templates/js/translated/stock.js:2449
+#: templates/js/translated/stock.js:531 templates/js/translated/stock.js:696
+#: templates/js/translated/stock.js:2459
msgid "Stock Item"
msgstr ""
-#: build/models.py:1283
+#: build/models.py:1286
msgid "Source stock item"
msgstr ""
-#: build/models.py:1295 build/serializers.py:183
+#: build/models.py:1298 build/serializers.py:183
#: build/templates/build/build_base.html:82
-#: build/templates/build/detail.html:34 common/models.py:1536
+#: build/templates/build/detail.html:34 common/models.py:1543
#: company/forms.py:36 company/templates/company/supplier_part.html:258
-#: order/models.py:909 order/models.py:1412 order/serializers.py:1134
-#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:68
-#: part/forms.py:83 part/forms.py:98 part/models.py:2561
+#: order/models.py:925 order/models.py:1428 order/serializers.py:1136
+#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:59
+#: part/forms.py:74 part/forms.py:89 part/models.py:2549
#: part/templates/part/detail.html:935 part/templates/part/detail.html:1021
#: part/templates/part/part_pricing.html:16
#: part/templates/part/upload_bom.html:53
@@ -926,8 +925,8 @@ msgstr ""
#: report/templates/report/inventree_test_report_base.html:139
#: stock/serializers.py:279 stock/templates/stock/item_base.html:292
#: stock/templates/stock/item_base.html:300
-#: templates/js/translated/barcode.js:437 templates/js/translated/bom.js:689
-#: templates/js/translated/bom.js:866 templates/js/translated/build.js:422
+#: templates/js/translated/barcode.js:437 templates/js/translated/bom.js:691
+#: templates/js/translated/bom.js:860 templates/js/translated/build.js:422
#: templates/js/translated/build.js:574 templates/js/translated/build.js:765
#: templates/js/translated/build.js:1175 templates/js/translated/build.js:1673
#: templates/js/translated/build.js:2086
@@ -937,23 +936,23 @@ msgstr ""
#: templates/js/translated/order.js:2821 templates/js/translated/order.js:3143
#: templates/js/translated/order.js:3231 templates/js/translated/order.js:3320
#: templates/js/translated/order.js:3454 templates/js/translated/order.js:3965
-#: templates/js/translated/part.js:967 templates/js/translated/part.js:1969
-#: templates/js/translated/part.js:2200 templates/js/translated/part.js:2234
-#: templates/js/translated/part.js:2312 templates/js/translated/stock.js:403
-#: templates/js/translated/stock.js:557 templates/js/translated/stock.js:727
-#: templates/js/translated/stock.js:2498 templates/js/translated/stock.js:2583
+#: templates/js/translated/part.js:1011 templates/js/translated/part.js:2065
+#: templates/js/translated/part.js:2296 templates/js/translated/part.js:2330
+#: templates/js/translated/part.js:2408 templates/js/translated/stock.js:402
+#: templates/js/translated/stock.js:556 templates/js/translated/stock.js:726
+#: templates/js/translated/stock.js:2508 templates/js/translated/stock.js:2593
msgid "Quantity"
msgstr "כמות"
-#: build/models.py:1296
+#: build/models.py:1299
msgid "Stock quantity to allocate to build"
msgstr ""
-#: build/models.py:1304
+#: build/models.py:1307
msgid "Install into"
msgstr ""
-#: build/models.py:1305
+#: build/models.py:1308
msgid "Destination stock item"
msgstr ""
@@ -982,9 +981,9 @@ msgstr ""
msgid "Enter quantity for build output"
msgstr ""
-#: build/serializers.py:198 build/serializers.py:623 order/models.py:363
-#: order/serializers.py:280 order/serializers.py:435 part/serializers.py:512
-#: part/serializers.py:956 stock/models.py:470 stock/models.py:1239
+#: build/serializers.py:198 build/serializers.py:623 order/models.py:368
+#: order/serializers.py:280 order/serializers.py:435 part/serializers.py:514
+#: part/serializers.py:958 stock/models.py:470 stock/models.py:1239
#: stock/serializers.py:288
msgid "Quantity must be greater than zero"
msgstr ""
@@ -997,9 +996,9 @@ msgstr ""
msgid "Integer quantity required, as the bill of materials contains trackable parts"
msgstr ""
-#: build/serializers.py:222 order/serializers.py:448 order/serializers.py:1138
+#: build/serializers.py:222 order/serializers.py:448 order/serializers.py:1140
#: stock/serializers.py:297 templates/js/translated/order.js:1186
-#: templates/js/translated/stock.js:238 templates/js/translated/stock.js:404
+#: templates/js/translated/stock.js:237 templates/js/translated/stock.js:403
msgid "Serial Numbers"
msgstr "מספרים סידוריים"
@@ -1015,7 +1014,7 @@ msgstr ""
msgid "Automatically allocate required items with matching serial numbers"
msgstr ""
-#: build/serializers.py:268 stock/api.py:552
+#: build/serializers.py:268 stock/api.py:553
msgid "The following serial numbers already exist"
msgstr ""
@@ -1025,16 +1024,16 @@ msgstr ""
#: build/serializers.py:356 order/serializers.py:421 order/serializers.py:525
#: stock/serializers.py:308 stock/serializers.py:439 stock/serializers.py:481
-#: stock/serializers.py:864 stock/serializers.py:1097
+#: stock/serializers.py:851 stock/serializers.py:1084
#: stock/templates/stock/item_base.html:390
#: templates/js/translated/barcode.js:436
#: templates/js/translated/barcode.js:618 templates/js/translated/build.js:750
#: templates/js/translated/build.js:1685 templates/js/translated/order.js:1213
#: templates/js/translated/order.js:3136 templates/js/translated/order.js:3239
#: templates/js/translated/order.js:3247 templates/js/translated/order.js:3328
-#: templates/js/translated/part.js:180 templates/js/translated/stock.js:533
-#: templates/js/translated/stock.js:698 templates/js/translated/stock.js:905
-#: templates/js/translated/stock.js:1787 templates/js/translated/stock.js:2390
+#: templates/js/translated/part.js:180 templates/js/translated/stock.js:532
+#: templates/js/translated/stock.js:697 templates/js/translated/stock.js:904
+#: templates/js/translated/stock.js:1797 templates/js/translated/stock.js:2400
msgid "Location"
msgstr ""
@@ -1043,12 +1042,12 @@ msgid "Location for completed build outputs"
msgstr ""
#: build/serializers.py:363 build/templates/build/build_base.html:142
-#: build/templates/build/detail.html:62 order/models.py:654
+#: build/templates/build/detail.html:62 order/models.py:670
#: order/serializers.py:458 stock/templates/stock/item_base.html:423
#: templates/js/translated/barcode.js:182 templates/js/translated/build.js:2510
#: templates/js/translated/order.js:1320 templates/js/translated/order.js:1660
-#: templates/js/translated/order.js:2481 templates/js/translated/stock.js:1762
-#: templates/js/translated/stock.js:2467 templates/js/translated/stock.js:2599
+#: templates/js/translated/order.js:2481 templates/js/translated/stock.js:1772
+#: templates/js/translated/stock.js:2477 templates/js/translated/stock.js:2609
msgid "Status"
msgstr ""
@@ -1108,8 +1107,8 @@ msgstr ""
msgid "No build outputs have been created for this build order"
msgstr ""
-#: build/serializers.py:535 build/serializers.py:580 part/models.py:2679
-#: part/models.py:2813
+#: build/serializers.py:535 build/serializers.py:580 part/models.py:2667
+#: part/models.py:2801
msgid "BOM Item"
msgstr ""
@@ -1125,11 +1124,11 @@ msgstr ""
msgid "bom_item.part must point to the same part as the build order"
msgstr ""
-#: build/serializers.py:609 stock/serializers.py:716
+#: build/serializers.py:609 stock/serializers.py:703
msgid "Item must be in stock"
msgstr ""
-#: build/serializers.py:667 order/serializers.py:1052
+#: build/serializers.py:667 order/serializers.py:1054
#, python-brace-format
msgid "Available quantity ({q}) exceeded"
msgstr ""
@@ -1146,7 +1145,7 @@ msgstr ""
msgid "This stock item has already been allocated to this build output"
msgstr ""
-#: build/serializers.py:708 order/serializers.py:1298
+#: build/serializers.py:708 order/serializers.py:1300
msgid "Allocation items must be provided"
msgstr ""
@@ -1178,10 +1177,19 @@ msgstr ""
msgid "Allow allocation of substitute parts"
msgstr ""
-#: build/tasks.py:96
+#: build/tasks.py:100
msgid "Stock required for build order"
msgstr ""
+#: build/tasks.py:118
+msgid "Overdue Build Order"
+msgstr ""
+
+#: build/tasks.py:123
+#, python-brace-format
+msgid "Build order {bo} is now overdue"
+msgstr ""
+
#: build/templates/build/build_base.html:39
#: order/templates/order/order_base.html:28
#: order/templates/order/sales_order_base.html:38
@@ -1244,13 +1252,13 @@ msgid "Stock has not been fully allocated to this Build Order"
msgstr ""
#: build/templates/build/build_base.html:151
-#: build/templates/build/detail.html:131 order/models.py:922
+#: build/templates/build/detail.html:131 order/models.py:938
#: order/templates/order/order_base.html:162
#: order/templates/order/sales_order_base.html:164
#: report/templates/report/inventree_build_order_base.html:126
#: templates/js/translated/build.js:2550 templates/js/translated/order.js:1677
#: templates/js/translated/order.js:1987 templates/js/translated/order.js:2497
-#: templates/js/translated/order.js:3517 templates/js/translated/part.js:971
+#: templates/js/translated/order.js:3517 templates/js/translated/part.js:1015
msgid "Target Date"
msgstr ""
@@ -1277,13 +1285,14 @@ msgid "Completed"
msgstr ""
#: build/templates/build/build_base.html:176
-#: build/templates/build/detail.html:94 order/models.py:1100
-#: order/models.py:1185 order/models.py:1320
+#: build/templates/build/detail.html:94 order/models.py:1116
+#: order/models.py:1201 order/models.py:1336
#: order/templates/order/sales_order_base.html:9
#: order/templates/order/sales_order_base.html:28
#: report/templates/report/inventree_build_order_base.html:136
#: report/templates/report/inventree_so_report.html:77
#: stock/templates/stock/item_base.html:370
+#: templates/email/overdue_sales_order.html:15
#: templates/js/translated/order.js:2436
msgid "Sales Order"
msgstr ""
@@ -1319,7 +1328,7 @@ msgstr ""
msgid "Stock can be taken from any available location."
msgstr ""
-#: build/templates/build/detail.html:49 order/models.py:1034
+#: build/templates/build/detail.html:49 order/models.py:1050
#: templates/js/translated/order.js:1321 templates/js/translated/order.js:2029
msgid "Destination"
msgstr ""
@@ -1336,8 +1345,8 @@ msgstr ""
#: stock/templates/stock/item_base.html:170
#: templates/js/translated/build.js:1179
#: templates/js/translated/model_renderers.js:112
-#: templates/js/translated/stock.js:971 templates/js/translated/stock.js:1776
-#: templates/js/translated/stock.js:2606
+#: templates/js/translated/stock.js:970 templates/js/translated/stock.js:1786
+#: templates/js/translated/stock.js:2616
#: templates/js/translated/table_filters.js:151
#: templates/js/translated/table_filters.js:242
msgid "Batch"
@@ -1716,7 +1725,7 @@ msgstr ""
msgid "Copy category parameter templates when creating a part"
msgstr ""
-#: common/models.py:820 part/models.py:2372 report/models.py:157
+#: common/models.py:820 part/models.py:2360 report/models.py:157
#: templates/js/translated/table_filters.js:38
#: templates/js/translated/table_filters.js:444
msgid "Template"
@@ -1726,7 +1735,7 @@ msgstr ""
msgid "Parts are templates by default"
msgstr ""
-#: common/models.py:827 part/models.py:884 templates/js/translated/bom.js:1390
+#: common/models.py:827 part/models.py:884 templates/js/translated/bom.js:1384
#: templates/js/translated/table_filters.js:168
#: templates/js/translated/table_filters.js:460
msgid "Assembly"
@@ -1880,7 +1889,7 @@ msgid "Default page size for PDF reports"
msgstr ""
#: common/models.py:968
-msgid "Test Reports"
+msgid "Enable Test Reports"
msgstr ""
#: common/models.py:969
@@ -1888,568 +1897,576 @@ msgid "Enable generation of test reports"
msgstr ""
#: common/models.py:975
-msgid "Batch Code Template"
+msgid "Attach Test Reports"
msgstr ""
#: common/models.py:976
-msgid "Template for generating default batch codes for stock items"
-msgstr ""
-
-#: common/models.py:981
-msgid "Stock Expiry"
+msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item"
msgstr ""
#: common/models.py:982
-msgid "Enable stock expiry functionality"
+msgid "Batch Code Template"
+msgstr ""
+
+#: common/models.py:983
+msgid "Template for generating default batch codes for stock items"
msgstr ""
#: common/models.py:988
-msgid "Sell Expired Stock"
+msgid "Stock Expiry"
msgstr ""
#: common/models.py:989
-msgid "Allow sale of expired stock"
+msgid "Enable stock expiry functionality"
msgstr ""
#: common/models.py:995
-msgid "Stock Stale Time"
+msgid "Sell Expired Stock"
msgstr ""
#: common/models.py:996
-msgid "Number of days stock items are considered stale before expiring"
+msgid "Allow sale of expired stock"
msgstr ""
-#: common/models.py:998
-msgid "days"
+#: common/models.py:1002
+msgid "Stock Stale Time"
msgstr ""
#: common/models.py:1003
-msgid "Build Expired Stock"
+msgid "Number of days stock items are considered stale before expiring"
msgstr ""
-#: common/models.py:1004
-msgid "Allow building with expired stock"
+#: common/models.py:1005
+msgid "days"
msgstr ""
#: common/models.py:1010
-msgid "Stock Ownership Control"
+msgid "Build Expired Stock"
msgstr ""
#: common/models.py:1011
-msgid "Enable ownership control over stock locations and items"
+msgid "Allow building with expired stock"
msgstr ""
#: common/models.py:1017
-msgid "Build Order Reference Prefix"
+msgid "Stock Ownership Control"
msgstr ""
#: common/models.py:1018
-msgid "Prefix value for build order reference"
-msgstr ""
-
-#: common/models.py:1023
-msgid "Build Order Reference Regex"
+msgid "Enable ownership control over stock locations and items"
msgstr ""
#: common/models.py:1024
+msgid "Build Order Reference Prefix"
+msgstr ""
+
+#: common/models.py:1025
+msgid "Prefix value for build order reference"
+msgstr ""
+
+#: common/models.py:1030
+msgid "Build Order Reference Regex"
+msgstr ""
+
+#: common/models.py:1031
msgid "Regular expression pattern for matching build order reference"
msgstr ""
-#: common/models.py:1028
+#: common/models.py:1035
msgid "Sales Order Reference Prefix"
msgstr ""
-#: common/models.py:1029
+#: common/models.py:1036
msgid "Prefix value for sales order reference"
msgstr ""
-#: common/models.py:1034
+#: common/models.py:1041
msgid "Sales Order Default Shipment"
msgstr ""
-#: common/models.py:1035
+#: common/models.py:1042
msgid "Enable creation of default shipment with sales orders"
msgstr ""
-#: common/models.py:1041
+#: common/models.py:1048
msgid "Purchase Order Reference Prefix"
msgstr ""
-#: common/models.py:1042
+#: common/models.py:1049
msgid "Prefix value for purchase order reference"
msgstr ""
-#: common/models.py:1048
+#: common/models.py:1055
msgid "Enable password forgot"
msgstr ""
-#: common/models.py:1049
+#: common/models.py:1056
msgid "Enable password forgot function on the login pages"
msgstr ""
-#: common/models.py:1055
+#: common/models.py:1062
msgid "Enable registration"
msgstr ""
-#: common/models.py:1056
+#: common/models.py:1063
msgid "Enable self-registration for users on the login pages"
msgstr ""
-#: common/models.py:1062
+#: common/models.py:1069
msgid "Enable SSO"
msgstr ""
-#: common/models.py:1063
+#: common/models.py:1070
msgid "Enable SSO on the login pages"
msgstr ""
-#: common/models.py:1069
+#: common/models.py:1076
msgid "Email required"
msgstr ""
-#: common/models.py:1070
+#: common/models.py:1077
msgid "Require user to supply mail on signup"
msgstr ""
-#: common/models.py:1076
+#: common/models.py:1083
msgid "Auto-fill SSO users"
msgstr ""
-#: common/models.py:1077
+#: common/models.py:1084
msgid "Automatically fill out user-details from SSO account-data"
msgstr ""
-#: common/models.py:1083
+#: common/models.py:1090
msgid "Mail twice"
msgstr ""
-#: common/models.py:1084
+#: common/models.py:1091
msgid "On signup ask users twice for their mail"
msgstr ""
-#: common/models.py:1090
+#: common/models.py:1097
msgid "Password twice"
msgstr ""
-#: common/models.py:1091
+#: common/models.py:1098
msgid "On signup ask users twice for their password"
msgstr ""
-#: common/models.py:1097
+#: common/models.py:1104
msgid "Group on signup"
msgstr ""
-#: common/models.py:1098
+#: common/models.py:1105
msgid "Group to which new users are assigned on registration"
msgstr ""
-#: common/models.py:1104
+#: common/models.py:1111
msgid "Enforce MFA"
msgstr ""
-#: common/models.py:1105
+#: common/models.py:1112
msgid "Users must use multifactor security."
msgstr ""
-#: common/models.py:1111
+#: common/models.py:1118
msgid "Check plugins on startup"
msgstr ""
-#: common/models.py:1112
+#: common/models.py:1119
msgid "Check that all plugins are installed on startup - enable in container enviroments"
msgstr ""
-#: common/models.py:1120
+#: common/models.py:1127
msgid "Enable URL integration"
msgstr ""
-#: common/models.py:1121
+#: common/models.py:1128
msgid "Enable plugins to add URL routes"
msgstr ""
-#: common/models.py:1128
+#: common/models.py:1135
msgid "Enable navigation integration"
msgstr ""
-#: common/models.py:1129
+#: common/models.py:1136
msgid "Enable plugins to integrate into navigation"
msgstr ""
-#: common/models.py:1136
+#: common/models.py:1143
msgid "Enable app integration"
msgstr ""
-#: common/models.py:1137
+#: common/models.py:1144
msgid "Enable plugins to add apps"
msgstr ""
-#: common/models.py:1144
+#: common/models.py:1151
msgid "Enable schedule integration"
msgstr ""
-#: common/models.py:1145
+#: common/models.py:1152
msgid "Enable plugins to run scheduled tasks"
msgstr ""
-#: common/models.py:1152
+#: common/models.py:1159
msgid "Enable event integration"
msgstr ""
-#: common/models.py:1153
+#: common/models.py:1160
msgid "Enable plugins to respond to internal events"
msgstr ""
-#: common/models.py:1170 common/models.py:1492
+#: common/models.py:1177 common/models.py:1499
msgid "Settings key (must be unique - case insensitive"
msgstr ""
-#: common/models.py:1192
+#: common/models.py:1199
msgid "Show subscribed parts"
msgstr ""
-#: common/models.py:1193
+#: common/models.py:1200
msgid "Show subscribed parts on the homepage"
msgstr ""
-#: common/models.py:1199
+#: common/models.py:1206
msgid "Show subscribed categories"
msgstr ""
-#: common/models.py:1200
+#: common/models.py:1207
msgid "Show subscribed part categories on the homepage"
msgstr ""
-#: common/models.py:1206
+#: common/models.py:1213
msgid "Show latest parts"
msgstr ""
-#: common/models.py:1207
+#: common/models.py:1214
msgid "Show latest parts on the homepage"
msgstr ""
-#: common/models.py:1213
+#: common/models.py:1220
msgid "Recent Part Count"
msgstr ""
-#: common/models.py:1214
+#: common/models.py:1221
msgid "Number of recent parts to display on index page"
msgstr ""
-#: common/models.py:1220
+#: common/models.py:1227
msgid "Show unvalidated BOMs"
msgstr ""
-#: common/models.py:1221
+#: common/models.py:1228
msgid "Show BOMs that await validation on the homepage"
msgstr ""
-#: common/models.py:1227
+#: common/models.py:1234
msgid "Show recent stock changes"
msgstr ""
-#: common/models.py:1228
+#: common/models.py:1235
msgid "Show recently changed stock items on the homepage"
msgstr ""
-#: common/models.py:1234
+#: common/models.py:1241
msgid "Recent Stock Count"
msgstr ""
-#: common/models.py:1235
+#: common/models.py:1242
msgid "Number of recent stock items to display on index page"
msgstr ""
-#: common/models.py:1241
+#: common/models.py:1248
msgid "Show low stock"
msgstr ""
-#: common/models.py:1242
+#: common/models.py:1249
msgid "Show low stock items on the homepage"
msgstr ""
-#: common/models.py:1248
+#: common/models.py:1255
msgid "Show depleted stock"
msgstr ""
-#: common/models.py:1249
+#: common/models.py:1256
msgid "Show depleted stock items on the homepage"
msgstr ""
-#: common/models.py:1255
+#: common/models.py:1262
msgid "Show needed stock"
msgstr ""
-#: common/models.py:1256
+#: common/models.py:1263
msgid "Show stock items needed for builds on the homepage"
msgstr ""
-#: common/models.py:1262
+#: common/models.py:1269
msgid "Show expired stock"
msgstr ""
-#: common/models.py:1263
+#: common/models.py:1270
msgid "Show expired stock items on the homepage"
msgstr ""
-#: common/models.py:1269
+#: common/models.py:1276
msgid "Show stale stock"
msgstr ""
-#: common/models.py:1270
+#: common/models.py:1277
msgid "Show stale stock items on the homepage"
msgstr ""
-#: common/models.py:1276
+#: common/models.py:1283
msgid "Show pending builds"
msgstr ""
-#: common/models.py:1277
+#: common/models.py:1284
msgid "Show pending builds on the homepage"
msgstr ""
-#: common/models.py:1283
+#: common/models.py:1290
msgid "Show overdue builds"
msgstr ""
-#: common/models.py:1284
+#: common/models.py:1291
msgid "Show overdue builds on the homepage"
msgstr ""
-#: common/models.py:1290
+#: common/models.py:1297
msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:1291
+#: common/models.py:1298
msgid "Show outstanding POs on the homepage"
msgstr ""
-#: common/models.py:1297
+#: common/models.py:1304
msgid "Show overdue POs"
msgstr ""
-#: common/models.py:1298
+#: common/models.py:1305
msgid "Show overdue POs on the homepage"
msgstr ""
-#: common/models.py:1304
+#: common/models.py:1311
msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:1305
+#: common/models.py:1312
msgid "Show outstanding SOs on the homepage"
msgstr ""
-#: common/models.py:1311
+#: common/models.py:1318
msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:1312
+#: common/models.py:1319
msgid "Show overdue SOs on the homepage"
msgstr ""
-#: common/models.py:1317
+#: common/models.py:1324
msgid "Enable label printing"
msgstr ""
-#: common/models.py:1318
+#: common/models.py:1325
msgid "Enable label printing from the web interface"
msgstr ""
-#: common/models.py:1324
+#: common/models.py:1331
msgid "Inline label display"
msgstr ""
-#: common/models.py:1325
+#: common/models.py:1332
msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:1331
+#: common/models.py:1338
msgid "Inline report display"
msgstr ""
-#: common/models.py:1332
+#: common/models.py:1339
msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:1338
+#: common/models.py:1345
msgid "Search Parts"
msgstr ""
-#: common/models.py:1339
+#: common/models.py:1346
msgid "Display parts in search preview window"
msgstr ""
-#: common/models.py:1345
+#: common/models.py:1352
msgid "Seach Supplier Parts"
msgstr ""
-#: common/models.py:1346
+#: common/models.py:1353
msgid "Display supplier parts in search preview window"
msgstr ""
-#: common/models.py:1352
+#: common/models.py:1359
msgid "Search Manufacturer Parts"
msgstr ""
-#: common/models.py:1353
+#: common/models.py:1360
msgid "Display manufacturer parts in search preview window"
msgstr ""
-#: common/models.py:1359
+#: common/models.py:1366
msgid "Hide Inactive Parts"
msgstr ""
-#: common/models.py:1360
+#: common/models.py:1367
msgid "Excluded inactive parts from search preview window"
msgstr ""
-#: common/models.py:1366
+#: common/models.py:1373
msgid "Search Categories"
msgstr ""
-#: common/models.py:1367
+#: common/models.py:1374
msgid "Display part categories in search preview window"
msgstr ""
-#: common/models.py:1373
+#: common/models.py:1380
msgid "Search Stock"
msgstr ""
-#: common/models.py:1374
+#: common/models.py:1381
msgid "Display stock items in search preview window"
msgstr ""
-#: common/models.py:1380
+#: common/models.py:1387
msgid "Hide Unavailable Stock Items"
msgstr ""
-#: common/models.py:1381
+#: common/models.py:1388
msgid "Exclude stock items which are not available from the search preview window"
msgstr ""
-#: common/models.py:1387
+#: common/models.py:1394
msgid "Search Locations"
msgstr ""
-#: common/models.py:1388
+#: common/models.py:1395
msgid "Display stock locations in search preview window"
msgstr ""
-#: common/models.py:1394
+#: common/models.py:1401
msgid "Search Companies"
msgstr ""
-#: common/models.py:1395
+#: common/models.py:1402
msgid "Display companies in search preview window"
msgstr ""
-#: common/models.py:1401
+#: common/models.py:1408
msgid "Search Purchase Orders"
msgstr ""
-#: common/models.py:1402
+#: common/models.py:1409
msgid "Display purchase orders in search preview window"
msgstr ""
-#: common/models.py:1408
+#: common/models.py:1415
msgid "Exclude Inactive Purchase Orders"
msgstr ""
-#: common/models.py:1409
+#: common/models.py:1416
msgid "Exclude inactive purchase orders from search preview window"
msgstr ""
-#: common/models.py:1415
+#: common/models.py:1422
msgid "Search Sales Orders"
msgstr ""
-#: common/models.py:1416
+#: common/models.py:1423
msgid "Display sales orders in search preview window"
msgstr ""
-#: common/models.py:1422
+#: common/models.py:1429
msgid "Exclude Inactive Sales Orders"
msgstr ""
-#: common/models.py:1423
+#: common/models.py:1430
msgid "Exclude inactive sales orders from search preview window"
msgstr ""
-#: common/models.py:1429
+#: common/models.py:1436
msgid "Search Preview Results"
msgstr ""
-#: common/models.py:1430
+#: common/models.py:1437
msgid "Number of results to show in each section of the search preview window"
msgstr ""
-#: common/models.py:1436
+#: common/models.py:1443
msgid "Show Quantity in Forms"
msgstr ""
-#: common/models.py:1437
+#: common/models.py:1444
msgid "Display available part quantity in some forms"
msgstr ""
-#: common/models.py:1443
+#: common/models.py:1450
msgid "Escape Key Closes Forms"
msgstr ""
-#: common/models.py:1444
+#: common/models.py:1451
msgid "Use the escape key to close modal forms"
msgstr ""
-#: common/models.py:1450
+#: common/models.py:1457
msgid "Fixed Navbar"
msgstr ""
-#: common/models.py:1451
+#: common/models.py:1458
msgid "The navbar position is fixed to the top of the screen"
msgstr ""
-#: common/models.py:1457
+#: common/models.py:1464
msgid "Date Format"
msgstr ""
-#: common/models.py:1458
+#: common/models.py:1465
msgid "Preferred format for displaying dates"
msgstr ""
-#: common/models.py:1472 part/templates/part/detail.html:39
+#: common/models.py:1479 part/templates/part/detail.html:39
msgid "Part Scheduling"
msgstr ""
-#: common/models.py:1473
+#: common/models.py:1480
msgid "Display part scheduling information"
msgstr ""
-#: common/models.py:1537 company/forms.py:37
+#: common/models.py:1544 company/forms.py:37
msgid "Price break quantity"
msgstr ""
-#: common/models.py:1544 company/serializers.py:288
-#: company/templates/company/supplier_part.html:263 order/models.py:949
-#: templates/js/translated/part.js:998 templates/js/translated/part.js:1974
+#: common/models.py:1551 company/serializers.py:290
+#: company/templates/company/supplier_part.html:263 order/models.py:965
+#: templates/js/translated/part.js:1042 templates/js/translated/part.js:2070
msgid "Price"
msgstr ""
-#: common/models.py:1545
+#: common/models.py:1552
msgid "Unit price at specified quantity"
msgstr ""
-#: common/models.py:1705 common/models.py:1883
+#: common/models.py:1712 common/models.py:1890
msgid "Endpoint"
msgstr ""
-#: common/models.py:1706
+#: common/models.py:1713
msgid "Endpoint at which this webhook is received"
msgstr ""
-#: common/models.py:1715
+#: common/models.py:1722
msgid "Name for this webhook"
msgstr ""
-#: common/models.py:1720 part/models.py:911 plugin/models.py:99
+#: common/models.py:1727 part/models.py:911 plugin/models.py:99
#: templates/js/translated/table_filters.js:34
#: templates/js/translated/table_filters.js:96
#: templates/js/translated/table_filters.js:308
@@ -2457,79 +2474,89 @@ msgstr ""
msgid "Active"
msgstr ""
-#: common/models.py:1721
+#: common/models.py:1728
msgid "Is this webhook active"
msgstr ""
-#: common/models.py:1735
+#: common/models.py:1742
msgid "Token"
msgstr ""
-#: common/models.py:1736
+#: common/models.py:1743
msgid "Token for access"
msgstr ""
-#: common/models.py:1743
+#: common/models.py:1750
msgid "Secret"
msgstr ""
-#: common/models.py:1744
+#: common/models.py:1751
msgid "Shared secret for HMAC"
msgstr ""
-#: common/models.py:1850
+#: common/models.py:1857
msgid "Message ID"
msgstr ""
-#: common/models.py:1851
+#: common/models.py:1858
msgid "Unique identifier for this message"
msgstr ""
-#: common/models.py:1859
+#: common/models.py:1866
msgid "Host"
msgstr ""
-#: common/models.py:1860
+#: common/models.py:1867
msgid "Host from which this message was received"
msgstr ""
-#: common/models.py:1867
+#: common/models.py:1874
msgid "Header"
msgstr ""
-#: common/models.py:1868
+#: common/models.py:1875
msgid "Header of this message"
msgstr ""
-#: common/models.py:1874
+#: common/models.py:1881
msgid "Body"
msgstr ""
-#: common/models.py:1875
+#: common/models.py:1882
msgid "Body of this message"
msgstr ""
-#: common/models.py:1884
+#: common/models.py:1891
msgid "Endpoint on which this message was received"
msgstr ""
-#: common/models.py:1889
+#: common/models.py:1896
msgid "Worked on"
msgstr ""
-#: common/models.py:1890
+#: common/models.py:1897
msgid "Was the work on this message finished?"
msgstr ""
+#: common/notifications.py:292
+#, python-brace-format
+msgid "New {verbose_name}"
+msgstr ""
+
+#: common/notifications.py:294
+#, python-brace-format
+msgid "A new {verbose_name} has been created and ,assigned to you"
+msgstr ""
+
#: common/views.py:87 order/templates/order/purchase_order_detail.html:23
-#: order/views.py:102 part/views.py:191
+#: order/views.py:102 part/views.py:116
#: templates/patterns/wizard/upload.html:37
msgid "Upload File"
msgstr ""
#: common/views.py:88 order/views.py:103
#: part/templates/part/import_wizard/ajax_match_fields.html:45
-#: part/views.py:192 templates/patterns/wizard/match_fields.html:51
+#: part/views.py:117 templates/patterns/wizard/match_fields.html:51
msgid "Match Fields"
msgstr ""
@@ -2545,19 +2572,19 @@ msgstr ""
msgid "Parts imported"
msgstr ""
-#: common/views.py:507 order/templates/order/order_wizard/match_parts.html:19
+#: common/views.py:511 order/templates/order/order_wizard/match_parts.html:19
#: part/templates/part/import_wizard/match_references.html:19
#: templates/patterns/wizard/match_fields.html:26
#: templates/patterns/wizard/upload.html:35
msgid "Previous Step"
msgstr ""
-#: company/forms.py:16 part/forms.py:21
+#: company/forms.py:16 part/forms.py:18
#: templates/InvenTree/settings/mixins/urls.html:14
msgid "URL"
msgstr ""
-#: company/forms.py:17 part/forms.py:22
+#: company/forms.py:17 part/forms.py:19
msgid "Image URL"
msgstr ""
@@ -2571,7 +2598,7 @@ msgstr ""
#: company/models.py:104 company/templates/company/company_base.html:100
#: templates/InvenTree/settings/plugin_settings.html:55
-#: templates/js/translated/company.js:405
+#: templates/js/translated/company.js:399
msgid "Website"
msgstr ""
@@ -2644,9 +2671,9 @@ msgstr ""
msgid "Does this company manufacture parts?"
msgstr ""
-#: company/models.py:144 company/serializers.py:294
-#: company/templates/company/company_base.html:106 part/serializers.py:137
-#: part/serializers.py:168 stock/serializers.py:162
+#: company/models.py:144 company/serializers.py:296
+#: company/templates/company/company_base.html:106 part/serializers.py:139
+#: part/serializers.py:170 stock/serializers.py:162
msgid "Currency"
msgstr ""
@@ -2667,10 +2694,10 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:90
#: company/templates/company/supplier_part.html:103
#: stock/templates/stock/item_base.html:212
-#: templates/js/translated/company.js:389
-#: templates/js/translated/company.js:488
-#: templates/js/translated/company.js:632
-#: templates/js/translated/company.js:917 templates/js/translated/part.js:235
+#: templates/js/translated/company.js:383
+#: templates/js/translated/company.js:484
+#: templates/js/translated/company.js:617
+#: templates/js/translated/company.js:902 templates/js/translated/part.js:235
#: templates/js/translated/table_filters.js:411
msgid "Manufacturer"
msgstr ""
@@ -2681,11 +2708,11 @@ msgstr ""
#: company/models.py:266 company/templates/company/manufacturer_part.html:101
#: company/templates/company/supplier_part.html:111
-#: templates/js/translated/company.js:255
-#: templates/js/translated/company.js:487
-#: templates/js/translated/company.js:648
-#: templates/js/translated/company.js:935 templates/js/translated/order.js:1907
-#: templates/js/translated/part.js:246 templates/js/translated/part.js:956
+#: templates/js/translated/company.js:256
+#: templates/js/translated/company.js:483
+#: templates/js/translated/company.js:633
+#: templates/js/translated/company.js:920 templates/js/translated/order.js:1907
+#: templates/js/translated/part.js:246 templates/js/translated/part.js:1000
msgid "MPN"
msgstr ""
@@ -2714,9 +2741,9 @@ msgstr ""
#: company/models.py:361
#: report/templates/report/inventree_test_report_base.html:95
-#: stock/models.py:2080 templates/js/translated/company.js:540
-#: templates/js/translated/company.js:763 templates/js/translated/part.js:776
-#: templates/js/translated/stock.js:1294
+#: stock/models.py:2084 templates/js/translated/company.js:531
+#: templates/js/translated/company.js:748 templates/js/translated/part.js:820
+#: templates/js/translated/stock.js:1304
msgid "Value"
msgstr ""
@@ -2724,10 +2751,10 @@ msgstr ""
msgid "Parameter value"
msgstr ""
-#: company/models.py:368 part/models.py:878 part/models.py:2339
+#: company/models.py:368 part/models.py:878 part/models.py:2327
#: part/templates/part/part_base.html:280
#: templates/InvenTree/settings/settings.html:351
-#: templates/js/translated/company.js:769 templates/js/translated/part.js:782
+#: templates/js/translated/company.js:754 templates/js/translated/part.js:826
msgid "Units"
msgstr ""
@@ -2740,13 +2767,14 @@ msgid "Linked manufacturer part must reference the same base part"
msgstr ""
#: company/models.py:487 company/templates/company/company_base.html:81
-#: company/templates/company/supplier_part.html:87 order/models.py:303
+#: company/templates/company/supplier_part.html:87 order/models.py:308
#: order/templates/order/order_base.html:112 part/bom.py:237 part/bom.py:265
#: stock/templates/stock/item_base.html:229
-#: templates/js/translated/company.js:254
-#: templates/js/translated/company.js:393
-#: templates/js/translated/company.js:891 templates/js/translated/order.js:1643
-#: templates/js/translated/part.js:216 templates/js/translated/part.js:924
+#: templates/email/overdue_purchase_order.html:16
+#: templates/js/translated/company.js:255
+#: templates/js/translated/company.js:387
+#: templates/js/translated/company.js:876 templates/js/translated/order.js:1643
+#: templates/js/translated/part.js:216 templates/js/translated/part.js:968
#: templates/js/translated/table_filters.js:415
msgid "Supplier"
msgstr ""
@@ -2756,9 +2784,9 @@ msgid "Select supplier"
msgstr ""
#: company/models.py:493 company/templates/company/supplier_part.html:97
-#: part/bom.py:238 part/bom.py:266 templates/js/translated/company.js:253
+#: part/bom.py:238 part/bom.py:266 templates/js/translated/company.js:254
#: templates/js/translated/order.js:1894 templates/js/translated/part.js:227
-#: templates/js/translated/part.js:942
+#: templates/js/translated/part.js:986
msgid "SKU"
msgstr ""
@@ -2779,23 +2807,23 @@ msgid "Supplier part description"
msgstr ""
#: company/models.py:518 company/templates/company/supplier_part.html:125
-#: part/models.py:2573 part/templates/part/upload_bom.html:59
+#: part/models.py:2561 part/templates/part/upload_bom.html:59
#: report/templates/report/inventree_po_report.html:92
#: report/templates/report/inventree_so_report.html:93 stock/serializers.py:387
msgid "Note"
msgstr ""
-#: company/models.py:522 part/models.py:1688
+#: company/models.py:522 part/models.py:1683
msgid "base cost"
msgstr ""
-#: company/models.py:522 part/models.py:1688
+#: company/models.py:522 part/models.py:1683
msgid "Minimum charge (e.g. stocking fee)"
msgstr ""
#: company/models.py:524 company/templates/company/supplier_part.html:118
#: stock/models.py:608 stock/templates/stock/item_base.html:245
-#: templates/js/translated/company.js:967 templates/js/translated/stock.js:1912
+#: templates/js/translated/company.js:952 templates/js/translated/stock.js:1922
msgid "Packaging"
msgstr ""
@@ -2803,7 +2831,7 @@ msgstr ""
msgid "Part packaging"
msgstr ""
-#: company/models.py:526 part/models.py:1690
+#: company/models.py:526 part/models.py:1685
msgid "multiple"
msgstr ""
@@ -2825,7 +2853,7 @@ msgstr ""
#: company/templates/company/company_base.html:8
#: company/templates/company/company_base.html:12
-#: templates/InvenTree/search.html:177 templates/js/translated/company.js:378
+#: templates/InvenTree/search.html:177 templates/js/translated/company.js:372
msgid "Company"
msgstr ""
@@ -2843,7 +2871,7 @@ msgid "Edit company information"
msgstr ""
#: company/templates/company/company_base.html:34
-#: templates/js/translated/company.js:321
+#: templates/js/translated/company.js:315
msgid "Edit Company"
msgstr ""
@@ -2866,12 +2894,13 @@ msgstr ""
msgid "Download image from URL"
msgstr ""
-#: company/templates/company/company_base.html:86 order/models.py:649
+#: company/templates/company/company_base.html:86 order/models.py:665
#: order/templates/order/sales_order_base.html:116 stock/models.py:627
-#: stock/models.py:628 stock/serializers.py:758
+#: stock/models.py:628 stock/serializers.py:745
#: stock/templates/stock/item_base.html:401
-#: templates/js/translated/company.js:385 templates/js/translated/order.js:2458
-#: templates/js/translated/stock.js:2431
+#: templates/email/overdue_sales_order.html:16
+#: templates/js/translated/company.js:379 templates/js/translated/order.js:2458
+#: templates/js/translated/stock.js:2441
#: templates/js/translated/table_filters.js:419
msgid "Customer"
msgstr ""
@@ -2999,7 +3028,7 @@ msgid "Supplier List"
msgstr ""
#: company/templates/company/manufacturer_part.html:15 company/views.py:45
-#: part/templates/part/prices.html:170 templates/InvenTree/search.html:179
+#: part/templates/part/prices.html:172 templates/InvenTree/search.html:179
#: templates/navbar.html:49
msgid "Manufacturers"
msgstr ""
@@ -3012,12 +3041,12 @@ msgid "Order part"
msgstr ""
#: company/templates/company/manufacturer_part.html:39
-#: templates/js/translated/company.js:680
+#: templates/js/translated/company.js:665
msgid "Edit manufacturer part"
msgstr ""
#: company/templates/company/manufacturer_part.html:43
-#: templates/js/translated/company.js:681
+#: templates/js/translated/company.js:666
msgid "Delete manufacturer part"
msgstr ""
@@ -3032,7 +3061,7 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:119
#: company/templates/company/supplier_part.html:15 company/views.py:39
-#: part/templates/part/part_sidebar.html:35 part/templates/part/prices.html:166
+#: part/templates/part/part_sidebar.html:35 part/templates/part/prices.html:168
#: templates/InvenTree/search.html:189 templates/navbar.html:48
msgid "Suppliers"
msgstr ""
@@ -3092,18 +3121,18 @@ msgstr ""
#: company/templates/company/supplier_part.html:7
#: company/templates/company/supplier_part.html:24 stock/models.py:592
#: stock/templates/stock/item_base.html:238
-#: templates/js/translated/company.js:907 templates/js/translated/order.js:884
-#: templates/js/translated/stock.js:1869
+#: templates/js/translated/company.js:892 templates/js/translated/order.js:884
+#: templates/js/translated/stock.js:1879
msgid "Supplier Part"
msgstr ""
#: company/templates/company/supplier_part.html:38
-#: templates/js/translated/company.js:980
+#: templates/js/translated/company.js:965
msgid "Edit supplier part"
msgstr ""
#: company/templates/company/supplier_part.html:42
-#: templates/js/translated/company.js:981
+#: templates/js/translated/company.js:966
msgid "Delete supplier part"
msgstr ""
@@ -3123,7 +3152,7 @@ msgstr ""
#: company/templates/company/supplier_part.html:148
#: part/templates/part/detail.html:24 stock/templates/stock/location.html:177
-#: templates/js/translated/stock.js:380
+#: templates/js/translated/stock.js:379
msgid "New Stock Item"
msgstr ""
@@ -3144,7 +3173,7 @@ msgstr ""
#: company/templates/company/supplier_part.html:191
#: company/templates/company/supplier_part.html:305
-#: part/templates/part/prices.html:274 templates/js/translated/part.js:2046
+#: part/templates/part/prices.html:276 templates/js/translated/part.js:2142
msgid "Add Price Break"
msgstr ""
@@ -3153,12 +3182,12 @@ msgid "No price break information found"
msgstr ""
#: company/templates/company/supplier_part.html:231
-#: templates/js/translated/part.js:2056
+#: templates/js/translated/part.js:2152
msgid "Delete Price Break"
msgstr ""
#: company/templates/company/supplier_part.html:245
-#: templates/js/translated/part.js:2070
+#: templates/js/translated/part.js:2166
msgid "Edit Price Break"
msgstr ""
@@ -3180,9 +3209,9 @@ msgstr ""
#: stock/templates/stock/stock_app_base.html:10
#: templates/InvenTree/search.html:151
#: templates/InvenTree/settings/sidebar.html:43
-#: templates/js/translated/bom.js:554 templates/js/translated/part.js:678
-#: templates/js/translated/part.js:1226 templates/js/translated/part.js:1387
-#: templates/js/translated/stock.js:904 templates/js/translated/stock.js:1687
+#: templates/js/translated/bom.js:554 templates/js/translated/part.js:722
+#: templates/js/translated/part.js:1270 templates/js/translated/part.js:1431
+#: templates/js/translated/stock.js:903 templates/js/translated/stock.js:1697
#: templates/navbar.html:31
msgid "Stock"
msgstr ""
@@ -3209,7 +3238,7 @@ msgstr ""
#: stock/templates/stock/location.html:173
#: stock/templates/stock/location_sidebar.html:7
#: templates/InvenTree/search.html:153 templates/js/translated/search.js:223
-#: templates/js/translated/stock.js:2307 users/models.py:39
+#: templates/js/translated/stock.js:2317 users/models.py:39
msgid "Stock Items"
msgstr ""
@@ -3238,20 +3267,20 @@ msgstr ""
msgid "New Company"
msgstr ""
-#: company/views.py:112 part/views.py:576
+#: company/views.py:112 part/views.py:501
msgid "Download Image"
msgstr ""
-#: company/views.py:139 part/views.py:606
+#: company/views.py:139 part/views.py:531
msgid "Image size exceeds maximum allowable size for download"
msgstr ""
-#: company/views.py:146 part/views.py:613
+#: company/views.py:146 part/views.py:538
#, python-brace-format
msgid "Invalid response: {code}"
msgstr ""
-#: company/views.py:155 part/views.py:622
+#: company/views.py:155 part/views.py:547
msgid "Supplied URL is not a valid image file"
msgstr ""
@@ -3320,313 +3349,314 @@ msgstr ""
msgid "Part query filters (comma-separated value of key=value pairs)"
msgstr ""
-#: order/models.py:133
+#: order/models.py:134
msgid "Order description"
msgstr ""
-#: order/models.py:135 order/models.py:1236
+#: order/models.py:136 order/models.py:1252
msgid "Link to external page"
msgstr ""
-#: order/models.py:143
+#: order/models.py:144
msgid "Created By"
msgstr ""
-#: order/models.py:150
+#: order/models.py:151
msgid "User or group responsible for this order"
msgstr ""
-#: order/models.py:155
+#: order/models.py:156
msgid "Order notes"
msgstr ""
-#: order/models.py:289 order/models.py:639
+#: order/models.py:294 order/models.py:655
msgid "Order reference"
msgstr ""
-#: order/models.py:294 order/models.py:654
+#: order/models.py:299 order/models.py:670
msgid "Purchase order status"
msgstr ""
-#: order/models.py:304
+#: order/models.py:309
msgid "Company from which the items are being ordered"
msgstr ""
-#: order/models.py:307 order/templates/order/order_base.html:124
+#: order/models.py:312 order/templates/order/order_base.html:124
#: templates/js/translated/order.js:1652
msgid "Supplier Reference"
msgstr ""
-#: order/models.py:307
+#: order/models.py:312
msgid "Supplier order reference code"
msgstr ""
-#: order/models.py:314
+#: order/models.py:319
msgid "received by"
msgstr ""
-#: order/models.py:319
+#: order/models.py:324
msgid "Issue Date"
msgstr ""
-#: order/models.py:320
+#: order/models.py:325
msgid "Date order was issued"
msgstr ""
-#: order/models.py:325
+#: order/models.py:330
msgid "Target Delivery Date"
msgstr ""
-#: order/models.py:326
+#: order/models.py:331
msgid "Expected date for order delivery. Order will be overdue after this date."
msgstr ""
-#: order/models.py:332
+#: order/models.py:337
msgid "Date order was completed"
msgstr ""
-#: order/models.py:368
+#: order/models.py:373
msgid "Part supplier must match PO supplier"
msgstr ""
-#: order/models.py:512
+#: order/models.py:517
msgid "Quantity must be a positive number"
msgstr ""
-#: order/models.py:650
+#: order/models.py:666
msgid "Company to which the items are being sold"
msgstr ""
-#: order/models.py:656
+#: order/models.py:672
msgid "Customer Reference "
msgstr ""
-#: order/models.py:656
+#: order/models.py:672
msgid "Customer order reference code"
msgstr ""
-#: order/models.py:661
+#: order/models.py:677
msgid "Target date for order completion. Order will be overdue after this date."
msgstr ""
-#: order/models.py:664 order/models.py:1190
+#: order/models.py:680 order/models.py:1206
#: templates/js/translated/order.js:2505 templates/js/translated/order.js:2656
msgid "Shipment Date"
msgstr ""
-#: order/models.py:671
+#: order/models.py:687
msgid "shipped by"
msgstr ""
-#: order/models.py:726
+#: order/models.py:742
msgid "Order cannot be completed as no parts have been assigned"
msgstr ""
-#: order/models.py:730
+#: order/models.py:746
msgid "Only a pending order can be marked as complete"
msgstr ""
-#: order/models.py:733
+#: order/models.py:749
msgid "Order cannot be completed as there are incomplete shipments"
msgstr ""
-#: order/models.py:736
+#: order/models.py:752
msgid "Order cannot be completed as there are incomplete line items"
msgstr ""
-#: order/models.py:910
+#: order/models.py:926
msgid "Item quantity"
msgstr ""
-#: order/models.py:916
+#: order/models.py:932
msgid "Line item reference"
msgstr ""
-#: order/models.py:918
+#: order/models.py:934
msgid "Line item notes"
msgstr ""
-#: order/models.py:923
+#: order/models.py:939
msgid "Target shipping date for this line item"
msgstr ""
-#: order/models.py:941
+#: order/models.py:957
msgid "Context"
msgstr ""
-#: order/models.py:942
+#: order/models.py:958
msgid "Additional context for this line"
msgstr ""
-#: order/models.py:950
+#: order/models.py:966
msgid "Unit price"
msgstr ""
-#: order/models.py:980
+#: order/models.py:996
msgid "Supplier part must match supplier"
msgstr ""
-#: order/models.py:988
+#: order/models.py:1004
msgid "deleted"
msgstr ""
-#: order/models.py:994 order/models.py:1074 order/models.py:1099
-#: order/models.py:1184 order/models.py:1320
+#: order/models.py:1010 order/models.py:1090 order/models.py:1115
+#: order/models.py:1200 order/models.py:1336
#: templates/js/translated/order.js:3112
msgid "Order"
msgstr ""
-#: order/models.py:995 order/models.py:1074
+#: order/models.py:1011 order/models.py:1090
#: order/templates/order/order_base.html:9
#: order/templates/order/order_base.html:18
#: report/templates/report/inventree_po_report.html:76
#: stock/templates/stock/item_base.html:184
+#: templates/email/overdue_purchase_order.html:15
#: templates/js/translated/order.js:885 templates/js/translated/order.js:1621
-#: templates/js/translated/part.js:899 templates/js/translated/stock.js:1846
-#: templates/js/translated/stock.js:2412
+#: templates/js/translated/part.js:943 templates/js/translated/stock.js:1856
+#: templates/js/translated/stock.js:2422
msgid "Purchase Order"
msgstr ""
-#: order/models.py:1013
+#: order/models.py:1029
msgid "Supplier part"
msgstr ""
-#: order/models.py:1020 order/templates/order/order_base.html:169
+#: order/models.py:1036 order/templates/order/order_base.html:169
#: templates/js/translated/order.js:1318 templates/js/translated/order.js:2009
-#: templates/js/translated/part.js:993 templates/js/translated/part.js:1020
+#: templates/js/translated/part.js:1037 templates/js/translated/part.js:1064
#: templates/js/translated/table_filters.js:330
msgid "Received"
msgstr ""
-#: order/models.py:1021
+#: order/models.py:1037
msgid "Number of items received"
msgstr ""
-#: order/models.py:1028 part/templates/part/prices.html:179 stock/models.py:722
+#: order/models.py:1044 part/templates/part/prices.html:181 stock/models.py:722
#: stock/serializers.py:153 stock/templates/stock/item_base.html:191
-#: templates/js/translated/stock.js:1900
+#: templates/js/translated/stock.js:1910
msgid "Purchase Price"
msgstr ""
-#: order/models.py:1029
+#: order/models.py:1045
msgid "Unit purchase price"
msgstr ""
-#: order/models.py:1037
+#: order/models.py:1053
msgid "Where does the Purchaser want this item to be stored?"
msgstr ""
-#: order/models.py:1109 part/templates/part/part_pricing.html:112
-#: part/templates/part/prices.html:119 part/templates/part/prices.html:288
+#: order/models.py:1125 part/templates/part/part_pricing.html:115
+#: part/templates/part/prices.html:121 part/templates/part/prices.html:290
msgid "Sale Price"
msgstr ""
-#: order/models.py:1110
+#: order/models.py:1126
msgid "Unit sale price"
msgstr ""
-#: order/models.py:1115
+#: order/models.py:1131
msgid "Shipped quantity"
msgstr ""
-#: order/models.py:1191
+#: order/models.py:1207
msgid "Date of shipment"
msgstr ""
-#: order/models.py:1198
+#: order/models.py:1214
msgid "Checked By"
msgstr ""
-#: order/models.py:1199
+#: order/models.py:1215
msgid "User who checked this shipment"
msgstr ""
-#: order/models.py:1207
+#: order/models.py:1223
msgid "Shipment number"
msgstr ""
-#: order/models.py:1214
+#: order/models.py:1230
msgid "Shipment notes"
msgstr ""
-#: order/models.py:1221
+#: order/models.py:1237
msgid "Tracking Number"
msgstr ""
-#: order/models.py:1222
+#: order/models.py:1238
msgid "Shipment tracking information"
msgstr ""
-#: order/models.py:1229
+#: order/models.py:1245
msgid "Invoice Number"
msgstr ""
-#: order/models.py:1230
+#: order/models.py:1246
msgid "Reference number for associated invoice"
msgstr ""
-#: order/models.py:1248
+#: order/models.py:1264
msgid "Shipment has already been sent"
msgstr ""
-#: order/models.py:1251
+#: order/models.py:1267
msgid "Shipment has no allocated stock items"
msgstr ""
-#: order/models.py:1354 order/models.py:1356
+#: order/models.py:1370 order/models.py:1372
msgid "Stock item has not been assigned"
msgstr ""
-#: order/models.py:1360
+#: order/models.py:1376
msgid "Cannot allocate stock item to a line with a different part"
msgstr ""
-#: order/models.py:1362
+#: order/models.py:1378
msgid "Cannot allocate stock to a line without a part"
msgstr ""
-#: order/models.py:1365
+#: order/models.py:1381
msgid "Allocation quantity cannot exceed stock quantity"
msgstr ""
-#: order/models.py:1369
+#: order/models.py:1385
msgid "StockItem is over-allocated"
msgstr ""
-#: order/models.py:1375 order/serializers.py:1045
+#: order/models.py:1391 order/serializers.py:1047
msgid "Quantity must be 1 for serialized stock item"
msgstr ""
-#: order/models.py:1378
+#: order/models.py:1394
msgid "Sales order does not match shipment"
msgstr ""
-#: order/models.py:1379
+#: order/models.py:1395
msgid "Shipment does not match sales order"
msgstr ""
-#: order/models.py:1387
+#: order/models.py:1403
msgid "Line"
msgstr ""
-#: order/models.py:1395 order/serializers.py:1149 order/serializers.py:1273
+#: order/models.py:1411 order/serializers.py:1151 order/serializers.py:1275
#: templates/js/translated/model_renderers.js:301
msgid "Shipment"
msgstr ""
-#: order/models.py:1396
+#: order/models.py:1412
msgid "Sales order shipment reference"
msgstr ""
-#: order/models.py:1408 templates/InvenTree/notifications/notifications.html:70
+#: order/models.py:1424 templates/InvenTree/notifications/notifications.html:70
msgid "Item"
msgstr ""
-#: order/models.py:1409
+#: order/models.py:1425
msgid "Select stock item to allocate"
msgstr ""
-#: order/models.py:1412
+#: order/models.py:1428
msgid "Enter stock allocation quantity"
msgstr ""
@@ -3662,7 +3692,7 @@ msgstr ""
msgid "Purchase order must match supplier"
msgstr ""
-#: order/serializers.py:406 order/serializers.py:1117
+#: order/serializers.py:406 order/serializers.py:1119
msgid "Line Item"
msgstr ""
@@ -3710,42 +3740,60 @@ msgstr ""
msgid "Supplied barcode values must be unique"
msgstr ""
-#: order/serializers.py:866
+#: order/serializers.py:868
msgid "Sale price currency"
msgstr ""
-#: order/serializers.py:947
+#: order/serializers.py:949
msgid "No shipment details provided"
msgstr ""
-#: order/serializers.py:1006 order/serializers.py:1126
+#: order/serializers.py:1008 order/serializers.py:1128
msgid "Line item is not associated with this order"
msgstr ""
-#: order/serializers.py:1028
+#: order/serializers.py:1030
msgid "Quantity must be positive"
msgstr ""
-#: order/serializers.py:1139
+#: order/serializers.py:1141
msgid "Enter serial numbers to allocate"
msgstr ""
-#: order/serializers.py:1161 order/serializers.py:1281
+#: order/serializers.py:1163 order/serializers.py:1283
msgid "Shipment has already been shipped"
msgstr ""
-#: order/serializers.py:1164 order/serializers.py:1284
+#: order/serializers.py:1166 order/serializers.py:1286
msgid "Shipment is not associated with this order"
msgstr ""
-#: order/serializers.py:1214
+#: order/serializers.py:1216
msgid "No match found for the following serial numbers"
msgstr ""
-#: order/serializers.py:1224
+#: order/serializers.py:1226
msgid "The following serial numbers are already allocated"
msgstr ""
+#: order/tasks.py:26
+msgid "Overdue Purchase Order"
+msgstr ""
+
+#: order/tasks.py:31
+#, python-brace-format
+msgid "Purchase order {po} is now overdue"
+msgstr ""
+
+#: order/tasks.py:88
+msgid "Overdue Sales Order"
+msgstr ""
+
+#: order/tasks.py:93
+#, python-brace-format
+msgid "Sales order {so} is now overdue"
+msgstr ""
+
#: order/templates/order/order_base.html:33
msgid "Print purchase order report"
msgstr ""
@@ -3870,8 +3918,8 @@ msgstr ""
#: templates/js/translated/bom.js:77 templates/js/translated/build.js:427
#: templates/js/translated/build.js:579 templates/js/translated/build.js:1972
#: templates/js/translated/order.js:833 templates/js/translated/order.js:1265
-#: templates/js/translated/order.js:2731 templates/js/translated/stock.js:570
-#: templates/js/translated/stock.js:738
+#: templates/js/translated/order.js:2731 templates/js/translated/stock.js:569
+#: templates/js/translated/stock.js:737
#: templates/patterns/wizard/match_fields.html:70
msgid "Remove row"
msgstr ""
@@ -3990,7 +4038,7 @@ msgid "Pending Shipments"
msgstr ""
#: order/templates/order/sales_order_detail.html:70
-#: templates/attachment_table.html:6 templates/js/translated/bom.js:1053
+#: templates/attachment_table.html:6 templates/js/translated/bom.js:1047
#: templates/js/translated/build.js:1880
msgid "Actions"
msgstr ""
@@ -4021,47 +4069,47 @@ msgstr ""
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr ""
-#: part/api.py:481
+#: part/api.py:482
msgid "Incoming Purchase Order"
msgstr ""
-#: part/api.py:501
+#: part/api.py:502
msgid "Outgoing Sales Order"
msgstr ""
-#: part/api.py:519
+#: part/api.py:520
msgid "Stock produced by Build Order"
msgstr ""
-#: part/api.py:551
+#: part/api.py:552
msgid "Stock required for Build Order"
msgstr ""
-#: part/api.py:637
+#: part/api.py:638
msgid "Valid"
msgstr ""
-#: part/api.py:638
+#: part/api.py:639
msgid "Validate entire Bill of Materials"
msgstr ""
-#: part/api.py:644
+#: part/api.py:645
msgid "This option must be selected"
msgstr ""
-#: part/api.py:1010
+#: part/api.py:1011
msgid "Must be greater than zero"
msgstr ""
-#: part/api.py:1014
+#: part/api.py:1015
msgid "Must be a valid quantity"
msgstr ""
-#: part/api.py:1029
+#: part/api.py:1030
msgid "Specify location for initial part stock"
msgstr ""
-#: part/api.py:1060 part/api.py:1064 part/api.py:1079 part/api.py:1083
+#: part/api.py:1061 part/api.py:1065 part/api.py:1080 part/api.py:1084
msgid "This field is required"
msgstr ""
@@ -4080,17 +4128,13 @@ msgid "Available Stock"
msgstr ""
#: part/bom.py:130 part/templates/part/part_base.html:207
-#: templates/js/translated/part.js:517 templates/js/translated/part.js:537
-#: templates/js/translated/part.js:1229 templates/js/translated/part.js:1401
-#: templates/js/translated/part.js:1417
+#: templates/js/translated/part.js:561 templates/js/translated/part.js:581
+#: templates/js/translated/part.js:1273 templates/js/translated/part.js:1445
+#: templates/js/translated/part.js:1461
msgid "On Order"
msgstr ""
-#: part/forms.py:59
-msgid "Select part category"
-msgstr ""
-
-#: part/forms.py:69
+#: part/forms.py:60
msgid "Input quantity for price calculation"
msgstr ""
@@ -4106,7 +4150,7 @@ msgstr ""
msgid "Default keywords for parts in this category"
msgstr ""
-#: part/models.py:115 part/models.py:2415 part/templates/part/category.html:15
+#: part/models.py:115 part/models.py:2403 part/templates/part/category.html:15
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr ""
@@ -4123,7 +4167,7 @@ msgstr ""
#: part/templates/part/category_sidebar.html:9
#: templates/InvenTree/index.html:85 templates/InvenTree/search.html:82
#: templates/InvenTree/settings/sidebar.html:39
-#: templates/js/translated/part.js:1768 templates/js/translated/search.js:144
+#: templates/js/translated/part.js:1864 templates/js/translated/search.js:144
#: templates/navbar.html:24 users/models.py:37
msgid "Parts"
msgstr ""
@@ -4153,7 +4197,7 @@ msgstr ""
msgid "Duplicate IPN not allowed in part settings"
msgstr ""
-#: part/models.py:738 part/models.py:2469
+#: part/models.py:738 part/models.py:2457
msgid "Part name"
msgstr ""
@@ -4186,12 +4230,11 @@ msgstr ""
msgid "Part keywords to improve visibility in search results"
msgstr ""
-#: part/models.py:776 part/models.py:2171 part/models.py:2414
+#: part/models.py:776 part/models.py:2159 part/models.py:2402
#: part/templates/part/part_base.html:257
-#: part/templates/part/set_category.html:15
#: templates/InvenTree/notifications/notifications.html:65
#: templates/InvenTree/settings/settings.html:231
-#: templates/js/translated/part.js:1369
+#: templates/js/translated/part.js:1413 templates/js/translated/part.js:1639
msgid "Category"
msgstr ""
@@ -4200,8 +4243,8 @@ msgid "Part category"
msgstr ""
#: part/models.py:782 part/templates/part/part_base.html:266
-#: templates/js/translated/part.js:666 templates/js/translated/part.js:1322
-#: templates/js/translated/stock.js:1659
+#: templates/js/translated/part.js:710 templates/js/translated/part.js:1366
+#: templates/js/translated/stock.js:1669
msgid "IPN"
msgstr ""
@@ -4214,7 +4257,7 @@ msgid "Part revision or version number"
msgstr ""
#: part/models.py:790 part/templates/part/part_base.html:273
-#: report/models.py:170 templates/js/translated/part.js:670
+#: report/models.py:170 templates/js/translated/part.js:714
msgid "Revision"
msgstr ""
@@ -4302,317 +4345,321 @@ msgstr ""
msgid "Creation User"
msgstr ""
-#: part/models.py:1690
+#: part/models.py:1685
msgid "Sell multiple"
msgstr ""
-#: part/models.py:2218
+#: part/models.py:2206
msgid "Test templates can only be created for trackable parts"
msgstr ""
-#: part/models.py:2235
+#: part/models.py:2223
msgid "Test with this name already exists for this part"
msgstr ""
-#: part/models.py:2255 templates/js/translated/part.js:1819
-#: templates/js/translated/stock.js:1274
+#: part/models.py:2243 templates/js/translated/part.js:1915
+#: templates/js/translated/stock.js:1284
msgid "Test Name"
msgstr ""
-#: part/models.py:2256
+#: part/models.py:2244
msgid "Enter a name for the test"
msgstr ""
-#: part/models.py:2261
+#: part/models.py:2249
msgid "Test Description"
msgstr ""
-#: part/models.py:2262
+#: part/models.py:2250
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:2267 templates/js/translated/part.js:1828
+#: part/models.py:2255 templates/js/translated/part.js:1924
#: templates/js/translated/table_filters.js:294
msgid "Required"
msgstr ""
-#: part/models.py:2268
+#: part/models.py:2256
msgid "Is this test required to pass?"
msgstr ""
-#: part/models.py:2273 templates/js/translated/part.js:1836
+#: part/models.py:2261 templates/js/translated/part.js:1932
msgid "Requires Value"
msgstr ""
-#: part/models.py:2274
+#: part/models.py:2262
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:2279 templates/js/translated/part.js:1843
+#: part/models.py:2267 templates/js/translated/part.js:1939
msgid "Requires Attachment"
msgstr ""
-#: part/models.py:2280
+#: part/models.py:2268
msgid "Does this test require a file attachment when adding a test result?"
msgstr ""
-#: part/models.py:2288
+#: part/models.py:2276
#, python-brace-format
msgid "Illegal character in template name ({c})"
msgstr ""
-#: part/models.py:2324
+#: part/models.py:2312
msgid "Parameter template name must be unique"
msgstr ""
-#: part/models.py:2332
+#: part/models.py:2320
msgid "Parameter Name"
msgstr ""
-#: part/models.py:2339
+#: part/models.py:2327
msgid "Parameter Units"
msgstr ""
-#: part/models.py:2370
+#: part/models.py:2358
msgid "Parent Part"
msgstr ""
-#: part/models.py:2372 part/models.py:2420 part/models.py:2421
+#: part/models.py:2360 part/models.py:2408 part/models.py:2409
#: templates/InvenTree/settings/settings.html:226
msgid "Parameter Template"
msgstr ""
-#: part/models.py:2374
+#: part/models.py:2362
msgid "Data"
msgstr ""
-#: part/models.py:2374
+#: part/models.py:2362
msgid "Parameter Value"
msgstr ""
-#: part/models.py:2425 templates/InvenTree/settings/settings.html:235
+#: part/models.py:2413 templates/InvenTree/settings/settings.html:235
msgid "Default Value"
msgstr ""
-#: part/models.py:2426
+#: part/models.py:2414
msgid "Default Parameter Value"
msgstr ""
-#: part/models.py:2461
+#: part/models.py:2449
msgid "Part ID or part name"
msgstr ""
-#: part/models.py:2464 templates/js/translated/model_renderers.js:200
+#: part/models.py:2452 templates/js/translated/model_renderers.js:200
msgid "Part ID"
msgstr ""
-#: part/models.py:2465
+#: part/models.py:2453
msgid "Unique part ID value"
msgstr ""
-#: part/models.py:2468
+#: part/models.py:2456
msgid "Part Name"
msgstr ""
-#: part/models.py:2472
+#: part/models.py:2460
msgid "Part IPN"
msgstr ""
-#: part/models.py:2473
+#: part/models.py:2461
msgid "Part IPN value"
msgstr ""
-#: part/models.py:2476
+#: part/models.py:2464
msgid "Level"
msgstr ""
-#: part/models.py:2477
+#: part/models.py:2465
msgid "BOM level"
msgstr ""
-#: part/models.py:2546
+#: part/models.py:2534
msgid "Select parent part"
msgstr ""
-#: part/models.py:2554
+#: part/models.py:2542
msgid "Sub part"
msgstr ""
-#: part/models.py:2555
+#: part/models.py:2543
msgid "Select part to be used in BOM"
msgstr ""
-#: part/models.py:2561
+#: part/models.py:2549
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:2563 part/templates/part/upload_bom.html:58
-#: templates/js/translated/bom.js:877 templates/js/translated/bom.js:971
+#: part/models.py:2551 part/templates/part/upload_bom.html:58
+#: templates/js/translated/bom.js:871 templates/js/translated/bom.js:965
#: templates/js/translated/table_filters.js:92
msgid "Optional"
msgstr ""
-#: part/models.py:2563
+#: part/models.py:2551
msgid "This BOM item is optional"
msgstr ""
-#: part/models.py:2566 part/templates/part/upload_bom.html:55
+#: part/models.py:2554 part/templates/part/upload_bom.html:55
msgid "Overage"
msgstr ""
-#: part/models.py:2567
+#: part/models.py:2555
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr ""
-#: part/models.py:2570
+#: part/models.py:2558
msgid "BOM item reference"
msgstr ""
-#: part/models.py:2573
+#: part/models.py:2561
msgid "BOM item notes"
msgstr ""
-#: part/models.py:2575
+#: part/models.py:2563
msgid "Checksum"
msgstr ""
-#: part/models.py:2575
+#: part/models.py:2563
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:2579 part/templates/part/upload_bom.html:57
-#: templates/js/translated/bom.js:988
+#: part/models.py:2567 part/templates/part/upload_bom.html:57
+#: templates/js/translated/bom.js:982
#: templates/js/translated/table_filters.js:68
#: templates/js/translated/table_filters.js:88
msgid "Inherited"
msgstr ""
-#: part/models.py:2580
+#: part/models.py:2568
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr ""
-#: part/models.py:2585 part/templates/part/upload_bom.html:56
-#: templates/js/translated/bom.js:980
+#: part/models.py:2573 part/templates/part/upload_bom.html:56
+#: templates/js/translated/bom.js:974
msgid "Allow Variants"
msgstr ""
-#: part/models.py:2586
+#: part/models.py:2574
msgid "Stock items for variant parts can be used for this BOM item"
msgstr ""
-#: part/models.py:2664 stock/models.py:460
+#: part/models.py:2652 stock/models.py:460
msgid "Quantity must be integer value for trackable parts"
msgstr ""
-#: part/models.py:2673 part/models.py:2675
+#: part/models.py:2661 part/models.py:2663
msgid "Sub part must be specified"
msgstr ""
-#: part/models.py:2780
+#: part/models.py:2768
msgid "BOM Item Substitute"
msgstr ""
-#: part/models.py:2801
+#: part/models.py:2789
msgid "Substitute part cannot be the same as the master part"
msgstr ""
-#: part/models.py:2814
+#: part/models.py:2802
msgid "Parent BOM item"
msgstr ""
-#: part/models.py:2822
+#: part/models.py:2810
msgid "Substitute part"
msgstr ""
-#: part/models.py:2833
+#: part/models.py:2825
msgid "Part 1"
msgstr ""
-#: part/models.py:2837
+#: part/models.py:2829
msgid "Part 2"
msgstr ""
-#: part/models.py:2837
+#: part/models.py:2829
msgid "Select Related Part"
msgstr ""
-#: part/models.py:2868
-msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique"
+#: part/models.py:2847
+msgid "Part relationship cannot be created between a part and itself"
msgstr ""
-#: part/serializers.py:138 part/serializers.py:169 stock/serializers.py:163
+#: part/models.py:2851
+msgid "Duplicate relationship already exists"
+msgstr ""
+
+#: part/serializers.py:140 part/serializers.py:171 stock/serializers.py:163
msgid "Purchase currency of this stock item"
msgstr ""
-#: part/serializers.py:794
+#: part/serializers.py:796
msgid "Select part to copy BOM from"
msgstr ""
-#: part/serializers.py:802
+#: part/serializers.py:804
msgid "Remove Existing Data"
msgstr ""
-#: part/serializers.py:803
+#: part/serializers.py:805
msgid "Remove existing BOM items before copying"
msgstr ""
-#: part/serializers.py:808
+#: part/serializers.py:810
msgid "Include Inherited"
msgstr ""
-#: part/serializers.py:809
+#: part/serializers.py:811
msgid "Include BOM items which are inherited from templated parts"
msgstr ""
-#: part/serializers.py:814
+#: part/serializers.py:816
msgid "Skip Invalid Rows"
msgstr ""
-#: part/serializers.py:815
+#: part/serializers.py:817
msgid "Enable this option to skip invalid rows"
msgstr ""
-#: part/serializers.py:820
+#: part/serializers.py:822
msgid "Copy Substitute Parts"
msgstr ""
-#: part/serializers.py:821
+#: part/serializers.py:823
msgid "Copy substitute parts when duplicate BOM items"
msgstr ""
-#: part/serializers.py:861
+#: part/serializers.py:863
msgid "Clear Existing BOM"
msgstr ""
-#: part/serializers.py:862
+#: part/serializers.py:864
msgid "Delete existing BOM items before uploading"
msgstr ""
-#: part/serializers.py:892
+#: part/serializers.py:894
msgid "No part column specified"
msgstr ""
-#: part/serializers.py:935
+#: part/serializers.py:937
msgid "Multiple matching parts found"
msgstr ""
-#: part/serializers.py:938
+#: part/serializers.py:940
msgid "No matching part found"
msgstr ""
-#: part/serializers.py:941
+#: part/serializers.py:943
msgid "Part is not designated as a component"
msgstr ""
-#: part/serializers.py:950
+#: part/serializers.py:952
msgid "Quantity not provided"
msgstr ""
-#: part/serializers.py:958
+#: part/serializers.py:960
msgid "Invalid quantity"
msgstr ""
-#: part/serializers.py:979
+#: part/serializers.py:981
msgid "At least one BOM item is required"
msgstr ""
@@ -5088,10 +5135,10 @@ msgid "Part is virtual (not a physical part)"
msgstr ""
#: part/templates/part/part_base.html:143
-#: templates/js/translated/company.js:623
-#: templates/js/translated/company.js:882
+#: templates/js/translated/company.js:608
+#: templates/js/translated/company.js:867
#: templates/js/translated/model_renderers.js:192
-#: templates/js/translated/part.js:581 templates/js/translated/part.js:658
+#: templates/js/translated/part.js:625 templates/js/translated/part.js:702
msgid "Inactive"
msgstr ""
@@ -5120,13 +5167,13 @@ msgstr ""
msgid "Allocated to Sales Orders"
msgstr ""
-#: part/templates/part/part_base.html:232 templates/js/translated/bom.js:1009
+#: part/templates/part/part_base.html:232 templates/js/translated/bom.js:1003
msgid "Can Build"
msgstr ""
-#: part/templates/part/part_base.html:238 templates/js/translated/part.js:520
-#: templates/js/translated/part.js:540 templates/js/translated/part.js:1233
-#: templates/js/translated/part.js:1405 templates/js/translated/part.js:1421
+#: part/templates/part/part_base.html:238 templates/js/translated/part.js:564
+#: templates/js/translated/part.js:584 templates/js/translated/part.js:1277
+#: templates/js/translated/part.js:1449 templates/js/translated/part.js:1465
msgid "Building"
msgstr ""
@@ -5143,7 +5190,7 @@ msgstr ""
msgid "Search for serial number"
msgstr ""
-#: part/templates/part/part_base.html:443 part/templates/part/prices.html:147
+#: part/templates/part/part_base.html:443 part/templates/part/prices.html:149
msgid "Calculate"
msgstr ""
@@ -5161,54 +5208,55 @@ msgstr ""
#: part/templates/part/part_pricing.html:26
#: part/templates/part/part_pricing.html:52
-#: part/templates/part/part_pricing.html:100
-#: part/templates/part/part_pricing.html:115 part/templates/part/prices.html:28
-#: part/templates/part/prices.html:55 part/templates/part/prices.html:106
-#: part/templates/part/prices.html:123
+#: part/templates/part/part_pricing.html:103
+#: part/templates/part/part_pricing.html:118 part/templates/part/prices.html:28
+#: part/templates/part/prices.html:55 part/templates/part/prices.html:108
+#: part/templates/part/prices.html:125
msgid "Unit Cost"
msgstr ""
#: part/templates/part/part_pricing.html:32
#: part/templates/part/part_pricing.html:58
-#: part/templates/part/part_pricing.html:104
-#: part/templates/part/part_pricing.html:119 part/templates/part/prices.html:35
-#: part/templates/part/prices.html:62 part/templates/part/prices.html:111
-#: part/templates/part/prices.html:128
+#: part/templates/part/part_pricing.html:107
+#: part/templates/part/part_pricing.html:122 part/templates/part/prices.html:35
+#: part/templates/part/prices.html:62 part/templates/part/prices.html:113
+#: part/templates/part/prices.html:130
msgid "Total Cost"
msgstr ""
#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:43
-#: templates/js/translated/bom.js:963
+#: templates/js/translated/bom.js:957
msgid "No supplier pricing available"
msgstr ""
#: part/templates/part/part_pricing.html:48 part/templates/part/prices.html:52
-#: part/templates/part/prices.html:246
+#: part/templates/part/prices.html:248
msgid "BOM Pricing"
msgstr ""
-#: part/templates/part/part_pricing.html:65 part/templates/part/prices.html:72
+#: part/templates/part/part_pricing.html:66 part/templates/part/prices.html:72
msgid "Unit Purchase Price"
msgstr ""
-#: part/templates/part/part_pricing.html:71 part/templates/part/prices.html:79
+#: part/templates/part/part_pricing.html:72 part/templates/part/prices.html:79
msgid "Total Purchase Price"
msgstr ""
-#: part/templates/part/part_pricing.html:81 part/templates/part/prices.html:89
+#: part/templates/part/part_pricing.html:82 part/templates/part/prices.html:89
msgid "Note: BOM pricing is incomplete for this part"
msgstr ""
-#: part/templates/part/part_pricing.html:88 part/templates/part/prices.html:96
+#: part/templates/part/part_pricing.html:91 part/templates/part/prices.html:98
msgid "No BOM pricing available"
msgstr ""
-#: part/templates/part/part_pricing.html:97 part/templates/part/prices.html:105
+#: part/templates/part/part_pricing.html:100
+#: part/templates/part/prices.html:107
msgid "Internal Price"
msgstr ""
-#: part/templates/part/part_pricing.html:128
-#: part/templates/part/prices.html:137
+#: part/templates/part/part_pricing.html:131
+#: part/templates/part/prices.html:139
msgid "No pricing information is available for this part."
msgstr ""
@@ -5232,43 +5280,6 @@ msgstr ""
msgid "Select from existing images"
msgstr ""
-#: part/templates/part/partial_delete.html:9
-#, python-format
-msgid "Part '%(full_name)s' cannot be deleted as it is still marked as active.\n"
-"
Disable the \"Active\" part attribute and re-try.\n"
-" "
-msgstr ""
-
-#: part/templates/part/partial_delete.html:17
-#, python-format
-msgid "Are you sure you want to delete part '%(full_name)s'?"
-msgstr ""
-
-#: part/templates/part/partial_delete.html:22
-#, python-format
-msgid "This part is used in BOMs for %(count)s other parts. If you delete this part, the BOMs for the following parts will be updated"
-msgstr ""
-
-#: part/templates/part/partial_delete.html:32
-#, python-format
-msgid "There are %(count)s stock entries defined for this part. If you delete this part, the following stock entries will also be deleted:"
-msgstr ""
-
-#: part/templates/part/partial_delete.html:43
-#, python-format
-msgid "There are %(count)s manufacturers defined for this part. If you delete this part, the following manufacturer parts will also be deleted:"
-msgstr ""
-
-#: part/templates/part/partial_delete.html:54
-#, python-format
-msgid "There are %(count)s suppliers defined for this part. If you delete this part, the following supplier parts will also be deleted:"
-msgstr ""
-
-#: part/templates/part/partial_delete.html:67
-#, python-format
-msgid "There are %(count)s unique parts tracked for '%(full_name)s'. Deleting this part will permanently remove this tracking information."
-msgstr ""
-
#: part/templates/part/prices.html:19
msgid "Pricing ranges"
msgstr ""
@@ -5285,66 +5296,58 @@ msgstr ""
msgid "Show BOM cost"
msgstr ""
-#: part/templates/part/prices.html:120
+#: part/templates/part/prices.html:122
msgid "Show sale cost"
msgstr ""
-#: part/templates/part/prices.html:121
+#: part/templates/part/prices.html:123
msgid "Show sale price"
msgstr ""
-#: part/templates/part/prices.html:143
+#: part/templates/part/prices.html:145
msgid "Calculation parameters"
msgstr ""
-#: part/templates/part/prices.html:158 templates/js/translated/bom.js:957
+#: part/templates/part/prices.html:160 templates/js/translated/bom.js:951
msgid "Supplier Cost"
msgstr ""
-#: part/templates/part/prices.html:159 part/templates/part/prices.html:180
-#: part/templates/part/prices.html:204 part/templates/part/prices.html:234
-#: part/templates/part/prices.html:260 part/templates/part/prices.html:289
+#: part/templates/part/prices.html:161 part/templates/part/prices.html:182
+#: part/templates/part/prices.html:206 part/templates/part/prices.html:236
+#: part/templates/part/prices.html:262 part/templates/part/prices.html:291
msgid "Jump to overview"
msgstr ""
-#: part/templates/part/prices.html:184
+#: part/templates/part/prices.html:186
msgid "Stock Pricing"
msgstr ""
-#: part/templates/part/prices.html:193
+#: part/templates/part/prices.html:195
msgid "No stock pricing history is available for this part."
msgstr ""
-#: part/templates/part/prices.html:203
+#: part/templates/part/prices.html:205
msgid "Internal Cost"
msgstr ""
-#: part/templates/part/prices.html:218
+#: part/templates/part/prices.html:220
msgid "Add Internal Price Break"
msgstr ""
-#: part/templates/part/prices.html:233
+#: part/templates/part/prices.html:235
msgid "BOM Cost"
msgstr ""
-#: part/templates/part/prices.html:259
+#: part/templates/part/prices.html:261
msgid "Sale Cost"
msgstr ""
-#: part/templates/part/prices.html:300
+#: part/templates/part/prices.html:302
msgid "No sale pice history available for this part."
msgstr ""
-#: part/templates/part/set_category.html:9
-msgid "Set category for the following parts"
-msgstr ""
-
-#: part/templates/part/set_category.html:32
-msgid "Remove part"
-msgstr ""
-
-#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:543
-#: templates/js/translated/part.js:1221 templates/js/translated/part.js:1425
+#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:587
+#: templates/js/translated/part.js:1265 templates/js/translated/part.js:1469
msgid "No Stock"
msgstr ""
@@ -5407,56 +5410,39 @@ msgstr ""
msgid "{title} v{version}"
msgstr ""
-#: part/views.py:74
-msgid "Set Part Category"
-msgstr ""
-
-#: part/views.py:122
-#, python-brace-format
-msgid "Set category for {n} parts"
-msgstr ""
-
-#: part/views.py:193
+#: part/views.py:118
msgid "Match References"
msgstr ""
-#: part/views.py:494
+#: part/views.py:419
msgid "None"
msgstr ""
-#: part/views.py:556
+#: part/views.py:481
msgid "Part QR Code"
msgstr ""
-#: part/views.py:650
+#: part/views.py:575
msgid "Select Part Image"
msgstr ""
-#: part/views.py:676
+#: part/views.py:601
msgid "Updated part image"
msgstr ""
-#: part/views.py:679
+#: part/views.py:604
msgid "Part image not found"
msgstr ""
-#: part/views.py:768
-msgid "Confirm Part Deletion"
-msgstr ""
-
-#: part/views.py:776
-msgid "Part was deleted"
-msgstr ""
-
-#: part/views.py:785
+#: part/views.py:693
msgid "Part Pricing"
msgstr ""
-#: part/views.py:976
+#: part/views.py:884
msgid "Delete Part Category"
msgstr ""
-#: part/views.py:983
+#: part/views.py:891
msgid "Part category was deleted"
msgstr ""
@@ -5516,21 +5502,21 @@ msgstr ""
msgid "Label printing failed"
msgstr ""
-#: plugin/builtin/integration/core_notifications.py:28
+#: plugin/builtin/integration/core_notifications.py:29
msgid "InvenTree contributors"
msgstr ""
-#: plugin/builtin/integration/core_notifications.py:29
+#: plugin/builtin/integration/core_notifications.py:30
msgid "Integrated outgoing notificaton methods"
msgstr ""
-#: plugin/builtin/integration/core_notifications.py:33
-#: plugin/builtin/integration/core_notifications.py:52
-msgid "Enable email notifications"
-msgstr ""
-
#: plugin/builtin/integration/core_notifications.py:34
#: plugin/builtin/integration/core_notifications.py:53
+msgid "Enable email notifications"
+msgstr ""
+
+#: plugin/builtin/integration/core_notifications.py:35
+#: plugin/builtin/integration/core_notifications.py:54
msgid "Allow sending of emails for event notifications"
msgstr ""
@@ -5646,15 +5632,19 @@ msgstr ""
msgid "Either packagename of URL must be provided"
msgstr ""
-#: report/api.py:166
+#: report/api.py:179
msgid "No valid objects provided to template"
msgstr ""
-#: report/api.py:198 report/api.py:239
+#: report/api.py:215 report/api.py:256
#, python-brace-format
msgid "Template file '{template}' is missing or does not exist"
msgstr ""
+#: report/api.py:359
+msgid "Test report"
+msgstr ""
+
#: report/models.py:152
msgid "Template name"
msgstr ""
@@ -5757,7 +5747,7 @@ msgstr ""
#: templates/js/translated/build.js:1173 templates/js/translated/build.js:1671
#: templates/js/translated/model_renderers.js:106
#: templates/js/translated/order.js:115 templates/js/translated/order.js:3229
-#: templates/js/translated/order.js:3318 templates/js/translated/stock.js:435
+#: templates/js/translated/order.js:3318 templates/js/translated/stock.js:434
msgid "Serial Number"
msgstr ""
@@ -5766,19 +5756,19 @@ msgid "Test Results"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:93
-#: stock/models.py:2068
+#: stock/models.py:2072
msgid "Test"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:94
-#: stock/models.py:2074
+#: stock/models.py:2078
msgid "Result"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:97
#: templates/InvenTree/settings/plugin.html:51
#: templates/InvenTree/settings/plugin_settings.html:38
-#: templates/js/translated/order.js:1669 templates/js/translated/stock.js:2340
+#: templates/js/translated/order.js:1669 templates/js/translated/stock.js:2350
msgid "Date"
msgstr ""
@@ -5796,20 +5786,20 @@ msgid "Installed Items"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:137
-#: templates/js/translated/stock.js:555 templates/js/translated/stock.js:725
-#: templates/js/translated/stock.js:2589
+#: templates/js/translated/stock.js:554 templates/js/translated/stock.js:724
+#: templates/js/translated/stock.js:2599
msgid "Serial"
msgstr ""
-#: stock/api.py:504
+#: stock/api.py:505
msgid "Quantity is required"
msgstr ""
-#: stock/api.py:511
+#: stock/api.py:512
msgid "Valid part must be supplied"
msgstr ""
-#: stock/api.py:536
+#: stock/api.py:537
msgid "Serial numbers cannot be supplied for a non-trackable part"
msgstr ""
@@ -5917,7 +5907,7 @@ msgid "Destination Sales Order"
msgstr ""
#: stock/models.py:690 stock/templates/stock/item_base.html:429
-#: templates/js/translated/stock.js:1816
+#: templates/js/translated/stock.js:1826
msgid "Expiry Date"
msgstr ""
@@ -5971,79 +5961,79 @@ msgstr ""
msgid "Serial numbers already exist: {exists}"
msgstr ""
-#: stock/models.py:1321
+#: stock/models.py:1325
msgid "Stock item has been assigned to a sales order"
msgstr ""
-#: stock/models.py:1324
+#: stock/models.py:1328
msgid "Stock item is installed in another item"
msgstr ""
-#: stock/models.py:1327
+#: stock/models.py:1331
msgid "Stock item contains other items"
msgstr ""
-#: stock/models.py:1330
+#: stock/models.py:1334
msgid "Stock item has been assigned to a customer"
msgstr ""
-#: stock/models.py:1333
+#: stock/models.py:1337
msgid "Stock item is currently in production"
msgstr ""
-#: stock/models.py:1336
+#: stock/models.py:1340
msgid "Serialized stock cannot be merged"
msgstr ""
-#: stock/models.py:1343 stock/serializers.py:908
+#: stock/models.py:1347 stock/serializers.py:895
msgid "Duplicate stock items"
msgstr ""
-#: stock/models.py:1347
+#: stock/models.py:1351
msgid "Stock items must refer to the same part"
msgstr ""
-#: stock/models.py:1351
+#: stock/models.py:1355
msgid "Stock items must refer to the same supplier part"
msgstr ""
-#: stock/models.py:1355
+#: stock/models.py:1359
msgid "Stock status codes must match"
msgstr ""
-#: stock/models.py:1524
+#: stock/models.py:1528
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:1986
+#: stock/models.py:1990
msgid "Entry notes"
msgstr ""
-#: stock/models.py:2044
+#: stock/models.py:2048
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:2050
+#: stock/models.py:2054
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:2069
+#: stock/models.py:2073
msgid "Test name"
msgstr ""
-#: stock/models.py:2075
+#: stock/models.py:2079
msgid "Test result"
msgstr ""
-#: stock/models.py:2081
+#: stock/models.py:2085
msgid "Test output value"
msgstr ""
-#: stock/models.py:2088
+#: stock/models.py:2092
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:2094
+#: stock/models.py:2098
msgid "Test notes"
msgstr ""
@@ -6064,7 +6054,7 @@ msgstr ""
msgid "Enter serial numbers for new items"
msgstr ""
-#: stock/serializers.py:309 stock/serializers.py:865 stock/serializers.py:1098
+#: stock/serializers.py:309 stock/serializers.py:852 stock/serializers.py:1085
msgid "Destination stock location"
msgstr ""
@@ -6104,63 +6094,63 @@ msgstr ""
msgid "Destination location for returned item"
msgstr ""
-#: stock/serializers.py:720
+#: stock/serializers.py:707
msgid "Part must be salable"
msgstr ""
-#: stock/serializers.py:724
+#: stock/serializers.py:711
msgid "Item is allocated to a sales order"
msgstr ""
-#: stock/serializers.py:728
+#: stock/serializers.py:715
msgid "Item is allocated to a build order"
msgstr ""
-#: stock/serializers.py:759
+#: stock/serializers.py:746
msgid "Customer to assign stock items"
msgstr ""
-#: stock/serializers.py:765
+#: stock/serializers.py:752
msgid "Selected company is not a customer"
msgstr ""
-#: stock/serializers.py:773
+#: stock/serializers.py:760
msgid "Stock assignment notes"
msgstr ""
-#: stock/serializers.py:783 stock/serializers.py:1014
+#: stock/serializers.py:770 stock/serializers.py:1001
msgid "A list of stock items must be provided"
msgstr ""
-#: stock/serializers.py:872
+#: stock/serializers.py:859
msgid "Stock merging notes"
msgstr ""
-#: stock/serializers.py:877
+#: stock/serializers.py:864
msgid "Allow mismatched suppliers"
msgstr ""
-#: stock/serializers.py:878
+#: stock/serializers.py:865
msgid "Allow stock items with different supplier parts to be merged"
msgstr ""
-#: stock/serializers.py:883
+#: stock/serializers.py:870
msgid "Allow mismatched status"
msgstr ""
-#: stock/serializers.py:884
+#: stock/serializers.py:871
msgid "Allow stock items with different status codes to be merged"
msgstr ""
-#: stock/serializers.py:894
+#: stock/serializers.py:881
msgid "At least two stock items must be provided"
msgstr ""
-#: stock/serializers.py:976
+#: stock/serializers.py:963
msgid "StockItem primary key value"
msgstr ""
-#: stock/serializers.py:1004
+#: stock/serializers.py:991
msgid "Stock transaction notes"
msgstr ""
@@ -6185,7 +6175,7 @@ msgstr ""
msgid "Test Report"
msgstr ""
-#: stock/templates/stock/item.html:94
+#: stock/templates/stock/item.html:94 stock/templates/stock/item.html:298
msgid "Delete Test Data"
msgstr ""
@@ -6197,11 +6187,15 @@ msgstr ""
msgid "Installed Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:151 templates/js/translated/stock.js:2733
+#: stock/templates/stock/item.html:151 templates/js/translated/stock.js:2743
msgid "Install Stock Item"
msgstr ""
-#: stock/templates/stock/item.html:292 templates/js/translated/stock.js:1455
+#: stock/templates/stock/item.html:290
+msgid "Delete all test results for this stock item"
+msgstr ""
+
+#: stock/templates/stock/item.html:323 templates/js/translated/stock.js:1465
msgid "Add Test Result"
msgstr ""
@@ -6388,7 +6382,7 @@ msgid "Stale"
msgstr ""
#: stock/templates/stock/item_base.html:442
-#: templates/js/translated/stock.js:1832
+#: templates/js/translated/stock.js:1842
msgid "Last Updated"
msgstr ""
@@ -6529,7 +6523,7 @@ msgstr ""
msgid "Child Items"
msgstr ""
-#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:182
+#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:144
msgid "Convert Stock Item"
msgstr ""
@@ -6550,31 +6544,19 @@ msgstr ""
msgid "This action cannot be easily undone"
msgstr ""
-#: stock/views.py:113
+#: stock/views.py:111
msgid "Stock Location QR code"
msgstr ""
-#: stock/views.py:131
-msgid "Delete All Test Data"
-msgstr ""
-
-#: stock/views.py:149
-msgid "Confirm test data deletion"
-msgstr ""
-
-#: stock/views.py:150
-msgid "Check the confirmation box"
-msgstr ""
-
-#: stock/views.py:165
+#: stock/views.py:127
msgid "Stock Item QR Code"
msgstr ""
-#: stock/views.py:216
+#: stock/views.py:178
msgid "Delete Stock Location"
msgstr ""
-#: stock/views.py:229
+#: stock/views.py:191
msgid "Delete Stock Item"
msgstr ""
@@ -7317,8 +7299,8 @@ msgstr ""
#: templates/about.html:11 templates/about.html:105
#: templates/js/translated/bom.js:133 templates/js/translated/bom.js:621
-#: templates/js/translated/modals.js:56 templates/js/translated/modals.js:595
-#: templates/js/translated/modals.js:689 templates/js/translated/modals.js:997
+#: templates/js/translated/modals.js:56 templates/js/translated/modals.js:601
+#: templates/js/translated/modals.js:695 templates/js/translated/modals.js:1003
#: templates/js/translated/order.js:928 templates/modals.html:15
#: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50
msgid "Close"
@@ -7390,6 +7372,10 @@ msgstr ""
msgid "Please confirm that %(email)s is an email address for user %(user_display)s."
msgstr ""
+#: templates/account/email_confirm.html:20 templates/js/translated/forms.js:630
+msgid "Confirm"
+msgstr "אשר"
+
#: templates/account/email_confirm.html:27
#, python-format
msgid "This email confirmation link expired or is invalid. Please issue a new email confirmation request."
@@ -7562,7 +7548,7 @@ msgstr ""
msgid "Delete selected attachments"
msgstr ""
-#: templates/attachment_table.html:12 templates/js/translated/attachment.js:110
+#: templates/attachment_table.html:12 templates/js/translated/attachment.js:112
msgid "Delete Attachments"
msgstr ""
@@ -7596,15 +7582,15 @@ msgid "The following parts are low on required stock"
msgstr ""
#: templates/email/build_order_required_stock.html:18
-#: templates/js/translated/bom.js:1425
+#: templates/js/translated/bom.js:1419
msgid "Required Quantity"
msgstr ""
#: templates/email/build_order_required_stock.html:19
#: templates/email/low_stock_notification.html:18
-#: templates/js/translated/bom.js:890 templates/js/translated/build.js:1787
-#: templates/js/translated/build.js:2650 templates/js/translated/part.js:527
-#: templates/js/translated/part.js:530
+#: templates/js/translated/bom.js:884 templates/js/translated/build.js:1787
+#: templates/js/translated/build.js:2650 templates/js/translated/part.js:571
+#: templates/js/translated/part.js:574
#: templates/js/translated/table_filters.js:178
msgid "Available"
msgstr ""
@@ -7622,6 +7608,13 @@ msgstr ""
msgid "Minimum Quantity"
msgstr ""
+#: templates/email/new_order_assigned.html:9
+#: templates/email/overdue_build_order.html:9
+#: templates/email/overdue_purchase_order.html:9
+#: templates/email/overdue_sales_order.html:9
+msgid "Click on the following link to view this order"
+msgstr ""
+
#: templates/image_download.html:8
msgid "Specify URL for downloading image"
msgstr ""
@@ -7638,91 +7631,91 @@ msgstr ""
msgid "Remote image must not exceed maximum allowable file size"
msgstr ""
-#: templates/js/translated/api.js:235 templates/js/translated/modals.js:1067
+#: templates/js/translated/api.js:195 templates/js/translated/modals.js:1073
msgid "No Response"
msgstr ""
-#: templates/js/translated/api.js:236 templates/js/translated/modals.js:1068
+#: templates/js/translated/api.js:196 templates/js/translated/modals.js:1074
msgid "No response from the InvenTree server"
msgstr ""
-#: templates/js/translated/api.js:242
+#: templates/js/translated/api.js:202
msgid "Error 400: Bad request"
msgstr ""
-#: templates/js/translated/api.js:243
+#: templates/js/translated/api.js:203
msgid "API request returned error code 400"
msgstr ""
-#: templates/js/translated/api.js:247 templates/js/translated/modals.js:1077
+#: templates/js/translated/api.js:207 templates/js/translated/modals.js:1083
msgid "Error 401: Not Authenticated"
msgstr ""
-#: templates/js/translated/api.js:248 templates/js/translated/modals.js:1078
+#: templates/js/translated/api.js:208 templates/js/translated/modals.js:1084
msgid "Authentication credentials not supplied"
msgstr ""
-#: templates/js/translated/api.js:252 templates/js/translated/modals.js:1082
+#: templates/js/translated/api.js:212 templates/js/translated/modals.js:1088
msgid "Error 403: Permission Denied"
msgstr ""
-#: templates/js/translated/api.js:253 templates/js/translated/modals.js:1083
+#: templates/js/translated/api.js:213 templates/js/translated/modals.js:1089
msgid "You do not have the required permissions to access this function"
msgstr ""
-#: templates/js/translated/api.js:257 templates/js/translated/modals.js:1087
+#: templates/js/translated/api.js:217 templates/js/translated/modals.js:1093
msgid "Error 404: Resource Not Found"
msgstr ""
-#: templates/js/translated/api.js:258 templates/js/translated/modals.js:1088
+#: templates/js/translated/api.js:218 templates/js/translated/modals.js:1094
msgid "The requested resource could not be located on the server"
msgstr ""
-#: templates/js/translated/api.js:262
+#: templates/js/translated/api.js:222
msgid "Error 405: Method Not Allowed"
msgstr ""
-#: templates/js/translated/api.js:263
+#: templates/js/translated/api.js:223
msgid "HTTP method not allowed at URL"
msgstr ""
-#: templates/js/translated/api.js:267 templates/js/translated/modals.js:1092
+#: templates/js/translated/api.js:227 templates/js/translated/modals.js:1098
msgid "Error 408: Timeout"
msgstr ""
-#: templates/js/translated/api.js:268 templates/js/translated/modals.js:1093
+#: templates/js/translated/api.js:228 templates/js/translated/modals.js:1099
msgid "Connection timeout while requesting data from server"
msgstr ""
-#: templates/js/translated/api.js:271
+#: templates/js/translated/api.js:231
msgid "Unhandled Error Code"
msgstr ""
-#: templates/js/translated/api.js:272
+#: templates/js/translated/api.js:232
msgid "Error code"
msgstr ""
-#: templates/js/translated/attachment.js:96
+#: templates/js/translated/attachment.js:98
msgid "All selected attachments will be deleted"
msgstr ""
-#: templates/js/translated/attachment.js:156
+#: templates/js/translated/attachment.js:152
msgid "No attachments found"
msgstr ""
-#: templates/js/translated/attachment.js:180
+#: templates/js/translated/attachment.js:176
msgid "Edit Attachment"
msgstr ""
-#: templates/js/translated/attachment.js:246
+#: templates/js/translated/attachment.js:242
msgid "Upload Date"
msgstr ""
-#: templates/js/translated/attachment.js:262
+#: templates/js/translated/attachment.js:264
msgid "Edit attachment"
msgstr ""
-#: templates/js/translated/attachment.js:269
+#: templates/js/translated/attachment.js:271
msgid "Delete attachment"
msgstr ""
@@ -7755,7 +7748,7 @@ msgid "Unknown response from server"
msgstr ""
#: templates/js/translated/barcode.js:182
-#: templates/js/translated/modals.js:1057
+#: templates/js/translated/modals.js:1063
msgid "Invalid server response"
msgstr ""
@@ -7783,7 +7776,7 @@ msgstr ""
msgid "Unlink"
msgstr ""
-#: templates/js/translated/barcode.js:456 templates/js/translated/stock.js:999
+#: templates/js/translated/barcode.js:456 templates/js/translated/stock.js:998
msgid "Remove stock item"
msgstr ""
@@ -7918,89 +7911,89 @@ msgstr ""
msgid "Edit BOM Item Substitutes"
msgstr ""
-#: templates/js/translated/bom.js:682
+#: templates/js/translated/bom.js:684
msgid "All selected BOM items will be deleted"
msgstr ""
-#: templates/js/translated/bom.js:697
+#: templates/js/translated/bom.js:699
msgid "Delete selected BOM items?"
msgstr ""
-#: templates/js/translated/bom.js:824
+#: templates/js/translated/bom.js:818
msgid "Load BOM for subassembly"
msgstr ""
-#: templates/js/translated/bom.js:834
+#: templates/js/translated/bom.js:828
msgid "Substitutes Available"
msgstr ""
-#: templates/js/translated/bom.js:838 templates/js/translated/build.js:1769
+#: templates/js/translated/bom.js:832 templates/js/translated/build.js:1769
msgid "Variant stock allowed"
msgstr ""
-#: templates/js/translated/bom.js:906 templates/js/translated/build.js:1814
+#: templates/js/translated/bom.js:900 templates/js/translated/build.js:1814
#: templates/js/translated/order.js:3562
msgid "No Stock Available"
msgstr ""
-#: templates/js/translated/bom.js:910 templates/js/translated/build.js:1818
+#: templates/js/translated/bom.js:904 templates/js/translated/build.js:1818
msgid "Includes variant and substitute stock"
msgstr ""
-#: templates/js/translated/bom.js:912 templates/js/translated/build.js:1820
-#: templates/js/translated/part.js:690
+#: templates/js/translated/bom.js:906 templates/js/translated/build.js:1820
+#: templates/js/translated/part.js:734
msgid "Includes variant stock"
msgstr ""
-#: templates/js/translated/bom.js:914 templates/js/translated/build.js:1822
+#: templates/js/translated/bom.js:908 templates/js/translated/build.js:1822
msgid "Includes substitute stock"
msgstr ""
-#: templates/js/translated/bom.js:928
+#: templates/js/translated/bom.js:922
msgid "Substitutes"
msgstr ""
-#: templates/js/translated/bom.js:943
+#: templates/js/translated/bom.js:937
msgid "Purchase Price Range"
msgstr ""
-#: templates/js/translated/bom.js:950
+#: templates/js/translated/bom.js:944
msgid "Purchase Price Average"
msgstr ""
-#: templates/js/translated/bom.js:999 templates/js/translated/bom.js:1090
+#: templates/js/translated/bom.js:993 templates/js/translated/bom.js:1084
msgid "View BOM"
msgstr ""
-#: templates/js/translated/bom.js:1061
+#: templates/js/translated/bom.js:1055
msgid "Validate BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:1063
+#: templates/js/translated/bom.js:1057
msgid "This line has been validated"
msgstr ""
-#: templates/js/translated/bom.js:1065
+#: templates/js/translated/bom.js:1059
msgid "Edit substitute parts"
msgstr ""
-#: templates/js/translated/bom.js:1067 templates/js/translated/bom.js:1228
+#: templates/js/translated/bom.js:1061 templates/js/translated/bom.js:1222
msgid "Edit BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:1069
+#: templates/js/translated/bom.js:1063
msgid "Delete BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:1164 templates/js/translated/build.js:1615
+#: templates/js/translated/bom.js:1158 templates/js/translated/build.js:1615
msgid "No BOM items found"
msgstr ""
-#: templates/js/translated/bom.js:1408 templates/js/translated/build.js:1753
+#: templates/js/translated/bom.js:1402 templates/js/translated/build.js:1753
msgid "Required Part"
msgstr ""
-#: templates/js/translated/bom.js:1430
+#: templates/js/translated/bom.js:1424
msgid "Inherited from parent BOM"
msgstr ""
@@ -8040,13 +8033,13 @@ msgstr ""
msgid "Complete Build Order"
msgstr ""
-#: templates/js/translated/build.js:259 templates/js/translated/stock.js:91
-#: templates/js/translated/stock.js:181
+#: templates/js/translated/build.js:259 templates/js/translated/stock.js:90
+#: templates/js/translated/stock.js:180
msgid "Next available serial number"
msgstr ""
-#: templates/js/translated/build.js:261 templates/js/translated/stock.js:93
-#: templates/js/translated/stock.js:183
+#: templates/js/translated/build.js:261 templates/js/translated/stock.js:92
+#: templates/js/translated/stock.js:182
msgid "Latest serial number"
msgstr ""
@@ -8259,9 +8252,9 @@ msgstr ""
msgid "No builds matching query"
msgstr ""
-#: templates/js/translated/build.js:2448 templates/js/translated/part.js:1314
-#: templates/js/translated/part.js:1729 templates/js/translated/stock.js:1619
-#: templates/js/translated/stock.js:2277
+#: templates/js/translated/build.js:2448 templates/js/translated/part.js:1358
+#: templates/js/translated/part.js:1825 templates/js/translated/stock.js:1629
+#: templates/js/translated/stock.js:2287
msgid "Select"
msgstr ""
@@ -8273,7 +8266,7 @@ msgstr ""
msgid "Progress"
msgstr ""
-#: templates/js/translated/build.js:2532 templates/js/translated/stock.js:2519
+#: templates/js/translated/build.js:2532 templates/js/translated/stock.js:2529
msgid "No user information"
msgstr ""
@@ -8285,107 +8278,107 @@ msgstr ""
msgid "No parts allocated for"
msgstr ""
-#: templates/js/translated/company.js:66
+#: templates/js/translated/company.js:65
msgid "Add Manufacturer"
msgstr ""
-#: templates/js/translated/company.js:79 templates/js/translated/company.js:169
+#: templates/js/translated/company.js:78 templates/js/translated/company.js:168
msgid "Add Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:100
+#: templates/js/translated/company.js:99
msgid "Edit Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:157 templates/js/translated/order.js:506
+#: templates/js/translated/company.js:156 templates/js/translated/order.js:506
msgid "Add Supplier"
msgstr ""
-#: templates/js/translated/company.js:185
+#: templates/js/translated/company.js:184
msgid "Add Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:200
+#: templates/js/translated/company.js:199
msgid "Edit Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:248
+#: templates/js/translated/company.js:249
msgid "All selected supplier parts will be deleted"
msgstr ""
-#: templates/js/translated/company.js:263
+#: templates/js/translated/company.js:264
msgid "Delete Supplier Parts"
msgstr ""
-#: templates/js/translated/company.js:342
+#: templates/js/translated/company.js:336
msgid "Add new Company"
msgstr ""
-#: templates/js/translated/company.js:419
+#: templates/js/translated/company.js:413
msgid "Parts Supplied"
msgstr ""
-#: templates/js/translated/company.js:428
+#: templates/js/translated/company.js:422
msgid "Parts Manufactured"
msgstr ""
-#: templates/js/translated/company.js:443
+#: templates/js/translated/company.js:437
msgid "No company information found"
msgstr ""
-#: templates/js/translated/company.js:482
+#: templates/js/translated/company.js:478
msgid "All selected manufacturer parts will be deleted"
msgstr ""
-#: templates/js/translated/company.js:496
+#: templates/js/translated/company.js:492
msgid "Delete Manufacturer Parts"
msgstr ""
-#: templates/js/translated/company.js:535
+#: templates/js/translated/company.js:526
msgid "All selected parameters will be deleted"
msgstr ""
-#: templates/js/translated/company.js:548
+#: templates/js/translated/company.js:539
msgid "Delete Parameters"
msgstr ""
-#: templates/js/translated/company.js:595
+#: templates/js/translated/company.js:580
msgid "No manufacturer parts found"
msgstr ""
-#: templates/js/translated/company.js:615
-#: templates/js/translated/company.js:874 templates/js/translated/part.js:565
-#: templates/js/translated/part.js:650
+#: templates/js/translated/company.js:600
+#: templates/js/translated/company.js:859 templates/js/translated/part.js:609
+#: templates/js/translated/part.js:694
msgid "Template part"
msgstr ""
-#: templates/js/translated/company.js:619
-#: templates/js/translated/company.js:878 templates/js/translated/part.js:569
-#: templates/js/translated/part.js:654
+#: templates/js/translated/company.js:604
+#: templates/js/translated/company.js:863 templates/js/translated/part.js:613
+#: templates/js/translated/part.js:698
msgid "Assembled part"
msgstr ""
-#: templates/js/translated/company.js:747 templates/js/translated/part.js:757
+#: templates/js/translated/company.js:732 templates/js/translated/part.js:801
msgid "No parameters found"
msgstr ""
-#: templates/js/translated/company.js:784 templates/js/translated/part.js:799
+#: templates/js/translated/company.js:769 templates/js/translated/part.js:843
msgid "Edit parameter"
msgstr ""
-#: templates/js/translated/company.js:785 templates/js/translated/part.js:800
+#: templates/js/translated/company.js:770 templates/js/translated/part.js:844
msgid "Delete parameter"
msgstr ""
-#: templates/js/translated/company.js:804 templates/js/translated/part.js:817
+#: templates/js/translated/company.js:789 templates/js/translated/part.js:861
msgid "Edit Parameter"
msgstr ""
-#: templates/js/translated/company.js:815 templates/js/translated/part.js:829
+#: templates/js/translated/company.js:800 templates/js/translated/part.js:873
msgid "Delete Parameter"
msgstr ""
-#: templates/js/translated/company.js:854
+#: templates/js/translated/company.js:839
msgid "No supplier parts found"
msgstr ""
@@ -8448,36 +8441,36 @@ msgstr ""
msgid "Keep this form open"
msgstr ""
-#: templates/js/translated/forms.js:756
+#: templates/js/translated/forms.js:757
msgid "Enter a valid number"
msgstr ""
-#: templates/js/translated/forms.js:1248 templates/modals.html:19
+#: templates/js/translated/forms.js:1249 templates/modals.html:19
#: templates/modals.html:43
msgid "Form errors exist"
msgstr ""
-#: templates/js/translated/forms.js:1681
+#: templates/js/translated/forms.js:1682
msgid "No results found"
msgstr ""
-#: templates/js/translated/forms.js:1896 templates/search.html:29
+#: templates/js/translated/forms.js:1897 templates/search.html:29
msgid "Searching"
msgstr ""
-#: templates/js/translated/forms.js:2149
+#: templates/js/translated/forms.js:2150
msgid "Clear input"
msgstr ""
-#: templates/js/translated/forms.js:2615
+#: templates/js/translated/forms.js:2616
msgid "File Column"
msgstr ""
-#: templates/js/translated/forms.js:2615
+#: templates/js/translated/forms.js:2616
msgid "Field Name"
msgstr ""
-#: templates/js/translated/forms.js:2627
+#: templates/js/translated/forms.js:2628
msgid "Select Columns"
msgstr ""
@@ -8498,7 +8491,7 @@ msgid "Labels sent to printer"
msgstr ""
#: templates/js/translated/label.js:60 templates/js/translated/report.js:118
-#: templates/js/translated/stock.js:1023
+#: templates/js/translated/stock.js:1022
msgid "Select Stock Items"
msgstr ""
@@ -8552,12 +8545,12 @@ msgid "Select Label Template"
msgstr ""
#: templates/js/translated/modals.js:82 templates/js/translated/modals.js:142
-#: templates/js/translated/modals.js:621
+#: templates/js/translated/modals.js:627
msgid "Cancel"
msgstr ""
#: templates/js/translated/modals.js:83 templates/js/translated/modals.js:141
-#: templates/js/translated/modals.js:688 templates/js/translated/modals.js:996
+#: templates/js/translated/modals.js:694 templates/js/translated/modals.js:1002
#: templates/modals.html:28 templates/modals.html:51
msgid "Submit"
msgstr ""
@@ -8566,47 +8559,47 @@ msgstr ""
msgid "Form Title"
msgstr ""
-#: templates/js/translated/modals.js:403
+#: templates/js/translated/modals.js:421
msgid "Waiting for server..."
msgstr ""
-#: templates/js/translated/modals.js:562
+#: templates/js/translated/modals.js:568
msgid "Show Error Information"
msgstr ""
-#: templates/js/translated/modals.js:620
+#: templates/js/translated/modals.js:626
msgid "Accept"
msgstr ""
-#: templates/js/translated/modals.js:677
+#: templates/js/translated/modals.js:683
msgid "Loading Data"
msgstr ""
-#: templates/js/translated/modals.js:948
+#: templates/js/translated/modals.js:954
msgid "Invalid response from server"
msgstr ""
-#: templates/js/translated/modals.js:948
+#: templates/js/translated/modals.js:954
msgid "Form data missing from server response"
msgstr ""
-#: templates/js/translated/modals.js:960
+#: templates/js/translated/modals.js:966
msgid "Error posting form data"
msgstr ""
-#: templates/js/translated/modals.js:1057
+#: templates/js/translated/modals.js:1063
msgid "JSON response missing form data"
msgstr ""
-#: templates/js/translated/modals.js:1072
+#: templates/js/translated/modals.js:1078
msgid "Error 400: Bad Request"
msgstr ""
-#: templates/js/translated/modals.js:1073
+#: templates/js/translated/modals.js:1079
msgid "Server returned error code 400"
msgstr ""
-#: templates/js/translated/modals.js:1096
+#: templates/js/translated/modals.js:1102
msgid "Error requesting form data"
msgstr ""
@@ -8656,11 +8649,11 @@ msgstr ""
msgid "Mark as read"
msgstr ""
-#: templates/js/translated/notification.js:259
+#: templates/js/translated/notification.js:260
msgid "No unread notifications"
msgstr ""
-#: templates/js/translated/notification.js:300 templates/notifications.html:10
+#: templates/js/translated/notification.js:302 templates/notifications.html:10
msgid "Notifications will load here"
msgstr ""
@@ -8804,7 +8797,7 @@ msgstr ""
msgid "Quantity to receive"
msgstr ""
-#: templates/js/translated/order.js:1225 templates/js/translated/stock.js:2080
+#: templates/js/translated/order.js:1225 templates/js/translated/stock.js:2090
msgid "Stock Status"
msgstr ""
@@ -8828,7 +8821,7 @@ msgstr ""
msgid "Receive Purchase Order Items"
msgstr ""
-#: templates/js/translated/order.js:1602 templates/js/translated/part.js:870
+#: templates/js/translated/order.js:1602 templates/js/translated/part.js:914
msgid "No purchase orders found"
msgstr ""
@@ -8863,7 +8856,7 @@ msgstr ""
#: templates/js/translated/order.js:1937 templates/js/translated/order.js:2139
#: templates/js/translated/order.js:3467 templates/js/translated/order.js:3978
-#: templates/js/translated/part.js:1948 templates/js/translated/part.js:2301
+#: templates/js/translated/part.js:2044 templates/js/translated/part.js:2397
msgid "Unit Price"
msgstr ""
@@ -8873,11 +8866,11 @@ msgid "Total Price"
msgstr ""
#: templates/js/translated/order.js:1993 templates/js/translated/order.js:3525
-#: templates/js/translated/part.js:979
+#: templates/js/translated/part.js:1023
msgid "This line item is overdue"
msgstr ""
-#: templates/js/translated/order.js:2052 templates/js/translated/part.js:1025
+#: templates/js/translated/order.js:2052 templates/js/translated/part.js:1069
msgid "Receive line item"
msgstr ""
@@ -8998,7 +8991,7 @@ msgid "Delete Stock Allocation"
msgstr ""
#: templates/js/translated/order.js:3243 templates/js/translated/order.js:3332
-#: templates/js/translated/stock.js:1535
+#: templates/js/translated/stock.js:1545
msgid "Shipped to customer"
msgstr ""
@@ -9138,165 +9131,209 @@ msgstr ""
msgid "Create Part Variant"
msgstr ""
+#: templates/js/translated/part.js:405
+msgid "Active Part"
+msgstr ""
+
+#: templates/js/translated/part.js:406
+msgid "Part cannot be deleted as it is currently active"
+msgstr ""
+
+#: templates/js/translated/part.js:420
+msgid "Deleting this part cannot be reversed"
+msgstr ""
+
+#: templates/js/translated/part.js:422
+msgid "Any stock items for this part will be deleted"
+msgstr ""
+
#: templates/js/translated/part.js:423
+msgid "This part will be removed from any Bills of Material"
+msgstr ""
+
+#: templates/js/translated/part.js:424
+msgid "All manufacturer and supplier information for this part will be deleted"
+msgstr ""
+
+#: templates/js/translated/part.js:431
+msgid "Delete Part"
+msgstr ""
+
+#: templates/js/translated/part.js:467
msgid "You are subscribed to notifications for this item"
msgstr ""
-#: templates/js/translated/part.js:425
+#: templates/js/translated/part.js:469
msgid "You have subscribed to notifications for this item"
msgstr ""
-#: templates/js/translated/part.js:430
+#: templates/js/translated/part.js:474
msgid "Subscribe to notifications for this item"
msgstr ""
-#: templates/js/translated/part.js:432
+#: templates/js/translated/part.js:476
msgid "You have unsubscribed to notifications for this item"
msgstr ""
-#: templates/js/translated/part.js:449
+#: templates/js/translated/part.js:493
msgid "Validating the BOM will mark each line item as valid"
msgstr ""
-#: templates/js/translated/part.js:459
+#: templates/js/translated/part.js:503
msgid "Validate Bill of Materials"
msgstr ""
-#: templates/js/translated/part.js:462
+#: templates/js/translated/part.js:506
msgid "Validated Bill of Materials"
msgstr ""
-#: templates/js/translated/part.js:487
+#: templates/js/translated/part.js:531
msgid "Copy Bill of Materials"
msgstr ""
-#: templates/js/translated/part.js:513 templates/js/translated/part.js:1397
+#: templates/js/translated/part.js:557 templates/js/translated/part.js:1441
#: templates/js/translated/table_filters.js:452
msgid "Low stock"
msgstr ""
-#: templates/js/translated/part.js:523 templates/js/translated/part.js:1409
+#: templates/js/translated/part.js:567 templates/js/translated/part.js:1453
msgid "No stock available"
msgstr ""
-#: templates/js/translated/part.js:557 templates/js/translated/part.js:642
+#: templates/js/translated/part.js:601 templates/js/translated/part.js:686
msgid "Trackable part"
msgstr ""
-#: templates/js/translated/part.js:561 templates/js/translated/part.js:646
+#: templates/js/translated/part.js:605 templates/js/translated/part.js:690
msgid "Virtual part"
msgstr ""
-#: templates/js/translated/part.js:573
+#: templates/js/translated/part.js:617
msgid "Subscribed part"
msgstr ""
-#: templates/js/translated/part.js:577
+#: templates/js/translated/part.js:621
msgid "Salable part"
msgstr ""
-#: templates/js/translated/part.js:705
+#: templates/js/translated/part.js:749
msgid "No variants found"
msgstr ""
-#: templates/js/translated/part.js:1095
+#: templates/js/translated/part.js:1139
msgid "Delete part relationship"
msgstr ""
-#: templates/js/translated/part.js:1119
+#: templates/js/translated/part.js:1163
msgid "Delete Part Relationship"
msgstr ""
-#: templates/js/translated/part.js:1184 templates/js/translated/part.js:1480
+#: templates/js/translated/part.js:1228 templates/js/translated/part.js:1524
msgid "No parts found"
msgstr ""
-#: templates/js/translated/part.js:1223
+#: templates/js/translated/part.js:1267
msgid "Not available"
msgstr ""
-#: templates/js/translated/part.js:1374
+#: templates/js/translated/part.js:1418
msgid "No category"
msgstr ""
-#: templates/js/translated/part.js:1504 templates/js/translated/part.js:1664
-#: templates/js/translated/stock.js:2238
+#: templates/js/translated/part.js:1548 templates/js/translated/part.js:1760
+#: templates/js/translated/stock.js:2248
msgid "Display as list"
msgstr ""
-#: templates/js/translated/part.js:1520
+#: templates/js/translated/part.js:1564
msgid "Display as grid"
msgstr ""
-#: templates/js/translated/part.js:1683 templates/js/translated/stock.js:2257
+#: templates/js/translated/part.js:1630
+msgid "Set the part category for the selected parts"
+msgstr ""
+
+#: templates/js/translated/part.js:1635
+msgid "Set Part Category"
+msgstr ""
+
+#: templates/js/translated/part.js:1640
+msgid "Select Part Category"
+msgstr ""
+
+#: templates/js/translated/part.js:1653
+msgid "Category is required"
+msgstr ""
+
+#: templates/js/translated/part.js:1779 templates/js/translated/stock.js:2267
msgid "Display as tree"
msgstr ""
-#: templates/js/translated/part.js:1747
+#: templates/js/translated/part.js:1843
msgid "Subscribed category"
msgstr ""
-#: templates/js/translated/part.js:1761 templates/js/translated/stock.js:2301
+#: templates/js/translated/part.js:1857 templates/js/translated/stock.js:2311
msgid "Path"
msgstr ""
-#: templates/js/translated/part.js:1805
+#: templates/js/translated/part.js:1901
msgid "No test templates matching query"
msgstr ""
-#: templates/js/translated/part.js:1856 templates/js/translated/stock.js:1233
+#: templates/js/translated/part.js:1952 templates/js/translated/stock.js:1243
msgid "Edit test result"
msgstr ""
-#: templates/js/translated/part.js:1857 templates/js/translated/stock.js:1234
-#: templates/js/translated/stock.js:1493
+#: templates/js/translated/part.js:1953 templates/js/translated/stock.js:1244
+#: templates/js/translated/stock.js:1503
msgid "Delete test result"
msgstr ""
-#: templates/js/translated/part.js:1863
+#: templates/js/translated/part.js:1959
msgid "This test is defined for a parent part"
msgstr ""
-#: templates/js/translated/part.js:1885
+#: templates/js/translated/part.js:1981
msgid "Edit Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:1899
+#: templates/js/translated/part.js:1995
msgid "Delete Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:1924
+#: templates/js/translated/part.js:2020
#, python-brace-format
msgid "No ${human_name} information found"
msgstr ""
-#: templates/js/translated/part.js:1981
+#: templates/js/translated/part.js:2077
#, python-brace-format
msgid "Edit ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:1982
+#: templates/js/translated/part.js:2078
#, python-brace-format
msgid "Delete ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:2096
+#: templates/js/translated/part.js:2192
msgid "Current Stock"
msgstr ""
-#: templates/js/translated/part.js:2129
+#: templates/js/translated/part.js:2225
msgid "No scheduling information available for this part"
msgstr ""
-#: templates/js/translated/part.js:2155
+#: templates/js/translated/part.js:2251
msgid "Scheduled Stock Quantities"
msgstr ""
-#: templates/js/translated/part.js:2225
+#: templates/js/translated/part.js:2321
msgid "Single Price"
msgstr ""
-#: templates/js/translated/part.js:2244
+#: templates/js/translated/part.js:2340
msgid "Single Price Difference"
msgstr ""
@@ -9378,360 +9415,360 @@ msgstr ""
msgid "Remove results"
msgstr ""
-#: templates/js/translated/stock.js:73
+#: templates/js/translated/stock.js:72
msgid "Serialize Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:101
+#: templates/js/translated/stock.js:100
msgid "Confirm Stock Serialization"
msgstr ""
-#: templates/js/translated/stock.js:110
+#: templates/js/translated/stock.js:109
msgid "Parent stock location"
msgstr ""
-#: templates/js/translated/stock.js:139
+#: templates/js/translated/stock.js:138
msgid "Edit Stock Location"
msgstr ""
-#: templates/js/translated/stock.js:154
+#: templates/js/translated/stock.js:153
msgid "New Stock Location"
msgstr ""
-#: templates/js/translated/stock.js:194
+#: templates/js/translated/stock.js:193
msgid "This part cannot be serialized"
msgstr ""
-#: templates/js/translated/stock.js:233
+#: templates/js/translated/stock.js:232
msgid "Enter initial quantity for this stock item"
msgstr ""
-#: templates/js/translated/stock.js:239
+#: templates/js/translated/stock.js:238
msgid "Enter serial numbers for new stock (or leave blank)"
msgstr ""
-#: templates/js/translated/stock.js:304
+#: templates/js/translated/stock.js:303
msgid "Stock item duplicated"
msgstr ""
-#: templates/js/translated/stock.js:324
+#: templates/js/translated/stock.js:323
msgid "Duplicate Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:344
+#: templates/js/translated/stock.js:343
msgid "Edit Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:394
+#: templates/js/translated/stock.js:393
msgid "Created new stock item"
msgstr ""
-#: templates/js/translated/stock.js:407
+#: templates/js/translated/stock.js:406
msgid "Created multiple stock items"
msgstr ""
-#: templates/js/translated/stock.js:432
+#: templates/js/translated/stock.js:431
msgid "Find Serial Number"
msgstr ""
-#: templates/js/translated/stock.js:436 templates/js/translated/stock.js:437
+#: templates/js/translated/stock.js:435 templates/js/translated/stock.js:436
msgid "Enter serial number"
msgstr ""
-#: templates/js/translated/stock.js:453
+#: templates/js/translated/stock.js:452
msgid "Enter a serial number"
msgstr ""
-#: templates/js/translated/stock.js:473
+#: templates/js/translated/stock.js:472
msgid "No matching serial number"
msgstr ""
-#: templates/js/translated/stock.js:482
+#: templates/js/translated/stock.js:481
msgid "More than one matching result found"
msgstr ""
-#: templates/js/translated/stock.js:605
+#: templates/js/translated/stock.js:604
msgid "Confirm stock assignment"
msgstr ""
-#: templates/js/translated/stock.js:606
+#: templates/js/translated/stock.js:605
msgid "Assign Stock to Customer"
msgstr ""
-#: templates/js/translated/stock.js:683
+#: templates/js/translated/stock.js:682
msgid "Warning: Merge operation cannot be reversed"
msgstr ""
-#: templates/js/translated/stock.js:684
+#: templates/js/translated/stock.js:683
msgid "Some information will be lost when merging stock items"
msgstr ""
-#: templates/js/translated/stock.js:686
+#: templates/js/translated/stock.js:685
msgid "Stock transaction history will be deleted for merged items"
msgstr ""
-#: templates/js/translated/stock.js:687
+#: templates/js/translated/stock.js:686
msgid "Supplier part information will be deleted for merged items"
msgstr ""
-#: templates/js/translated/stock.js:773
+#: templates/js/translated/stock.js:772
msgid "Confirm stock item merge"
msgstr ""
-#: templates/js/translated/stock.js:774
+#: templates/js/translated/stock.js:773
msgid "Merge Stock Items"
msgstr ""
-#: templates/js/translated/stock.js:869
+#: templates/js/translated/stock.js:868
msgid "Transfer Stock"
msgstr ""
-#: templates/js/translated/stock.js:870
+#: templates/js/translated/stock.js:869
msgid "Move"
msgstr ""
-#: templates/js/translated/stock.js:876
+#: templates/js/translated/stock.js:875
msgid "Count Stock"
msgstr ""
-#: templates/js/translated/stock.js:877
+#: templates/js/translated/stock.js:876
msgid "Count"
msgstr ""
-#: templates/js/translated/stock.js:881
+#: templates/js/translated/stock.js:880
msgid "Remove Stock"
msgstr ""
-#: templates/js/translated/stock.js:882
+#: templates/js/translated/stock.js:881
msgid "Take"
msgstr ""
-#: templates/js/translated/stock.js:886
+#: templates/js/translated/stock.js:885
msgid "Add Stock"
msgstr ""
-#: templates/js/translated/stock.js:887 users/models.py:215
+#: templates/js/translated/stock.js:886 users/models.py:215
msgid "Add"
msgstr ""
-#: templates/js/translated/stock.js:891
+#: templates/js/translated/stock.js:890
msgid "Delete Stock"
msgstr ""
-#: templates/js/translated/stock.js:984
+#: templates/js/translated/stock.js:983
msgid "Quantity cannot be adjusted for serialized stock"
msgstr ""
-#: templates/js/translated/stock.js:984
+#: templates/js/translated/stock.js:983
msgid "Specify stock quantity"
msgstr ""
-#: templates/js/translated/stock.js:1024
+#: templates/js/translated/stock.js:1023
msgid "You must select at least one available stock item"
msgstr ""
-#: templates/js/translated/stock.js:1047
+#: templates/js/translated/stock.js:1046
msgid "Confirm stock adjustment"
msgstr ""
-#: templates/js/translated/stock.js:1172
+#: templates/js/translated/stock.js:1182
msgid "PASS"
msgstr ""
-#: templates/js/translated/stock.js:1174
+#: templates/js/translated/stock.js:1184
msgid "FAIL"
msgstr ""
-#: templates/js/translated/stock.js:1179
+#: templates/js/translated/stock.js:1189
msgid "NO RESULT"
msgstr ""
-#: templates/js/translated/stock.js:1226
+#: templates/js/translated/stock.js:1236
msgid "Pass test"
msgstr ""
-#: templates/js/translated/stock.js:1229
+#: templates/js/translated/stock.js:1239
msgid "Add test result"
msgstr ""
-#: templates/js/translated/stock.js:1255
+#: templates/js/translated/stock.js:1265
msgid "No test results found"
msgstr ""
-#: templates/js/translated/stock.js:1311
+#: templates/js/translated/stock.js:1321
msgid "Test Date"
msgstr ""
-#: templates/js/translated/stock.js:1476
+#: templates/js/translated/stock.js:1486
msgid "Edit Test Result"
msgstr ""
-#: templates/js/translated/stock.js:1498
+#: templates/js/translated/stock.js:1508
msgid "Delete Test Result"
msgstr ""
-#: templates/js/translated/stock.js:1527
+#: templates/js/translated/stock.js:1537
msgid "In production"
msgstr ""
-#: templates/js/translated/stock.js:1531
+#: templates/js/translated/stock.js:1541
msgid "Installed in Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:1539
+#: templates/js/translated/stock.js:1549
msgid "Assigned to Sales Order"
msgstr ""
-#: templates/js/translated/stock.js:1545
+#: templates/js/translated/stock.js:1555
msgid "No stock location set"
msgstr ""
-#: templates/js/translated/stock.js:1712
+#: templates/js/translated/stock.js:1722
msgid "Stock item is in production"
msgstr ""
-#: templates/js/translated/stock.js:1717
+#: templates/js/translated/stock.js:1727
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:1720
+#: templates/js/translated/stock.js:1730
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:1723
+#: templates/js/translated/stock.js:1733
msgid "Serialized stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:1725
+#: templates/js/translated/stock.js:1735
msgid "Stock item has been fully allocated"
msgstr ""
-#: templates/js/translated/stock.js:1727
+#: templates/js/translated/stock.js:1737
msgid "Stock item has been partially allocated"
msgstr ""
-#: templates/js/translated/stock.js:1730
+#: templates/js/translated/stock.js:1740
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:1734
+#: templates/js/translated/stock.js:1744
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:1736
+#: templates/js/translated/stock.js:1746
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:1743
+#: templates/js/translated/stock.js:1753
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:1745
+#: templates/js/translated/stock.js:1755
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:1747
+#: templates/js/translated/stock.js:1757
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:1751
+#: templates/js/translated/stock.js:1761
#: templates/js/translated/table_filters.js:188
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:1802
+#: templates/js/translated/stock.js:1812
msgid "Stocktake"
msgstr ""
-#: templates/js/translated/stock.js:1884
+#: templates/js/translated/stock.js:1894
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:1922
+#: templates/js/translated/stock.js:1932
msgid "No stock items matching query"
msgstr ""
-#: templates/js/translated/stock.js:2095
+#: templates/js/translated/stock.js:2105
msgid "Set Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:2109
+#: templates/js/translated/stock.js:2119
msgid "Select Status Code"
msgstr ""
-#: templates/js/translated/stock.js:2110
+#: templates/js/translated/stock.js:2120
msgid "Status code must be selected"
msgstr ""
-#: templates/js/translated/stock.js:2365
+#: templates/js/translated/stock.js:2375
msgid "Details"
msgstr ""
-#: templates/js/translated/stock.js:2381
+#: templates/js/translated/stock.js:2391
msgid "Part information unavailable"
msgstr ""
-#: templates/js/translated/stock.js:2403
+#: templates/js/translated/stock.js:2413
msgid "Location no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2422
+#: templates/js/translated/stock.js:2432
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2441
+#: templates/js/translated/stock.js:2451
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2459
+#: templates/js/translated/stock.js:2469
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2482
+#: templates/js/translated/stock.js:2492
msgid "Added"
msgstr ""
-#: templates/js/translated/stock.js:2490
+#: templates/js/translated/stock.js:2500
msgid "Removed"
msgstr ""
-#: templates/js/translated/stock.js:2566
+#: templates/js/translated/stock.js:2576
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:2617 templates/js/translated/stock.js:2653
+#: templates/js/translated/stock.js:2627 templates/js/translated/stock.js:2663
msgid "Uninstall Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:2666
+#: templates/js/translated/stock.js:2676
msgid "Select stock item to uninstall"
msgstr ""
-#: templates/js/translated/stock.js:2687
+#: templates/js/translated/stock.js:2697
msgid "Install another stock item into this item"
msgstr ""
-#: templates/js/translated/stock.js:2688
+#: templates/js/translated/stock.js:2698
msgid "Stock items can only be installed if they meet the following criteria"
msgstr ""
-#: templates/js/translated/stock.js:2690
+#: templates/js/translated/stock.js:2700
msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:2691
+#: templates/js/translated/stock.js:2701
msgid "The Stock Item is currently available in stock"
msgstr ""
-#: templates/js/translated/stock.js:2692
+#: templates/js/translated/stock.js:2702
msgid "The Stock Item is not already installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:2693
+#: templates/js/translated/stock.js:2703
msgid "The Stock Item is tracked by either a batch code or serial number"
msgstr ""
-#: templates/js/translated/stock.js:2706
+#: templates/js/translated/stock.js:2716
msgid "Select part to install"
msgstr ""
diff --git a/InvenTree/locale/hu/LC_MESSAGES/django.po b/InvenTree/locale/hu/LC_MESSAGES/django.po
index 3d757c4a15..46e9a53010 100644
--- a/InvenTree/locale/hu/LC_MESSAGES/django.po
+++ b/InvenTree/locale/hu/LC_MESSAGES/django.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-06-05 14:26+0000\n"
-"PO-Revision-Date: 2022-06-05 14:34\n"
+"POT-Creation-Date: 2022-06-06 22:59+0000\n"
+"PO-Revision-Date: 2022-06-07 14:34\n"
"Last-Translator: \n"
"Language-Team: Hungarian\n"
"Language: hu_HU\n"
@@ -17,7 +17,7 @@ msgstr ""
"X-Crowdin-File: /[inventree.InvenTree] l10/InvenTree/locale/en/LC_MESSAGES/django.po\n"
"X-Crowdin-File-ID: 154\n"
-#: InvenTree/api.py:46
+#: InvenTree/api.py:49
msgid "API endpoint not found"
msgstr "API funkciót nem találom"
@@ -29,275 +29,273 @@ msgstr "A hiba részleteit megtalálod az admin panelen"
msgid "Enter date"
msgstr "Dátum megadása"
-#: InvenTree/forms.py:117 templates/account/email_confirm.html:20
-#: templates/js/translated/forms.js:630
-msgid "Confirm"
-msgstr "Megerősítés"
-
-#: InvenTree/forms.py:134
+#: InvenTree/forms.py:117
msgid "Confirm delete"
msgstr "Törlés megerősítése"
-#: InvenTree/forms.py:135
+#: InvenTree/forms.py:118
msgid "Confirm item deletion"
msgstr "Tétel törlés megerősítése"
-#: InvenTree/forms.py:167
+#: InvenTree/forms.py:150
msgid "Enter password"
msgstr "Jelszó megadása"
-#: InvenTree/forms.py:168
+#: InvenTree/forms.py:151
msgid "Enter new password"
msgstr "Új jelszó megadása"
-#: InvenTree/forms.py:175
+#: InvenTree/forms.py:158
msgid "Confirm password"
msgstr "Jelszó megerősítése"
-#: InvenTree/forms.py:176
+#: InvenTree/forms.py:159
msgid "Confirm new password"
msgstr "Új jelszó megerősítése"
-#: InvenTree/forms.py:213
-msgid "Select Category"
-msgstr "Válassz kategóriát"
-
-#: InvenTree/forms.py:234
+#: InvenTree/forms.py:184
msgid "Email (again)"
msgstr "Email (újra)"
-#: InvenTree/forms.py:238
+#: InvenTree/forms.py:188
msgid "Email address confirmation"
msgstr "Email cím megerősítés"
-#: InvenTree/forms.py:259
+#: InvenTree/forms.py:209
msgid "You must type the same email each time."
msgstr "Mindig ugyanazt az email címet kell beírni."
-#: InvenTree/helpers.py:402
+#: InvenTree/helpers.py:404
#, python-brace-format
msgid "Duplicate serial: {sn}"
msgstr "Duplikált sorozatszám: {sn}"
-#: InvenTree/helpers.py:409 order/models.py:365 order/models.py:517
+#: InvenTree/helpers.py:411 order/models.py:370 order/models.py:522
msgid "Invalid quantity provided"
msgstr "Nem megfelelő mennyiség"
-#: InvenTree/helpers.py:412
+#: InvenTree/helpers.py:414
msgid "Empty serial number string"
msgstr "Üres sorozatszám"
-#: InvenTree/helpers.py:444
+#: InvenTree/helpers.py:446
#, python-brace-format
msgid "Invalid group range: {g}"
msgstr "Érvénytelen csoport tartomány: {g}"
-#: InvenTree/helpers.py:447
+#: InvenTree/helpers.py:449
#, python-brace-format
msgid "Invalid group: {g}"
msgstr "Érvénytelen csoport: {g}"
-#: InvenTree/helpers.py:475
+#: InvenTree/helpers.py:477
#, python-brace-format
msgid "Invalid group sequence: {g}"
msgstr "Érvénytelen csoport szekvencia: {g}"
-#: InvenTree/helpers.py:483
+#: InvenTree/helpers.py:485
#, python-brace-format
msgid "Invalid/no group {group}"
msgstr "Érvénytelen vagy nemlétező csoport {group}"
-#: InvenTree/helpers.py:489
+#: InvenTree/helpers.py:491
msgid "No serial numbers found"
msgstr "Nem található sorozatszám"
-#: InvenTree/helpers.py:493
+#: InvenTree/helpers.py:495
#, python-brace-format
msgid "Number of unique serial numbers ({s}) must match quantity ({q})"
msgstr "A megadott számú egyedi sorozatszám ({s}) meg kell egyezzen a darabszámmal ({q})"
-#: InvenTree/models.py:174
+#: InvenTree/models.py:178
msgid "Missing file"
msgstr "Hiányzó fájl"
-#: InvenTree/models.py:175
+#: InvenTree/models.py:179
msgid "Missing external link"
msgstr "Hiányzó külső link"
-#: InvenTree/models.py:187 stock/models.py:2087
-#: templates/js/translated/attachment.js:101
-#: templates/js/translated/attachment.js:198
+#: InvenTree/models.py:191 stock/models.py:2091
+#: templates/js/translated/attachment.js:103
+#: templates/js/translated/attachment.js:194
msgid "Attachment"
msgstr "Melléklet"
-#: InvenTree/models.py:188
+#: InvenTree/models.py:192
msgid "Select file to attach"
msgstr "Válaszd ki a mellekelni kívánt fájlt"
-#: InvenTree/models.py:194 company/models.py:123 company/models.py:272
-#: company/models.py:506 order/models.py:135 order/models.py:1235
+#: InvenTree/models.py:198 company/models.py:123 company/models.py:272
+#: company/models.py:506 order/models.py:136 order/models.py:1251
#: part/models.py:795
#: report/templates/report/inventree_build_order_base.html:165
-#: templates/js/translated/company.js:655
-#: templates/js/translated/company.js:946 templates/js/translated/order.js:2676
-#: templates/js/translated/part.js:1441
+#: templates/js/translated/company.js:640
+#: templates/js/translated/company.js:931 templates/js/translated/order.js:2676
+#: templates/js/translated/part.js:1485
msgid "Link"
msgstr "Link"
-#: InvenTree/models.py:195 build/models.py:320 part/models.py:796
+#: InvenTree/models.py:199 build/models.py:320 part/models.py:796
#: stock/models.py:642
msgid "Link to external URL"
msgstr "Link külső URL-re"
-#: InvenTree/models.py:198 templates/js/translated/attachment.js:102
-#: templates/js/translated/attachment.js:242
+#: InvenTree/models.py:202 templates/js/translated/attachment.js:104
+#: templates/js/translated/attachment.js:238
msgid "Comment"
msgstr "Megjegyzés"
-#: InvenTree/models.py:198
+#: InvenTree/models.py:202
msgid "File comment"
msgstr "Leírás, bővebb infó"
-#: InvenTree/models.py:204 InvenTree/models.py:205 common/models.py:1499
-#: common/models.py:1500 common/models.py:1728 common/models.py:1729
-#: common/models.py:1991 common/models.py:1992 part/models.py:2153
-#: part/models.py:2173 plugin/models.py:238 plugin/models.py:239
+#: InvenTree/models.py:208 InvenTree/models.py:209 common/models.py:1506
+#: common/models.py:1507 common/models.py:1735 common/models.py:1736
+#: common/models.py:1998 common/models.py:1999 part/models.py:2141
+#: part/models.py:2161 plugin/models.py:238 plugin/models.py:239
#: report/templates/report/inventree_test_report_base.html:96
-#: templates/js/translated/stock.js:2513
+#: templates/js/translated/stock.js:2523
msgid "User"
msgstr "Felhasználó"
-#: InvenTree/models.py:208
+#: InvenTree/models.py:212
msgid "upload date"
msgstr "feltöltés dátuma"
-#: InvenTree/models.py:230
+#: InvenTree/models.py:234
msgid "Filename must not be empty"
msgstr "A fájlnév nem lehet üres"
-#: InvenTree/models.py:253
+#: InvenTree/models.py:257
msgid "Invalid attachment directory"
msgstr "Érvénytelen melléklet mappa"
-#: InvenTree/models.py:263
+#: InvenTree/models.py:267
#, python-brace-format
msgid "Filename contains illegal character '{c}'"
msgstr "Fájlnévben érvénytelen karakter van '{c}'"
-#: InvenTree/models.py:266
+#: InvenTree/models.py:270
msgid "Filename missing extension"
msgstr "Fájlnév kiterjesztése hiányzik"
-#: InvenTree/models.py:273
+#: InvenTree/models.py:277
msgid "Attachment with this filename already exists"
msgstr "Ilyen fájlnévvel már létezik melléklet"
-#: InvenTree/models.py:280
+#: InvenTree/models.py:284
msgid "Error renaming file"
msgstr "Hiba a fájl átnevezésekor"
-#: InvenTree/models.py:314
+#: InvenTree/models.py:318
msgid "Invalid choice"
msgstr "Érvénytelen választás"
-#: InvenTree/models.py:333 InvenTree/models.py:334 common/models.py:1714
+#: InvenTree/models.py:337 InvenTree/models.py:338 common/models.py:1721
#: company/models.py:354 label/models.py:101 part/models.py:739
-#: part/models.py:2331 plugin/models.py:93 report/models.py:151
+#: part/models.py:2319 plugin/models.py:93 report/models.py:151
#: templates/InvenTree/notifications/notifications.html:84
#: templates/InvenTree/settings/mixins/urls.html:13
#: templates/InvenTree/settings/plugin.html:49
#: templates/InvenTree/settings/plugin.html:132
#: templates/InvenTree/settings/plugin_settings.html:23
#: templates/InvenTree/settings/settings.html:346
-#: templates/js/translated/company.js:539
-#: templates/js/translated/company.js:757 templates/js/translated/part.js:615
-#: templates/js/translated/part.js:767 templates/js/translated/part.js:1736
-#: templates/js/translated/stock.js:2283
+#: templates/js/translated/company.js:530
+#: templates/js/translated/company.js:742 templates/js/translated/part.js:659
+#: templates/js/translated/part.js:811 templates/js/translated/part.js:1832
+#: templates/js/translated/stock.js:2293
msgid "Name"
msgstr "Név"
-#: InvenTree/models.py:340 build/models.py:197
+#: InvenTree/models.py:344 build/models.py:197
#: build/templates/build/detail.html:24 company/models.py:278
#: company/models.py:512 company/templates/company/company_base.html:71
#: company/templates/company/manufacturer_part.html:75
#: company/templates/company/supplier_part.html:73 label/models.py:108
-#: order/models.py:133 part/models.py:762 part/templates/part/category.html:74
-#: part/templates/part/part_base.html:167
-#: part/templates/part/set_category.html:14 report/models.py:164
+#: order/models.py:134 part/models.py:762 part/templates/part/category.html:74
+#: part/templates/part/part_base.html:167 report/models.py:164
#: report/models.py:509 report/models.py:550
#: report/templates/report/inventree_build_order_base.html:118
#: stock/templates/stock/location.html:103
#: templates/InvenTree/settings/plugin_settings.html:33
-#: templates/js/translated/bom.js:553 templates/js/translated/bom.js:851
-#: templates/js/translated/build.js:2476 templates/js/translated/company.js:401
-#: templates/js/translated/company.js:666
-#: templates/js/translated/company.js:957 templates/js/translated/order.js:1656
+#: templates/js/translated/bom.js:553 templates/js/translated/bom.js:845
+#: templates/js/translated/build.js:2476 templates/js/translated/company.js:395
+#: templates/js/translated/company.js:651
+#: templates/js/translated/company.js:942 templates/js/translated/order.js:1656
#: templates/js/translated/order.js:1888 templates/js/translated/order.js:2476
-#: templates/js/translated/part.js:674 templates/js/translated/part.js:1082
-#: templates/js/translated/part.js:1355 templates/js/translated/part.js:1755
-#: templates/js/translated/part.js:1824 templates/js/translated/stock.js:1676
-#: templates/js/translated/stock.js:2295 templates/js/translated/stock.js:2350
+#: templates/js/translated/part.js:718 templates/js/translated/part.js:1126
+#: templates/js/translated/part.js:1399 templates/js/translated/part.js:1851
+#: templates/js/translated/part.js:1920 templates/js/translated/stock.js:1686
+#: templates/js/translated/stock.js:2305 templates/js/translated/stock.js:2360
msgid "Description"
msgstr "Leírás"
-#: InvenTree/models.py:341
+#: InvenTree/models.py:345
msgid "Description (optional)"
msgstr "Leírás (opcionális)"
-#: InvenTree/models.py:349
+#: InvenTree/models.py:353
msgid "parent"
msgstr "szülő"
-#: InvenTree/serializers.py:52 part/models.py:2652
+#: InvenTree/models.py:466
+msgid "Server Error"
+msgstr ""
+
+#: InvenTree/models.py:467
+msgid "An error has been logged by the server."
+msgstr ""
+
+#: InvenTree/serializers.py:52 part/models.py:2640
msgid "Must be a valid number"
msgstr "Érvényes számnak kell lennie"
-#: InvenTree/serializers.py:271
+#: InvenTree/serializers.py:263
msgid "Filename"
msgstr "Fájlnév"
-#: InvenTree/serializers.py:306
+#: InvenTree/serializers.py:298
msgid "Invalid value"
msgstr "Érvénytelen érték"
-#: InvenTree/serializers.py:328
+#: InvenTree/serializers.py:320
msgid "Data File"
msgstr "Adat fájl"
-#: InvenTree/serializers.py:329
+#: InvenTree/serializers.py:321
msgid "Select data file for upload"
msgstr "Fájl kiválasztása feltöltéshez"
-#: InvenTree/serializers.py:350
+#: InvenTree/serializers.py:342
msgid "Unsupported file type"
msgstr "Nem támogatott fájltípus"
-#: InvenTree/serializers.py:356
+#: InvenTree/serializers.py:348
msgid "File is too large"
msgstr "Fájl túl nagy"
-#: InvenTree/serializers.py:377
+#: InvenTree/serializers.py:369
msgid "No columns found in file"
msgstr "Nem találhatók oszlopok a fájlban"
-#: InvenTree/serializers.py:380
+#: InvenTree/serializers.py:372
msgid "No data rows found in file"
msgstr "Nincsenek adatsorok a fájlban"
-#: InvenTree/serializers.py:503
+#: InvenTree/serializers.py:495
msgid "No data rows provided"
msgstr "Nincs adatsor megadva"
-#: InvenTree/serializers.py:506
+#: InvenTree/serializers.py:498
msgid "No data columns supplied"
msgstr "Nincs adat oszlop megadva"
-#: InvenTree/serializers.py:583
+#: InvenTree/serializers.py:575
#, python-brace-format
msgid "Missing required column: '{name}'"
msgstr "Szükséges oszlop hiányzik: '{name}'"
-#: InvenTree/serializers.py:592
+#: InvenTree/serializers.py:584
#, python-brace-format
msgid "Duplicate column: '{col}'"
msgstr "Duplikált oszlop: '{col}'"
@@ -440,7 +438,7 @@ msgstr "Elveszett"
msgid "Returned"
msgstr "Visszaküldve"
-#: InvenTree/status_codes.py:141 order/models.py:1114
+#: InvenTree/status_codes.py:141 order/models.py:1130
#: templates/js/translated/order.js:3264 templates/js/translated/order.js:3607
msgid "Shipped"
msgstr "Kiszállítva"
@@ -525,7 +523,7 @@ msgstr "Szülő tételből szétválasztva"
msgid "Split child item"
msgstr "Szétválasztott gyermek tétel"
-#: InvenTree/status_codes.py:281 templates/js/translated/stock.js:2020
+#: InvenTree/status_codes.py:281 templates/js/translated/stock.js:2030
msgid "Merged stock items"
msgstr "Összevont készlet tétel"
@@ -597,27 +595,27 @@ msgstr "Túlszállítás nem lehet több mint 100%"
msgid "Invalid value for overage"
msgstr "Érvénytelen érték a túlszállításra"
-#: InvenTree/views.py:522
+#: InvenTree/views.py:521
msgid "Delete Item"
msgstr "Tétel törlése"
-#: InvenTree/views.py:571
+#: InvenTree/views.py:570
msgid "Check box to confirm item deletion"
msgstr "Jelöld a törlés megerősítéséhez"
-#: InvenTree/views.py:586 templates/InvenTree/settings/user.html:22
+#: InvenTree/views.py:585 templates/InvenTree/settings/user.html:22
msgid "Edit User Information"
msgstr "Felhasználói információ módosítása"
-#: InvenTree/views.py:598 templates/InvenTree/settings/user.html:19
+#: InvenTree/views.py:597 templates/InvenTree/settings/user.html:19
msgid "Set Password"
msgstr "Jelszó beállítása"
-#: InvenTree/views.py:618
+#: InvenTree/views.py:617
msgid "Password fields must match"
msgstr "A jelszavaknak egyeznie kell"
-#: InvenTree/views.py:842 templates/navbar.html:152
+#: InvenTree/views.py:807 templates/navbar.html:152
msgid "System Information"
msgstr "Rendszerinformáció"
@@ -628,6 +626,7 @@ msgstr "Hibás választás a szülő gyártásra"
#: build/models.py:131 build/templates/build/build_base.html:9
#: build/templates/build/build_base.html:27
#: report/templates/report/inventree_build_order_base.html:106
+#: templates/email/overdue_build_order.html:15
#: templates/js/translated/build.js:727
msgid "Build Order"
msgstr "Gyártási utasítás"
@@ -646,12 +645,12 @@ msgstr "Gyártási utasítások"
msgid "Build Order Reference"
msgstr "Gyártási utasítás azonosító"
-#: build/models.py:189 order/models.py:288 order/models.py:638
-#: order/models.py:916 part/models.py:2570
+#: build/models.py:189 order/models.py:293 order/models.py:654
+#: order/models.py:932 part/models.py:2558
#: part/templates/part/upload_bom.html:54
#: report/templates/report/inventree_po_report.html:91
#: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:688 templates/js/translated/bom.js:858
+#: templates/js/translated/bom.js:690 templates/js/translated/bom.js:852
#: templates/js/translated/build.js:1777 templates/js/translated/order.js:1919
#: templates/js/translated/order.js:2120 templates/js/translated/order.js:3448
#: templates/js/translated/order.js:3959
@@ -673,13 +672,12 @@ msgstr "Gyártás, amihez ez a gyártás hozzá van rendelve"
#: build/models.py:215 build/templates/build/build_base.html:77
#: build/templates/build/detail.html:29 company/models.py:647
-#: order/models.py:1012 order/models.py:1103 part/models.py:336
-#: part/models.py:2099 part/models.py:2114 part/models.py:2133
-#: part/models.py:2151 part/models.py:2250 part/models.py:2370
-#: part/models.py:2460 part/models.py:2545 part/models.py:2821
-#: part/serializers.py:793 part/templates/part/part_app_base.html:8
+#: order/models.py:1028 order/models.py:1119 part/models.py:336
+#: part/models.py:2087 part/models.py:2102 part/models.py:2121
+#: part/models.py:2139 part/models.py:2238 part/models.py:2358
+#: part/models.py:2448 part/models.py:2533 part/models.py:2809
+#: part/serializers.py:795 part/templates/part/part_app_base.html:8
#: part/templates/part/part_pricing.html:12
-#: part/templates/part/set_category.html:13
#: part/templates/part/upload_bom.html:52
#: report/templates/report/inventree_build_order_base.html:110
#: report/templates/report/inventree_po_report.html:89
@@ -687,22 +685,23 @@ msgstr "Gyártás, amihez ez a gyártás hozzá van rendelve"
#: templates/InvenTree/search.html:80
#: templates/email/build_order_required_stock.html:17
#: templates/email/low_stock_notification.html:16
+#: templates/email/overdue_build_order.html:16
#: templates/js/translated/barcode.js:435 templates/js/translated/bom.js:552
-#: templates/js/translated/bom.js:687 templates/js/translated/bom.js:805
+#: templates/js/translated/bom.js:689 templates/js/translated/bom.js:799
#: templates/js/translated/build.js:1153 templates/js/translated/build.js:1647
#: templates/js/translated/build.js:2083 templates/js/translated/build.js:2481
-#: templates/js/translated/company.js:252
-#: templates/js/translated/company.js:486
-#: templates/js/translated/company.js:607
-#: templates/js/translated/company.js:866 templates/js/translated/order.js:100
+#: templates/js/translated/company.js:253
+#: templates/js/translated/company.js:482
+#: templates/js/translated/company.js:592
+#: templates/js/translated/company.js:851 templates/js/translated/order.js:100
#: templates/js/translated/order.js:883 templates/js/translated/order.js:1315
#: templates/js/translated/order.js:1873 templates/js/translated/order.js:2819
#: templates/js/translated/order.js:3217 templates/js/translated/order.js:3432
-#: templates/js/translated/part.js:1067 templates/js/translated/part.js:1137
-#: templates/js/translated/part.js:1333 templates/js/translated/stock.js:531
-#: templates/js/translated/stock.js:696 templates/js/translated/stock.js:903
-#: templates/js/translated/stock.js:1633 templates/js/translated/stock.js:2376
-#: templates/js/translated/stock.js:2571 templates/js/translated/stock.js:2705
+#: templates/js/translated/part.js:1111 templates/js/translated/part.js:1181
+#: templates/js/translated/part.js:1377 templates/js/translated/stock.js:530
+#: templates/js/translated/stock.js:695 templates/js/translated/stock.js:902
+#: templates/js/translated/stock.js:1643 templates/js/translated/stock.js:2386
+#: templates/js/translated/stock.js:2581 templates/js/translated/stock.js:2715
msgid "Part"
msgstr "Alkatrész"
@@ -768,12 +767,12 @@ msgstr "Batch kód"
msgid "Batch code for this build output"
msgstr "Batch kód a gyártás kimenetéhez"
-#: build/models.py:282 order/models.py:137 part/models.py:932
+#: build/models.py:282 order/models.py:138 part/models.py:932
#: part/templates/part/part_base.html:305 templates/js/translated/order.js:2489
msgid "Creation Date"
msgstr "Létrehozás dátuma"
-#: build/models.py:286 order/models.py:660
+#: build/models.py:286 order/models.py:676
msgid "Target completion date"
msgstr "Befejezés cél dátuma"
@@ -781,7 +780,7 @@ msgstr "Befejezés cél dátuma"
msgid "Target date for build completion. Build will be overdue after this date."
msgstr "Cél dátum a gyártás befejezéséhez. Ez után késettnek számít majd."
-#: build/models.py:290 order/models.py:331
+#: build/models.py:290 order/models.py:336
#: templates/js/translated/build.js:2558
msgid "Completion Date"
msgstr "Elkészítés dátuma"
@@ -799,7 +798,7 @@ msgid "User who issued this build order"
msgstr "Felhasználó aki ezt a gyártási utasítást kiállította"
#: build/models.py:313 build/templates/build/build_base.html:190
-#: build/templates/build/detail.html:115 order/models.py:151
+#: build/templates/build/detail.html:115 order/models.py:152
#: order/templates/order/order_base.html:176
#: order/templates/order/sales_order_base.html:183 part/models.py:936
#: report/templates/report/inventree_build_order_base.html:159
@@ -822,20 +821,20 @@ msgstr "Külső link"
#: build/models.py:324 build/serializers.py:374
#: build/templates/build/sidebar.html:21 company/models.py:134
#: company/models.py:519 company/templates/company/sidebar.html:25
-#: order/models.py:155 order/models.py:918 order/models.py:1213
+#: order/models.py:156 order/models.py:934 order/models.py:1229
#: order/templates/order/po_sidebar.html:11
#: order/templates/order/so_sidebar.html:17 part/models.py:921
#: part/templates/part/part_sidebar.html:59
#: report/templates/report/inventree_build_order_base.html:173
-#: stock/models.py:713 stock/models.py:1985 stock/models.py:2093
+#: stock/models.py:713 stock/models.py:1989 stock/models.py:2097
#: stock/serializers.py:315 stock/serializers.py:444 stock/serializers.py:486
-#: stock/serializers.py:772 stock/serializers.py:871 stock/serializers.py:1003
+#: stock/serializers.py:759 stock/serializers.py:858 stock/serializers.py:990
#: stock/templates/stock/stock_sidebar.html:25
-#: templates/js/translated/barcode.js:100 templates/js/translated/bom.js:1044
-#: templates/js/translated/company.js:962 templates/js/translated/order.js:2040
+#: templates/js/translated/barcode.js:100 templates/js/translated/bom.js:1038
+#: templates/js/translated/company.js:947 templates/js/translated/order.js:2040
#: templates/js/translated/order.js:2191 templates/js/translated/order.js:2687
#: templates/js/translated/order.js:3632 templates/js/translated/order.js:4030
-#: templates/js/translated/stock.js:1307 templates/js/translated/stock.js:1916
+#: templates/js/translated/stock.js:1317 templates/js/translated/stock.js:1926
msgid "Notes"
msgstr "Megjegyzések"
@@ -855,44 +854,44 @@ msgstr "Gyártási kimenet már kész"
msgid "Build output does not match Build Order"
msgstr "Gyártási kimenet nem egyezik a gyártási utasítással"
-#: build/models.py:1108
+#: build/models.py:1111
msgid "Build item must specify a build output, as master part is marked as trackable"
msgstr "Gyártási tételnek meg kell adnia a gyártási kimenetet, mivel a fő darab egyedi követésre kötelezett"
-#: build/models.py:1117
+#: build/models.py:1120
#, python-brace-format
msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})"
msgstr "A lefoglalt mennyiség ({q}) nem lépheti túl a szabad készletet ({a})"
-#: build/models.py:1127
+#: build/models.py:1130
msgid "Stock item is over-allocated"
msgstr "Készlet túlfoglalva"
-#: build/models.py:1133 order/models.py:1372
+#: build/models.py:1136 order/models.py:1388
msgid "Allocation quantity must be greater than zero"
msgstr "Lefoglalt mennyiségnek nullánál többnek kell lennie"
-#: build/models.py:1139
+#: build/models.py:1142
msgid "Quantity must be 1 for serialized stock"
msgstr "Egyedi követésre kötelezett tételeknél a menyiség 1 kell legyen"
-#: build/models.py:1196
+#: build/models.py:1199
msgid "Selected stock item not found in BOM"
msgstr "Kiválasztott készlet tétel nem található az alkatrészjegyzékben"
-#: build/models.py:1265 stock/templates/stock/item_base.html:177
+#: build/models.py:1268 stock/templates/stock/item_base.html:177
#: templates/InvenTree/search.html:137 templates/js/translated/build.js:2454
#: templates/navbar.html:38
msgid "Build"
msgstr "Gyártás"
-#: build/models.py:1266
+#: build/models.py:1269
msgid "Build to allocate parts"
msgstr "Gyártás amihez készletet foglaljunk"
-#: build/models.py:1282 build/serializers.py:603 order/serializers.py:994
-#: order/serializers.py:1015 stock/serializers.py:382 stock/serializers.py:703
-#: stock/serializers.py:829 stock/templates/stock/item_base.html:10
+#: build/models.py:1285 build/serializers.py:603 order/serializers.py:996
+#: order/serializers.py:1017 stock/serializers.py:382 stock/serializers.py:690
+#: stock/serializers.py:816 stock/templates/stock/item_base.html:10
#: stock/templates/stock/item_base.html:23
#: stock/templates/stock/item_base.html:199
#: templates/js/translated/build.js:738 templates/js/translated/build.js:743
@@ -900,22 +899,22 @@ msgstr "Gyártás amihez készletet foglaljunk"
#: templates/js/translated/order.js:101 templates/js/translated/order.js:2820
#: templates/js/translated/order.js:3124 templates/js/translated/order.js:3129
#: templates/js/translated/order.js:3224 templates/js/translated/order.js:3314
-#: templates/js/translated/stock.js:532 templates/js/translated/stock.js:697
-#: templates/js/translated/stock.js:2449
+#: templates/js/translated/stock.js:531 templates/js/translated/stock.js:696
+#: templates/js/translated/stock.js:2459
msgid "Stock Item"
msgstr "Készlet tétel"
-#: build/models.py:1283
+#: build/models.py:1286
msgid "Source stock item"
msgstr "Forrás készlet tétel"
-#: build/models.py:1295 build/serializers.py:183
+#: build/models.py:1298 build/serializers.py:183
#: build/templates/build/build_base.html:82
-#: build/templates/build/detail.html:34 common/models.py:1536
+#: build/templates/build/detail.html:34 common/models.py:1543
#: company/forms.py:36 company/templates/company/supplier_part.html:258
-#: order/models.py:909 order/models.py:1412 order/serializers.py:1134
-#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:68
-#: part/forms.py:83 part/forms.py:98 part/models.py:2561
+#: order/models.py:925 order/models.py:1428 order/serializers.py:1136
+#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:59
+#: part/forms.py:74 part/forms.py:89 part/models.py:2549
#: part/templates/part/detail.html:935 part/templates/part/detail.html:1021
#: part/templates/part/part_pricing.html:16
#: part/templates/part/upload_bom.html:53
@@ -926,8 +925,8 @@ msgstr "Forrás készlet tétel"
#: report/templates/report/inventree_test_report_base.html:139
#: stock/serializers.py:279 stock/templates/stock/item_base.html:292
#: stock/templates/stock/item_base.html:300
-#: templates/js/translated/barcode.js:437 templates/js/translated/bom.js:689
-#: templates/js/translated/bom.js:866 templates/js/translated/build.js:422
+#: templates/js/translated/barcode.js:437 templates/js/translated/bom.js:691
+#: templates/js/translated/bom.js:860 templates/js/translated/build.js:422
#: templates/js/translated/build.js:574 templates/js/translated/build.js:765
#: templates/js/translated/build.js:1175 templates/js/translated/build.js:1673
#: templates/js/translated/build.js:2086
@@ -937,23 +936,23 @@ msgstr "Forrás készlet tétel"
#: templates/js/translated/order.js:2821 templates/js/translated/order.js:3143
#: templates/js/translated/order.js:3231 templates/js/translated/order.js:3320
#: templates/js/translated/order.js:3454 templates/js/translated/order.js:3965
-#: templates/js/translated/part.js:967 templates/js/translated/part.js:1969
-#: templates/js/translated/part.js:2200 templates/js/translated/part.js:2234
-#: templates/js/translated/part.js:2312 templates/js/translated/stock.js:403
-#: templates/js/translated/stock.js:557 templates/js/translated/stock.js:727
-#: templates/js/translated/stock.js:2498 templates/js/translated/stock.js:2583
+#: templates/js/translated/part.js:1011 templates/js/translated/part.js:2065
+#: templates/js/translated/part.js:2296 templates/js/translated/part.js:2330
+#: templates/js/translated/part.js:2408 templates/js/translated/stock.js:402
+#: templates/js/translated/stock.js:556 templates/js/translated/stock.js:726
+#: templates/js/translated/stock.js:2508 templates/js/translated/stock.js:2593
msgid "Quantity"
msgstr "Mennyiség"
-#: build/models.py:1296
+#: build/models.py:1299
msgid "Stock quantity to allocate to build"
msgstr "Készlet mennyiség amit foglaljunk a gyártáshoz"
-#: build/models.py:1304
+#: build/models.py:1307
msgid "Install into"
msgstr "Beépítés ebbe"
-#: build/models.py:1305
+#: build/models.py:1308
msgid "Destination stock item"
msgstr "Cél készlet tétel"
@@ -982,9 +981,9 @@ msgstr "Ez a gyártási kimenet nincs teljesen lefoglalva"
msgid "Enter quantity for build output"
msgstr "Add meg a mennyiséget a gyártás kimenetéhez"
-#: build/serializers.py:198 build/serializers.py:623 order/models.py:363
-#: order/serializers.py:280 order/serializers.py:435 part/serializers.py:512
-#: part/serializers.py:956 stock/models.py:470 stock/models.py:1239
+#: build/serializers.py:198 build/serializers.py:623 order/models.py:368
+#: order/serializers.py:280 order/serializers.py:435 part/serializers.py:514
+#: part/serializers.py:958 stock/models.py:470 stock/models.py:1239
#: stock/serializers.py:288
msgid "Quantity must be greater than zero"
msgstr "Mennyiségnek nullánál többnek kell lennie"
@@ -997,9 +996,9 @@ msgstr "Egész számú mennyiség szükséges az egyedi követésre kötelezett
msgid "Integer quantity required, as the bill of materials contains trackable parts"
msgstr "Egész számú mennyiség szükséges, mivel az alkatrészjegyzék egyedi követésre kötelezett alkatrészeket tartalmaz"
-#: build/serializers.py:222 order/serializers.py:448 order/serializers.py:1138
+#: build/serializers.py:222 order/serializers.py:448 order/serializers.py:1140
#: stock/serializers.py:297 templates/js/translated/order.js:1186
-#: templates/js/translated/stock.js:238 templates/js/translated/stock.js:404
+#: templates/js/translated/stock.js:237 templates/js/translated/stock.js:403
msgid "Serial Numbers"
msgstr "Sorozatszámok"
@@ -1015,7 +1014,7 @@ msgstr "Sorozatszámok automatikus hozzárendelése"
msgid "Automatically allocate required items with matching serial numbers"
msgstr "Szükséges tételek automatikus hozzárendelése a megfelelő sorozatszámokkal"
-#: build/serializers.py:268 stock/api.py:552
+#: build/serializers.py:268 stock/api.py:553
msgid "The following serial numbers already exist"
msgstr "A következő sorozatszámok már léteznek"
@@ -1025,16 +1024,16 @@ msgstr "A gyártási kimenetek listáját meg kell adni"
#: build/serializers.py:356 order/serializers.py:421 order/serializers.py:525
#: stock/serializers.py:308 stock/serializers.py:439 stock/serializers.py:481
-#: stock/serializers.py:864 stock/serializers.py:1097
+#: stock/serializers.py:851 stock/serializers.py:1084
#: stock/templates/stock/item_base.html:390
#: templates/js/translated/barcode.js:436
#: templates/js/translated/barcode.js:618 templates/js/translated/build.js:750
#: templates/js/translated/build.js:1685 templates/js/translated/order.js:1213
#: templates/js/translated/order.js:3136 templates/js/translated/order.js:3239
#: templates/js/translated/order.js:3247 templates/js/translated/order.js:3328
-#: templates/js/translated/part.js:180 templates/js/translated/stock.js:533
-#: templates/js/translated/stock.js:698 templates/js/translated/stock.js:905
-#: templates/js/translated/stock.js:1787 templates/js/translated/stock.js:2390
+#: templates/js/translated/part.js:180 templates/js/translated/stock.js:532
+#: templates/js/translated/stock.js:697 templates/js/translated/stock.js:904
+#: templates/js/translated/stock.js:1797 templates/js/translated/stock.js:2400
msgid "Location"
msgstr "Hely"
@@ -1043,12 +1042,12 @@ msgid "Location for completed build outputs"
msgstr "A kész gyártási kimenetek helye"
#: build/serializers.py:363 build/templates/build/build_base.html:142
-#: build/templates/build/detail.html:62 order/models.py:654
+#: build/templates/build/detail.html:62 order/models.py:670
#: order/serializers.py:458 stock/templates/stock/item_base.html:423
#: templates/js/translated/barcode.js:182 templates/js/translated/build.js:2510
#: templates/js/translated/order.js:1320 templates/js/translated/order.js:1660
-#: templates/js/translated/order.js:2481 templates/js/translated/stock.js:1762
-#: templates/js/translated/stock.js:2467 templates/js/translated/stock.js:2599
+#: templates/js/translated/order.js:2481 templates/js/translated/stock.js:1772
+#: templates/js/translated/stock.js:2477 templates/js/translated/stock.js:2609
msgid "Status"
msgstr "Állapot"
@@ -1109,8 +1108,8 @@ msgstr "A gyártási utasítás befejezetlen kimeneteket tartalmaz"
msgid "No build outputs have been created for this build order"
msgstr "Ehhez a gyártási utasításhoz nem készült kimenet"
-#: build/serializers.py:535 build/serializers.py:580 part/models.py:2679
-#: part/models.py:2813
+#: build/serializers.py:535 build/serializers.py:580 part/models.py:2667
+#: part/models.py:2801
msgid "BOM Item"
msgstr "Alkatrészjegyzék tétel"
@@ -1126,11 +1125,11 @@ msgstr "A gyártási kimenetnek ugyanarra a gyártásra kell mutatnia"
msgid "bom_item.part must point to the same part as the build order"
msgstr "bom_item.part ugyanarra az alkatrészre kell mutasson mint a gyártási utasítás"
-#: build/serializers.py:609 stock/serializers.py:716
+#: build/serializers.py:609 stock/serializers.py:703
msgid "Item must be in stock"
msgstr "A tételnek kell legyen készlete"
-#: build/serializers.py:667 order/serializers.py:1052
+#: build/serializers.py:667 order/serializers.py:1054
#, python-brace-format
msgid "Available quantity ({q}) exceeded"
msgstr "Rendelkezésre álló mennyiség ({q}) túllépve"
@@ -1147,7 +1146,7 @@ msgstr "Gyártási kimenetet nem lehet megadni a követésre kötelezett alkatr
msgid "This stock item has already been allocated to this build output"
msgstr "Ez a készlet tétel már le lett foglalva ehhez a gyártási kimenethez"
-#: build/serializers.py:708 order/serializers.py:1298
+#: build/serializers.py:708 order/serializers.py:1300
msgid "Allocation items must be provided"
msgstr "A lefoglalandó tételeket meg kell adni"
@@ -1179,10 +1178,19 @@ msgstr "Készlet helyettesítés"
msgid "Allow allocation of substitute parts"
msgstr "Helyettesítő alkatrészek foglalásának engedélyezése"
-#: build/tasks.py:96
+#: build/tasks.py:100
msgid "Stock required for build order"
msgstr "A gyártási utasításhoz készlet szükséges"
+#: build/tasks.py:118
+msgid "Overdue Build Order"
+msgstr ""
+
+#: build/tasks.py:123
+#, python-brace-format
+msgid "Build order {bo} is now overdue"
+msgstr ""
+
#: build/templates/build/build_base.html:39
#: order/templates/order/order_base.html:28
#: order/templates/order/sales_order_base.html:38
@@ -1245,13 +1253,13 @@ msgid "Stock has not been fully allocated to this Build Order"
msgstr "Még nincs lefoglalva a szükséges készlet"
#: build/templates/build/build_base.html:151
-#: build/templates/build/detail.html:131 order/models.py:922
+#: build/templates/build/detail.html:131 order/models.py:938
#: order/templates/order/order_base.html:162
#: order/templates/order/sales_order_base.html:164
#: report/templates/report/inventree_build_order_base.html:126
#: templates/js/translated/build.js:2550 templates/js/translated/order.js:1677
#: templates/js/translated/order.js:1987 templates/js/translated/order.js:2497
-#: templates/js/translated/order.js:3517 templates/js/translated/part.js:971
+#: templates/js/translated/order.js:3517 templates/js/translated/part.js:1015
msgid "Target Date"
msgstr "Cél dátum"
@@ -1278,13 +1286,14 @@ msgid "Completed"
msgstr "Kész"
#: build/templates/build/build_base.html:176
-#: build/templates/build/detail.html:94 order/models.py:1100
-#: order/models.py:1185 order/models.py:1320
+#: build/templates/build/detail.html:94 order/models.py:1116
+#: order/models.py:1201 order/models.py:1336
#: order/templates/order/sales_order_base.html:9
#: order/templates/order/sales_order_base.html:28
#: report/templates/report/inventree_build_order_base.html:136
#: report/templates/report/inventree_so_report.html:77
#: stock/templates/stock/item_base.html:370
+#: templates/email/overdue_sales_order.html:15
#: templates/js/translated/order.js:2436
msgid "Sales Order"
msgstr "Vevői rendelés"
@@ -1320,7 +1329,7 @@ msgstr "Készlet forrás"
msgid "Stock can be taken from any available location."
msgstr "Készlet bármely rendelkezésre álló helyről felhasználható."
-#: build/templates/build/detail.html:49 order/models.py:1034
+#: build/templates/build/detail.html:49 order/models.py:1050
#: templates/js/translated/order.js:1321 templates/js/translated/order.js:2029
msgid "Destination"
msgstr "Cél"
@@ -1337,8 +1346,8 @@ msgstr "Lefoglalt alkatrészek"
#: stock/templates/stock/item_base.html:170
#: templates/js/translated/build.js:1179
#: templates/js/translated/model_renderers.js:112
-#: templates/js/translated/stock.js:971 templates/js/translated/stock.js:1776
-#: templates/js/translated/stock.js:2606
+#: templates/js/translated/stock.js:970 templates/js/translated/stock.js:1786
+#: templates/js/translated/stock.js:2616
#: templates/js/translated/table_filters.js:151
#: templates/js/translated/table_filters.js:242
msgid "Batch"
@@ -1717,7 +1726,7 @@ msgstr "Kategória paraméter sablonok másolása"
msgid "Copy category parameter templates when creating a part"
msgstr "Kategória paraméter sablonok másolása alkatrész létrehozásakor"
-#: common/models.py:820 part/models.py:2372 report/models.py:157
+#: common/models.py:820 part/models.py:2360 report/models.py:157
#: templates/js/translated/table_filters.js:38
#: templates/js/translated/table_filters.js:444
msgid "Template"
@@ -1727,7 +1736,7 @@ msgstr "Sablon"
msgid "Parts are templates by default"
msgstr "Alkatrészek alapból sablon alkatrészek legyenek"
-#: common/models.py:827 part/models.py:884 templates/js/translated/bom.js:1390
+#: common/models.py:827 part/models.py:884 templates/js/translated/bom.js:1384
#: templates/js/translated/table_filters.js:168
#: templates/js/translated/table_filters.js:460
msgid "Assembly"
@@ -1881,576 +1890,584 @@ msgid "Default page size for PDF reports"
msgstr "Alapértelmezett lapméret a PDF riportokhoz"
#: common/models.py:968
-msgid "Test Reports"
-msgstr "Teszt riportok"
+msgid "Enable Test Reports"
+msgstr ""
#: common/models.py:969
msgid "Enable generation of test reports"
msgstr "Teszt riportok előállításának engedélyezése"
#: common/models.py:975
+msgid "Attach Test Reports"
+msgstr ""
+
+#: common/models.py:976
+msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item"
+msgstr ""
+
+#: common/models.py:982
msgid "Batch Code Template"
msgstr "Batch kód sablon"
-#: common/models.py:976
+#: common/models.py:983
msgid "Template for generating default batch codes for stock items"
msgstr "Sablon a készlet tételekhez alapértelmezett batch kódok előállításához"
-#: common/models.py:981
+#: common/models.py:988
msgid "Stock Expiry"
msgstr "Készlet lejárata"
-#: common/models.py:982
+#: common/models.py:989
msgid "Enable stock expiry functionality"
msgstr "Készlet lejárat kezelésének engedélyezése"
-#: common/models.py:988
+#: common/models.py:995
msgid "Sell Expired Stock"
msgstr "Lejárt készlet értékesítése"
-#: common/models.py:989
+#: common/models.py:996
msgid "Allow sale of expired stock"
msgstr "Lejárt készlet értékesítésének engedélyezése"
-#: common/models.py:995
+#: common/models.py:1002
msgid "Stock Stale Time"
msgstr "Álló készlet ideje"
-#: common/models.py:996
+#: common/models.py:1003
msgid "Number of days stock items are considered stale before expiring"
msgstr "Napok száma amennyivel a lejárat előtt a készlet tételeket állottnak vesszük"
-#: common/models.py:998
+#: common/models.py:1005
msgid "days"
msgstr "nap"
-#: common/models.py:1003
+#: common/models.py:1010
msgid "Build Expired Stock"
msgstr "Lejárt készlet gyártása"
-#: common/models.py:1004
+#: common/models.py:1011
msgid "Allow building with expired stock"
msgstr "Gyártás engedélyezése lejárt készletből"
-#: common/models.py:1010
+#: common/models.py:1017
msgid "Stock Ownership Control"
msgstr "Készlet tulajdonosok kezelése"
-#: common/models.py:1011
+#: common/models.py:1018
msgid "Enable ownership control over stock locations and items"
msgstr "Tuajdonosok kezelésének engedélyezése a készlet helyekre és tételekre"
-#: common/models.py:1017
+#: common/models.py:1024
msgid "Build Order Reference Prefix"
msgstr "Gyártási utasítás azonosító előtagja"
-#: common/models.py:1018
+#: common/models.py:1025
msgid "Prefix value for build order reference"
msgstr "Előtag értéke a gyártási utasítás azonosítóhoz"
-#: common/models.py:1023
+#: common/models.py:1030
msgid "Build Order Reference Regex"
msgstr "Gyártási utasítás azonosító reguláris kifejezés"
-#: common/models.py:1024
+#: common/models.py:1031
msgid "Regular expression pattern for matching build order reference"
msgstr "Gyártási utasítás azonosítóra illeszkedő reguláris kifejezés"
-#: common/models.py:1028
+#: common/models.py:1035
msgid "Sales Order Reference Prefix"
msgstr "Vevői rendelés azonosító előtagja"
-#: common/models.py:1029
+#: common/models.py:1036
msgid "Prefix value for sales order reference"
msgstr "Előtag értéke a vevői rendelés azonosítóhoz"
-#: common/models.py:1034
+#: common/models.py:1041
msgid "Sales Order Default Shipment"
msgstr "Vevői rendeléshez alapértelmezett szállítmány"
-#: common/models.py:1035
+#: common/models.py:1042
msgid "Enable creation of default shipment with sales orders"
msgstr "Szállítmány automatikus létrehozása az új vevő rendelésekhez"
-#: common/models.py:1041
+#: common/models.py:1048
msgid "Purchase Order Reference Prefix"
msgstr "Beszerzési rendelés azonosító előtagja"
-#: common/models.py:1042
+#: common/models.py:1049
msgid "Prefix value for purchase order reference"
msgstr "Előtag értéke a beszerzési rendelés azonosítóhoz"
-#: common/models.py:1048
+#: common/models.py:1055
msgid "Enable password forgot"
msgstr "Elfelejtett jelszó engedélyezése"
-#: common/models.py:1049
+#: common/models.py:1056
msgid "Enable password forgot function on the login pages"
msgstr "Elfelejtett jelszó funkció engedélyezése a bejentkező oldalon"
-#: common/models.py:1055
+#: common/models.py:1062
msgid "Enable registration"
msgstr "Regisztráció engedélyezése"
-#: common/models.py:1056
+#: common/models.py:1063
msgid "Enable self-registration for users on the login pages"
msgstr "Felhaszálók önkéntes regisztrációjának engedélyezése a bejelentkező oldalon"
-#: common/models.py:1062
+#: common/models.py:1069
msgid "Enable SSO"
msgstr "SSO engedélyezése"
-#: common/models.py:1063
+#: common/models.py:1070
msgid "Enable SSO on the login pages"
msgstr "SSO engedélyezése a bejelentkező oldalon"
-#: common/models.py:1069
+#: common/models.py:1076
msgid "Email required"
msgstr "Email szükséges"
-#: common/models.py:1070
+#: common/models.py:1077
msgid "Require user to supply mail on signup"
msgstr "Kötelező email megadás regisztrációkor"
-#: common/models.py:1076
+#: common/models.py:1083
msgid "Auto-fill SSO users"
msgstr "SSO felhasználók automatikus kitöltése"
-#: common/models.py:1077
+#: common/models.py:1084
msgid "Automatically fill out user-details from SSO account-data"
msgstr "Felhasználó adatainak automatikus kitöltése az SSO fiókadatokból"
-#: common/models.py:1083
+#: common/models.py:1090
msgid "Mail twice"
msgstr "Email kétszer"
-#: common/models.py:1084
+#: common/models.py:1091
msgid "On signup ask users twice for their mail"
msgstr "Regisztráláskor kétszer kérdezze a felhasználó email címét"
-#: common/models.py:1090
+#: common/models.py:1097
msgid "Password twice"
msgstr "Jelszó kétszer"
-#: common/models.py:1091
+#: common/models.py:1098
msgid "On signup ask users twice for their password"
msgstr "Regisztráláskor kétszer kérdezze a felhasználó jelszavát"
-#: common/models.py:1097
+#: common/models.py:1104
msgid "Group on signup"
msgstr "Csoport regisztráláskor"
-#: common/models.py:1098
+#: common/models.py:1105
msgid "Group to which new users are assigned on registration"
msgstr "Csoport amihez a frissen regisztrált felhasználók hozzá lesznek rendelve"
-#: common/models.py:1104
+#: common/models.py:1111
msgid "Enforce MFA"
msgstr "Többfaktoros hitelesítés kényszerítése"
-#: common/models.py:1105
+#: common/models.py:1112
msgid "Users must use multifactor security."
msgstr "A felhasználóknak többfaktoros hitelesítést kell használniuk."
-#: common/models.py:1111
+#: common/models.py:1118
msgid "Check plugins on startup"
msgstr "Pluginok ellenőrzése indításkor"
-#: common/models.py:1112
+#: common/models.py:1119
msgid "Check that all plugins are installed on startup - enable in container enviroments"
msgstr "Ellenőrizze induláskor hogy minden plugin telepítve van - engedélyezd konténer környezetben (docker)"
-#: common/models.py:1120
+#: common/models.py:1127
msgid "Enable URL integration"
msgstr "URL integráció engedélyezése"
-#: common/models.py:1121
+#: common/models.py:1128
msgid "Enable plugins to add URL routes"
msgstr "URL útvonalalak hozzáadásának engedélyezése a pluginok számára"
-#: common/models.py:1128
+#: common/models.py:1135
msgid "Enable navigation integration"
msgstr "Navigációs integráció engedélyezése"
-#: common/models.py:1129
+#: common/models.py:1136
msgid "Enable plugins to integrate into navigation"
msgstr "Navigációs integráció engedélyezése a pluginok számára"
-#: common/models.py:1136
+#: common/models.py:1143
msgid "Enable app integration"
msgstr "App integráció engedélyezése"
-#: common/models.py:1137
+#: common/models.py:1144
msgid "Enable plugins to add apps"
msgstr "App hozzáadásának engedélyezése a pluginok számára"
-#: common/models.py:1144
+#: common/models.py:1151
msgid "Enable schedule integration"
msgstr "Ütemezés integráció engedélyezése"
-#: common/models.py:1145
+#: common/models.py:1152
msgid "Enable plugins to run scheduled tasks"
msgstr "Háttérben futó feladatok hozzáadásának engedélyezése a pluginok számára"
-#: common/models.py:1152
+#: common/models.py:1159
msgid "Enable event integration"
msgstr "Esemény integráció engedélyezése"
-#: common/models.py:1153
+#: common/models.py:1160
msgid "Enable plugins to respond to internal events"
msgstr "Belső eseményekre reagálás engedélyezése a pluginok számára"
-#: common/models.py:1170 common/models.py:1492
+#: common/models.py:1177 common/models.py:1499
msgid "Settings key (must be unique - case insensitive"
msgstr "Beállítások kulcs (egyedinek kell lennie, nem kis- nagybetű érzékeny"
-#: common/models.py:1192
+#: common/models.py:1199
msgid "Show subscribed parts"
msgstr "Értesítésre beállított alkatrészek megjelenítése"
-#: common/models.py:1193
+#: common/models.py:1200
msgid "Show subscribed parts on the homepage"
msgstr "Alkatrész értesítések megjelenítése a főoldalon"
-#: common/models.py:1199
+#: common/models.py:1206
msgid "Show subscribed categories"
msgstr "Értesítésre beállított kategóriák megjelenítése"
-#: common/models.py:1200
+#: common/models.py:1207
msgid "Show subscribed part categories on the homepage"
msgstr "Alkatrész kategória értesítések megjelenítése a főoldalon"
-#: common/models.py:1206
+#: common/models.py:1213
msgid "Show latest parts"
msgstr "Legújabb alkatrészek megjelenítése"
-#: common/models.py:1207
+#: common/models.py:1214
msgid "Show latest parts on the homepage"
msgstr "Legújabb alkatrészek megjelenítése a főoldalon"
-#: common/models.py:1213
+#: common/models.py:1220
msgid "Recent Part Count"
msgstr "Legfrissebb alkatrész szám"
-#: common/models.py:1214
+#: common/models.py:1221
msgid "Number of recent parts to display on index page"
msgstr "Főoldalon megjelenítendő legújabb alkatrészek"
-#: common/models.py:1220
+#: common/models.py:1227
msgid "Show unvalidated BOMs"
msgstr "Jóváhagyás nélküli alkatrészjegyzékek megjelenítése"
-#: common/models.py:1221
+#: common/models.py:1228
msgid "Show BOMs that await validation on the homepage"
msgstr "Jóváhagyásra váró alkatrészjegyzékek megjelenítése a főoldalon"
-#: common/models.py:1227
+#: common/models.py:1234
msgid "Show recent stock changes"
msgstr "Legfrissebb készlet változások megjelenítése"
-#: common/models.py:1228
+#: common/models.py:1235
msgid "Show recently changed stock items on the homepage"
msgstr "Legutóbb megváltozott alkatrészek megjelenítése a főoldalon"
-#: common/models.py:1234
+#: common/models.py:1241
msgid "Recent Stock Count"
msgstr "Legfrissebb készlet mennyiség"
-#: common/models.py:1235
+#: common/models.py:1242
msgid "Number of recent stock items to display on index page"
msgstr "Főoldalon megjelenítendő legújabb készlet tételek száma"
-#: common/models.py:1241
+#: common/models.py:1248
msgid "Show low stock"
msgstr "Alacsony készlet megjelenítése"
-#: common/models.py:1242
+#: common/models.py:1249
msgid "Show low stock items on the homepage"
msgstr "Alacsony készletek megjelenítése a főoldalon"
-#: common/models.py:1248
+#: common/models.py:1255
msgid "Show depleted stock"
msgstr "Kimerült készlet megjelenítése"
-#: common/models.py:1249
+#: common/models.py:1256
msgid "Show depleted stock items on the homepage"
msgstr "Kimerült készletek megjelenítése a főoldalon"
-#: common/models.py:1255
+#: common/models.py:1262
msgid "Show needed stock"
msgstr "Gyártáshoz szükséges készlet megjelenítése"
-#: common/models.py:1256
+#: common/models.py:1263
msgid "Show stock items needed for builds on the homepage"
msgstr "Gyártáshoz szükséges készletek megjelenítése a főoldalon"
-#: common/models.py:1262
+#: common/models.py:1269
msgid "Show expired stock"
msgstr "Lejárt készlet megjelenítése"
-#: common/models.py:1263
+#: common/models.py:1270
msgid "Show expired stock items on the homepage"
msgstr "Lejárt készletek megjelenítése a főoldalon"
-#: common/models.py:1269
+#: common/models.py:1276
msgid "Show stale stock"
msgstr "Állott készlet megjelenítése"
-#: common/models.py:1270
+#: common/models.py:1277
msgid "Show stale stock items on the homepage"
msgstr "Álló készletek megjelenítése a főoldalon"
-#: common/models.py:1276
+#: common/models.py:1283
msgid "Show pending builds"
msgstr "Függő gyártások megjelenítése"
-#: common/models.py:1277
+#: common/models.py:1284
msgid "Show pending builds on the homepage"
msgstr "Folyamatban lévő gyártások megjelenítése a főoldalon"
-#: common/models.py:1283
+#: common/models.py:1290
msgid "Show overdue builds"
msgstr "Késésben lévő gyártások megjelenítése"
-#: common/models.py:1284
+#: common/models.py:1291
msgid "Show overdue builds on the homepage"
msgstr "Késésben lévő gyártások megjelenítése a főoldalon"
-#: common/models.py:1290
+#: common/models.py:1297
msgid "Show outstanding POs"
msgstr "Kintlévő beszerzési rendelések megjelenítése"
-#: common/models.py:1291
+#: common/models.py:1298
msgid "Show outstanding POs on the homepage"
msgstr "Kintlévő beszerzési rendelések megjelenítése a főoldalon"
-#: common/models.py:1297
+#: common/models.py:1304
msgid "Show overdue POs"
msgstr "Késésben lévő megrendelések megjelenítése"
-#: common/models.py:1298
+#: common/models.py:1305
msgid "Show overdue POs on the homepage"
msgstr "Késésben lévő megrendelések megjelenítése a főoldalon"
-#: common/models.py:1304
+#: common/models.py:1311
msgid "Show outstanding SOs"
msgstr "Függő vevői rendelések megjelenítése"
-#: common/models.py:1305
+#: common/models.py:1312
msgid "Show outstanding SOs on the homepage"
msgstr "Függő vevői rendelések megjelenítése a főoldalon"
-#: common/models.py:1311
+#: common/models.py:1318
msgid "Show overdue SOs"
msgstr "Késésben lévő vevői rendelések megjelenítése"
-#: common/models.py:1312
+#: common/models.py:1319
msgid "Show overdue SOs on the homepage"
msgstr "Késésben lévő vevői rendelések megjelenítése a főoldalon"
-#: common/models.py:1317
+#: common/models.py:1324
msgid "Enable label printing"
msgstr "Címke nyomtatás engedélyezése"
-#: common/models.py:1318
+#: common/models.py:1325
msgid "Enable label printing from the web interface"
msgstr "Címke nyomtatás engedélyezése a web felületről"
-#: common/models.py:1324
+#: common/models.py:1331
msgid "Inline label display"
msgstr "Beágyazott címke megjelenítés"
-#: common/models.py:1325
+#: common/models.py:1332
msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr "PDF címkék megjelenítése a böngészőben letöltés helyett"
-#: common/models.py:1331
+#: common/models.py:1338
msgid "Inline report display"
msgstr "Beágyazott riport megjelenítés"
-#: common/models.py:1332
+#: common/models.py:1339
msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr "PDF riport megjelenítése a böngészőben letöltés helyett"
-#: common/models.py:1338
+#: common/models.py:1345
msgid "Search Parts"
msgstr "Alkatrészek keresése"
-#: common/models.py:1339
+#: common/models.py:1346
msgid "Display parts in search preview window"
msgstr "Alkatrészek megjelenítése a keresési előnézetben"
-#: common/models.py:1345
+#: common/models.py:1352
msgid "Seach Supplier Parts"
msgstr "Beszállítói alkatrészek keresése"
-#: common/models.py:1346
+#: common/models.py:1353
msgid "Display supplier parts in search preview window"
msgstr "Beszállítói alkatrészek megjelenítése a keresési előnézetben"
-#: common/models.py:1352
+#: common/models.py:1359
msgid "Search Manufacturer Parts"
msgstr "Gyártói alkatrészek keresése"
-#: common/models.py:1353
+#: common/models.py:1360
msgid "Display manufacturer parts in search preview window"
msgstr "Gyártói alkatrészek megjelenítése a keresési előnézetben"
-#: common/models.py:1359
+#: common/models.py:1366
msgid "Hide Inactive Parts"
msgstr "Inaktív alkatrészek elrejtése"
-#: common/models.py:1360
+#: common/models.py:1367
msgid "Excluded inactive parts from search preview window"
msgstr "Inaktív alkatrészek kihagyása a keresési előnézet találataiból"
-#: common/models.py:1366
+#: common/models.py:1373
msgid "Search Categories"
msgstr "Kategóriák keresése"
-#: common/models.py:1367
+#: common/models.py:1374
msgid "Display part categories in search preview window"
msgstr "Alkatrész kategóriák megjelenítése a keresési előnézetben"
-#: common/models.py:1373
+#: common/models.py:1380
msgid "Search Stock"
msgstr "Készlet keresése"
-#: common/models.py:1374
+#: common/models.py:1381
msgid "Display stock items in search preview window"
msgstr "Készlet tételek megjelenítése a keresési előnézetben"
-#: common/models.py:1380
+#: common/models.py:1387
msgid "Hide Unavailable Stock Items"
msgstr "Nem elérhető készlet tételek elrejtése"
-#: common/models.py:1381
+#: common/models.py:1388
msgid "Exclude stock items which are not available from the search preview window"
msgstr "Nem elérhető készlet kihagyása a keresési előnézet találataiból"
-#: common/models.py:1387
+#: common/models.py:1394
msgid "Search Locations"
msgstr "Helyek keresése"
-#: common/models.py:1388
+#: common/models.py:1395
msgid "Display stock locations in search preview window"
msgstr "Készlet helyek megjelenítése a keresési előnézetben"
-#: common/models.py:1394
+#: common/models.py:1401
msgid "Search Companies"
msgstr "Cégek keresése"
-#: common/models.py:1395
+#: common/models.py:1402
msgid "Display companies in search preview window"
msgstr "Cégek megjelenítése a keresési előnézetben"
-#: common/models.py:1401
+#: common/models.py:1408
msgid "Search Purchase Orders"
msgstr "Beszerzési rendelések keresése"
-#: common/models.py:1402
+#: common/models.py:1409
msgid "Display purchase orders in search preview window"
msgstr "Beszerzési rendelések megjelenítése a keresési előnézetben"
-#: common/models.py:1408
+#: common/models.py:1415
msgid "Exclude Inactive Purchase Orders"
msgstr "Inaktív beszerzési rendelések kihagyása"
-#: common/models.py:1409
+#: common/models.py:1416
msgid "Exclude inactive purchase orders from search preview window"
msgstr "Inaktív beszerzési rendelések kihagyása a keresési előnézet találataiból"
-#: common/models.py:1415
+#: common/models.py:1422
msgid "Search Sales Orders"
msgstr "Vevői rendelések keresése"
-#: common/models.py:1416
+#: common/models.py:1423
msgid "Display sales orders in search preview window"
msgstr "Vevői rendelések megjelenítése a keresési előnézetben"
-#: common/models.py:1422
+#: common/models.py:1429
msgid "Exclude Inactive Sales Orders"
msgstr "Inaktív vevői rendelések kihagyása"
-#: common/models.py:1423
+#: common/models.py:1430
msgid "Exclude inactive sales orders from search preview window"
msgstr "Inaktív vevői rendelések kihagyása a keresési előnézet találataiból"
-#: common/models.py:1429
+#: common/models.py:1436
msgid "Search Preview Results"
msgstr "Keresési előnézet eredményei"
-#: common/models.py:1430
+#: common/models.py:1437
msgid "Number of results to show in each section of the search preview window"
msgstr "A keresési előnézetben megjelenítendő eredmények száma szekciónként"
-#: common/models.py:1436
+#: common/models.py:1443
msgid "Show Quantity in Forms"
msgstr "Mennyiség megjelenítése a formokon"
-#: common/models.py:1437
+#: common/models.py:1444
msgid "Display available part quantity in some forms"
msgstr "Rendelkezésre álló alkatrész mennyiség megjelenítése néhány formon"
-#: common/models.py:1443
+#: common/models.py:1450
msgid "Escape Key Closes Forms"
msgstr "ESC billentyű zárja be a formot"
-#: common/models.py:1444
+#: common/models.py:1451
msgid "Use the escape key to close modal forms"
msgstr "ESC billentyű használata a modális formok bezárásához"
-#: common/models.py:1450
+#: common/models.py:1457
msgid "Fixed Navbar"
msgstr "Rögzített menüsor"
-#: common/models.py:1451
+#: common/models.py:1458
msgid "The navbar position is fixed to the top of the screen"
msgstr "A menü pozíciója mindig rögzítve a lap tetején"
-#: common/models.py:1457
+#: common/models.py:1464
msgid "Date Format"
msgstr "Dátum formátum"
-#: common/models.py:1458
+#: common/models.py:1465
msgid "Preferred format for displaying dates"
msgstr "Preferált dátum formátum a dátumok kijelzésekor"
-#: common/models.py:1472 part/templates/part/detail.html:39
+#: common/models.py:1479 part/templates/part/detail.html:39
msgid "Part Scheduling"
msgstr "Alkatrész ütemezés"
-#: common/models.py:1473
+#: common/models.py:1480
msgid "Display part scheduling information"
msgstr "Alkatrész ütemezési információk megjelenítése"
-#: common/models.py:1537 company/forms.py:37
+#: common/models.py:1544 company/forms.py:37
msgid "Price break quantity"
msgstr "Árlépcső mennyiség"
-#: common/models.py:1544 company/serializers.py:288
-#: company/templates/company/supplier_part.html:263 order/models.py:949
-#: templates/js/translated/part.js:998 templates/js/translated/part.js:1974
+#: common/models.py:1551 company/serializers.py:290
+#: company/templates/company/supplier_part.html:263 order/models.py:965
+#: templates/js/translated/part.js:1042 templates/js/translated/part.js:2070
msgid "Price"
msgstr "Ár"
-#: common/models.py:1545
+#: common/models.py:1552
msgid "Unit price at specified quantity"
msgstr "Egységár egy meghatározott mennyiség esetén"
-#: common/models.py:1705 common/models.py:1883
+#: common/models.py:1712 common/models.py:1890
msgid "Endpoint"
msgstr "Végpont"
-#: common/models.py:1706
+#: common/models.py:1713
msgid "Endpoint at which this webhook is received"
msgstr "Végpont ahol ez a webhook érkezik"
-#: common/models.py:1715
+#: common/models.py:1722
msgid "Name for this webhook"
msgstr "Webhook neve"
-#: common/models.py:1720 part/models.py:911 plugin/models.py:99
+#: common/models.py:1727 part/models.py:911 plugin/models.py:99
#: templates/js/translated/table_filters.js:34
#: templates/js/translated/table_filters.js:96
#: templates/js/translated/table_filters.js:308
@@ -2458,79 +2475,89 @@ msgstr "Webhook neve"
msgid "Active"
msgstr "Aktív"
-#: common/models.py:1721
+#: common/models.py:1728
msgid "Is this webhook active"
msgstr "Aktív-e ez a webhook"
-#: common/models.py:1735
+#: common/models.py:1742
msgid "Token"
msgstr "Token"
-#: common/models.py:1736
+#: common/models.py:1743
msgid "Token for access"
msgstr "Token a hozzáféréshez"
-#: common/models.py:1743
+#: common/models.py:1750
msgid "Secret"
msgstr "Titok"
-#: common/models.py:1744
+#: common/models.py:1751
msgid "Shared secret for HMAC"
msgstr "Megosztott titok a HMAC-hoz"
-#: common/models.py:1850
+#: common/models.py:1857
msgid "Message ID"
msgstr "Üzenet azonosító"
-#: common/models.py:1851
+#: common/models.py:1858
msgid "Unique identifier for this message"
msgstr "Egyedi azonosító ehhez az üzenethez"
-#: common/models.py:1859
+#: common/models.py:1866
msgid "Host"
msgstr "Kiszolgáló"
-#: common/models.py:1860
+#: common/models.py:1867
msgid "Host from which this message was received"
msgstr "Kiszolgáló ahonnan ez az üzenet érkezett"
-#: common/models.py:1867
+#: common/models.py:1874
msgid "Header"
msgstr "Fejléc"
-#: common/models.py:1868
+#: common/models.py:1875
msgid "Header of this message"
msgstr "Üzenet fejléce"
-#: common/models.py:1874
+#: common/models.py:1881
msgid "Body"
msgstr "Törzs"
-#: common/models.py:1875
+#: common/models.py:1882
msgid "Body of this message"
msgstr "Üzenet törzse"
-#: common/models.py:1884
+#: common/models.py:1891
msgid "Endpoint on which this message was received"
msgstr "Végpont amin ez az üzenet érkezett"
-#: common/models.py:1889
+#: common/models.py:1896
msgid "Worked on"
msgstr "Dolgozott rajta"
-#: common/models.py:1890
+#: common/models.py:1897
msgid "Was the work on this message finished?"
msgstr "Befejeződött a munka ezzel az üzenettel?"
+#: common/notifications.py:292
+#, python-brace-format
+msgid "New {verbose_name}"
+msgstr ""
+
+#: common/notifications.py:294
+#, python-brace-format
+msgid "A new {verbose_name} has been created and ,assigned to you"
+msgstr ""
+
#: common/views.py:87 order/templates/order/purchase_order_detail.html:23
-#: order/views.py:102 part/views.py:191
+#: order/views.py:102 part/views.py:116
#: templates/patterns/wizard/upload.html:37
msgid "Upload File"
msgstr "Fájl feltöltése"
#: common/views.py:88 order/views.py:103
#: part/templates/part/import_wizard/ajax_match_fields.html:45
-#: part/views.py:192 templates/patterns/wizard/match_fields.html:51
+#: part/views.py:117 templates/patterns/wizard/match_fields.html:51
msgid "Match Fields"
msgstr "Mezők egyeztetése"
@@ -2546,19 +2573,19 @@ msgstr "Mezők egyeztetése sikertelen"
msgid "Parts imported"
msgstr "Importált alkatrészek"
-#: common/views.py:507 order/templates/order/order_wizard/match_parts.html:19
+#: common/views.py:511 order/templates/order/order_wizard/match_parts.html:19
#: part/templates/part/import_wizard/match_references.html:19
#: templates/patterns/wizard/match_fields.html:26
#: templates/patterns/wizard/upload.html:35
msgid "Previous Step"
msgstr "Előző lépés"
-#: company/forms.py:16 part/forms.py:21
+#: company/forms.py:16 part/forms.py:18
#: templates/InvenTree/settings/mixins/urls.html:14
msgid "URL"
msgstr "URL"
-#: company/forms.py:17 part/forms.py:22
+#: company/forms.py:17 part/forms.py:19
msgid "Image URL"
msgstr "Kép URL"
@@ -2572,7 +2599,7 @@ msgstr "A cég leírása"
#: company/models.py:104 company/templates/company/company_base.html:100
#: templates/InvenTree/settings/plugin_settings.html:55
-#: templates/js/translated/company.js:405
+#: templates/js/translated/company.js:399
msgid "Website"
msgstr "Weboldal"
@@ -2645,9 +2672,9 @@ msgstr "gyártó-e"
msgid "Does this company manufacture parts?"
msgstr "Gyárt ez a cég alkatrészeket?"
-#: company/models.py:144 company/serializers.py:294
-#: company/templates/company/company_base.html:106 part/serializers.py:137
-#: part/serializers.py:168 stock/serializers.py:162
+#: company/models.py:144 company/serializers.py:296
+#: company/templates/company/company_base.html:106 part/serializers.py:139
+#: part/serializers.py:170 stock/serializers.py:162
msgid "Currency"
msgstr "Pénznem"
@@ -2668,10 +2695,10 @@ msgstr "Válassz alkatrészt"
#: company/templates/company/manufacturer_part.html:90
#: company/templates/company/supplier_part.html:103
#: stock/templates/stock/item_base.html:212
-#: templates/js/translated/company.js:389
-#: templates/js/translated/company.js:488
-#: templates/js/translated/company.js:632
-#: templates/js/translated/company.js:917 templates/js/translated/part.js:235
+#: templates/js/translated/company.js:383
+#: templates/js/translated/company.js:484
+#: templates/js/translated/company.js:617
+#: templates/js/translated/company.js:902 templates/js/translated/part.js:235
#: templates/js/translated/table_filters.js:411
msgid "Manufacturer"
msgstr "Gyártó"
@@ -2682,11 +2709,11 @@ msgstr "Gyártó kiválasztása"
#: company/models.py:266 company/templates/company/manufacturer_part.html:101
#: company/templates/company/supplier_part.html:111
-#: templates/js/translated/company.js:255
-#: templates/js/translated/company.js:487
-#: templates/js/translated/company.js:648
-#: templates/js/translated/company.js:935 templates/js/translated/order.js:1907
-#: templates/js/translated/part.js:246 templates/js/translated/part.js:956
+#: templates/js/translated/company.js:256
+#: templates/js/translated/company.js:483
+#: templates/js/translated/company.js:633
+#: templates/js/translated/company.js:920 templates/js/translated/order.js:1907
+#: templates/js/translated/part.js:246 templates/js/translated/part.js:1000
msgid "MPN"
msgstr "MPN"
@@ -2715,9 +2742,9 @@ msgstr "Paraméter neve"
#: company/models.py:361
#: report/templates/report/inventree_test_report_base.html:95
-#: stock/models.py:2080 templates/js/translated/company.js:540
-#: templates/js/translated/company.js:763 templates/js/translated/part.js:776
-#: templates/js/translated/stock.js:1294
+#: stock/models.py:2084 templates/js/translated/company.js:531
+#: templates/js/translated/company.js:748 templates/js/translated/part.js:820
+#: templates/js/translated/stock.js:1304
msgid "Value"
msgstr "Érték"
@@ -2725,10 +2752,10 @@ msgstr "Érték"
msgid "Parameter value"
msgstr "Paraméter értéke"
-#: company/models.py:368 part/models.py:878 part/models.py:2339
+#: company/models.py:368 part/models.py:878 part/models.py:2327
#: part/templates/part/part_base.html:280
#: templates/InvenTree/settings/settings.html:351
-#: templates/js/translated/company.js:769 templates/js/translated/part.js:782
+#: templates/js/translated/company.js:754 templates/js/translated/part.js:826
msgid "Units"
msgstr "Mértékegységek"
@@ -2741,13 +2768,14 @@ msgid "Linked manufacturer part must reference the same base part"
msgstr "Kapcsolódó gyártói alkatrésznek ugyanarra a kiindulási alkatrészre kell hivatkoznia"
#: company/models.py:487 company/templates/company/company_base.html:81
-#: company/templates/company/supplier_part.html:87 order/models.py:303
+#: company/templates/company/supplier_part.html:87 order/models.py:308
#: order/templates/order/order_base.html:112 part/bom.py:237 part/bom.py:265
#: stock/templates/stock/item_base.html:229
-#: templates/js/translated/company.js:254
-#: templates/js/translated/company.js:393
-#: templates/js/translated/company.js:891 templates/js/translated/order.js:1643
-#: templates/js/translated/part.js:216 templates/js/translated/part.js:924
+#: templates/email/overdue_purchase_order.html:16
+#: templates/js/translated/company.js:255
+#: templates/js/translated/company.js:387
+#: templates/js/translated/company.js:876 templates/js/translated/order.js:1643
+#: templates/js/translated/part.js:216 templates/js/translated/part.js:968
#: templates/js/translated/table_filters.js:415
msgid "Supplier"
msgstr "Beszállító"
@@ -2757,9 +2785,9 @@ msgid "Select supplier"
msgstr "Beszállító kiválasztása"
#: company/models.py:493 company/templates/company/supplier_part.html:97
-#: part/bom.py:238 part/bom.py:266 templates/js/translated/company.js:253
+#: part/bom.py:238 part/bom.py:266 templates/js/translated/company.js:254
#: templates/js/translated/order.js:1894 templates/js/translated/part.js:227
-#: templates/js/translated/part.js:942
+#: templates/js/translated/part.js:986
msgid "SKU"
msgstr "SKU"
@@ -2780,23 +2808,23 @@ msgid "Supplier part description"
msgstr "Beszállítói alkatrész leírása"
#: company/models.py:518 company/templates/company/supplier_part.html:125
-#: part/models.py:2573 part/templates/part/upload_bom.html:59
+#: part/models.py:2561 part/templates/part/upload_bom.html:59
#: report/templates/report/inventree_po_report.html:92
#: report/templates/report/inventree_so_report.html:93 stock/serializers.py:387
msgid "Note"
msgstr "Megjegyzés"
-#: company/models.py:522 part/models.py:1688
+#: company/models.py:522 part/models.py:1683
msgid "base cost"
msgstr "alap költség"
-#: company/models.py:522 part/models.py:1688
+#: company/models.py:522 part/models.py:1683
msgid "Minimum charge (e.g. stocking fee)"
msgstr "Minimális díj (pl. tárolási díj)"
#: company/models.py:524 company/templates/company/supplier_part.html:118
#: stock/models.py:608 stock/templates/stock/item_base.html:245
-#: templates/js/translated/company.js:967 templates/js/translated/stock.js:1912
+#: templates/js/translated/company.js:952 templates/js/translated/stock.js:1922
msgid "Packaging"
msgstr "Csomagolás"
@@ -2804,7 +2832,7 @@ msgstr "Csomagolás"
msgid "Part packaging"
msgstr "Alkatrész csomagolás"
-#: company/models.py:526 part/models.py:1690
+#: company/models.py:526 part/models.py:1685
msgid "multiple"
msgstr "többszörös"
@@ -2826,7 +2854,7 @@ msgstr "Pénznem kódja"
#: company/templates/company/company_base.html:8
#: company/templates/company/company_base.html:12
-#: templates/InvenTree/search.html:177 templates/js/translated/company.js:378
+#: templates/InvenTree/search.html:177 templates/js/translated/company.js:372
msgid "Company"
msgstr "Cég"
@@ -2844,7 +2872,7 @@ msgid "Edit company information"
msgstr "Cég adatainak szerkesztése"
#: company/templates/company/company_base.html:34
-#: templates/js/translated/company.js:321
+#: templates/js/translated/company.js:315
msgid "Edit Company"
msgstr "Cég szerkesztése"
@@ -2867,12 +2895,13 @@ msgstr "Új kép feltöltése"
msgid "Download image from URL"
msgstr "Kép letöltése URL-ről"
-#: company/templates/company/company_base.html:86 order/models.py:649
+#: company/templates/company/company_base.html:86 order/models.py:665
#: order/templates/order/sales_order_base.html:116 stock/models.py:627
-#: stock/models.py:628 stock/serializers.py:758
+#: stock/models.py:628 stock/serializers.py:745
#: stock/templates/stock/item_base.html:401
-#: templates/js/translated/company.js:385 templates/js/translated/order.js:2458
-#: templates/js/translated/stock.js:2431
+#: templates/email/overdue_sales_order.html:16
+#: templates/js/translated/company.js:379 templates/js/translated/order.js:2458
+#: templates/js/translated/stock.js:2441
#: templates/js/translated/table_filters.js:419
msgid "Customer"
msgstr "Vevő"
@@ -3000,7 +3029,7 @@ msgid "Supplier List"
msgstr "Beszállítók listája"
#: company/templates/company/manufacturer_part.html:15 company/views.py:45
-#: part/templates/part/prices.html:170 templates/InvenTree/search.html:179
+#: part/templates/part/prices.html:172 templates/InvenTree/search.html:179
#: templates/navbar.html:49
msgid "Manufacturers"
msgstr "Gyártók"
@@ -3013,12 +3042,12 @@ msgid "Order part"
msgstr "Alkatrész rendelés"
#: company/templates/company/manufacturer_part.html:39
-#: templates/js/translated/company.js:680
+#: templates/js/translated/company.js:665
msgid "Edit manufacturer part"
msgstr "Gyártói alkatrész szerkesztése"
#: company/templates/company/manufacturer_part.html:43
-#: templates/js/translated/company.js:681
+#: templates/js/translated/company.js:666
msgid "Delete manufacturer part"
msgstr "Gyártói alkatrész törlése"
@@ -3033,7 +3062,7 @@ msgstr "Nincs elérhető gyártói információ"
#: company/templates/company/manufacturer_part.html:119
#: company/templates/company/supplier_part.html:15 company/views.py:39
-#: part/templates/part/part_sidebar.html:35 part/templates/part/prices.html:166
+#: part/templates/part/part_sidebar.html:35 part/templates/part/prices.html:168
#: templates/InvenTree/search.html:189 templates/navbar.html:48
msgid "Suppliers"
msgstr "Beszállítók"
@@ -3093,18 +3122,18 @@ msgstr "Hozzárendelt készlet tételek"
#: company/templates/company/supplier_part.html:7
#: company/templates/company/supplier_part.html:24 stock/models.py:592
#: stock/templates/stock/item_base.html:238
-#: templates/js/translated/company.js:907 templates/js/translated/order.js:884
-#: templates/js/translated/stock.js:1869
+#: templates/js/translated/company.js:892 templates/js/translated/order.js:884
+#: templates/js/translated/stock.js:1879
msgid "Supplier Part"
msgstr "Beszállítói alkatrész"
#: company/templates/company/supplier_part.html:38
-#: templates/js/translated/company.js:980
+#: templates/js/translated/company.js:965
msgid "Edit supplier part"
msgstr "Beszállítói alkatrész szerkesztése"
#: company/templates/company/supplier_part.html:42
-#: templates/js/translated/company.js:981
+#: templates/js/translated/company.js:966
msgid "Delete supplier part"
msgstr "Beszállítói alkatrész törlése"
@@ -3124,7 +3153,7 @@ msgstr "Új készlet tétel létrehozása"
#: company/templates/company/supplier_part.html:148
#: part/templates/part/detail.html:24 stock/templates/stock/location.html:177
-#: templates/js/translated/stock.js:380
+#: templates/js/translated/stock.js:379
msgid "New Stock Item"
msgstr "Új készlet tétel"
@@ -3145,7 +3174,7 @@ msgstr "Árinformációk"
#: company/templates/company/supplier_part.html:191
#: company/templates/company/supplier_part.html:305
-#: part/templates/part/prices.html:274 templates/js/translated/part.js:2046
+#: part/templates/part/prices.html:276 templates/js/translated/part.js:2142
msgid "Add Price Break"
msgstr "Árlépcső hozzáadása"
@@ -3154,12 +3183,12 @@ msgid "No price break information found"
msgstr "Nincs árlépcső információ"
#: company/templates/company/supplier_part.html:231
-#: templates/js/translated/part.js:2056
+#: templates/js/translated/part.js:2152
msgid "Delete Price Break"
msgstr "Árlépcső törlése"
#: company/templates/company/supplier_part.html:245
-#: templates/js/translated/part.js:2070
+#: templates/js/translated/part.js:2166
msgid "Edit Price Break"
msgstr "Árlépcső szerkesztése"
@@ -3181,9 +3210,9 @@ msgstr "Utoljára módosítva"
#: stock/templates/stock/stock_app_base.html:10
#: templates/InvenTree/search.html:151
#: templates/InvenTree/settings/sidebar.html:43
-#: templates/js/translated/bom.js:554 templates/js/translated/part.js:678
-#: templates/js/translated/part.js:1226 templates/js/translated/part.js:1387
-#: templates/js/translated/stock.js:904 templates/js/translated/stock.js:1687
+#: templates/js/translated/bom.js:554 templates/js/translated/part.js:722
+#: templates/js/translated/part.js:1270 templates/js/translated/part.js:1431
+#: templates/js/translated/stock.js:903 templates/js/translated/stock.js:1697
#: templates/navbar.html:31
msgid "Stock"
msgstr "Készlet"
@@ -3210,7 +3239,7 @@ msgstr "Árazás"
#: stock/templates/stock/location.html:173
#: stock/templates/stock/location_sidebar.html:7
#: templates/InvenTree/search.html:153 templates/js/translated/search.js:223
-#: templates/js/translated/stock.js:2307 users/models.py:39
+#: templates/js/translated/stock.js:2317 users/models.py:39
msgid "Stock Items"
msgstr "Készlet tételek"
@@ -3239,20 +3268,20 @@ msgstr "Cégek"
msgid "New Company"
msgstr "Új cég"
-#: company/views.py:112 part/views.py:576
+#: company/views.py:112 part/views.py:501
msgid "Download Image"
msgstr "Kép letöltése"
-#: company/views.py:139 part/views.py:606
+#: company/views.py:139 part/views.py:531
msgid "Image size exceeds maximum allowable size for download"
msgstr "A kép mérete meghaladja a maximum megengedett letöltés méretét"
-#: company/views.py:146 part/views.py:613
+#: company/views.py:146 part/views.py:538
#, python-brace-format
msgid "Invalid response: {code}"
msgstr "Érvénytelen válasz: {code}"
-#: company/views.py:155 part/views.py:622
+#: company/views.py:155 part/views.py:547
msgid "Supplied URL is not a valid image file"
msgstr "A megadott URL nem egy érvényes kép fájl"
@@ -3321,313 +3350,314 @@ msgstr "Lekérdezés szűrők (vesszővel elválasztott kulcs=érték párok"
msgid "Part query filters (comma-separated value of key=value pairs)"
msgstr "Alkatrész lekérdezés szűrők (vesszővel elválasztott kulcs=érték párok)"
-#: order/models.py:133
+#: order/models.py:134
msgid "Order description"
msgstr "Rendelés leírása"
-#: order/models.py:135 order/models.py:1236
+#: order/models.py:136 order/models.py:1252
msgid "Link to external page"
msgstr "Link külső weboldalra"
-#: order/models.py:143
+#: order/models.py:144
msgid "Created By"
msgstr "Készítette"
-#: order/models.py:150
+#: order/models.py:151
msgid "User or group responsible for this order"
msgstr "Felhasználó vagy csoport aki felelőse ennek a rendelésnek"
-#: order/models.py:155
+#: order/models.py:156
msgid "Order notes"
msgstr "Rendelés jegyzetek"
-#: order/models.py:289 order/models.py:639
+#: order/models.py:294 order/models.py:655
msgid "Order reference"
msgstr "Rendelés azonosító"
-#: order/models.py:294 order/models.py:654
+#: order/models.py:299 order/models.py:670
msgid "Purchase order status"
msgstr "Beszerzési rendelés állapota"
-#: order/models.py:304
+#: order/models.py:309
msgid "Company from which the items are being ordered"
msgstr "Cég akitől a tételek beszerzésre kerülnek"
-#: order/models.py:307 order/templates/order/order_base.html:124
+#: order/models.py:312 order/templates/order/order_base.html:124
#: templates/js/translated/order.js:1652
msgid "Supplier Reference"
msgstr "Beszállítói azonosító"
-#: order/models.py:307
+#: order/models.py:312
msgid "Supplier order reference code"
msgstr "Beszállítói rendelés azonosító kód"
-#: order/models.py:314
+#: order/models.py:319
msgid "received by"
msgstr "érkeztette"
-#: order/models.py:319
+#: order/models.py:324
msgid "Issue Date"
msgstr "Kiállítás dátuma"
-#: order/models.py:320
+#: order/models.py:325
msgid "Date order was issued"
msgstr "Kiállítás dátuma"
-#: order/models.py:325
+#: order/models.py:330
msgid "Target Delivery Date"
msgstr "Várható beérkezés"
-#: order/models.py:326
+#: order/models.py:331
msgid "Expected date for order delivery. Order will be overdue after this date."
msgstr "Várt teljesítési dátuma a megrendelésnek. Ezután már késésben lévőnek számít majd."
-#: order/models.py:332
+#: order/models.py:337
msgid "Date order was completed"
msgstr "Rendelés teljesítési dátuma"
-#: order/models.py:368
+#: order/models.py:373
msgid "Part supplier must match PO supplier"
msgstr "Az alkatrész beszállítója meg kell egyezzen a beszerzési rendelés beszállítójával"
-#: order/models.py:512
+#: order/models.py:517
msgid "Quantity must be a positive number"
msgstr "Mennyiség pozitív kell legyen"
-#: order/models.py:650
+#: order/models.py:666
msgid "Company to which the items are being sold"
msgstr "Cég akinek a tételek értékesítésre kerülnek"
-#: order/models.py:656
+#: order/models.py:672
msgid "Customer Reference "
msgstr "Vevői azonosító "
-#: order/models.py:656
+#: order/models.py:672
msgid "Customer order reference code"
msgstr "Megrendelés azonosító kódja a vevőnél"
-#: order/models.py:661
+#: order/models.py:677
msgid "Target date for order completion. Order will be overdue after this date."
msgstr "Cél dátum a rendelés teljesítéséhez. Ez után számít majd késettnek."
-#: order/models.py:664 order/models.py:1190
+#: order/models.py:680 order/models.py:1206
#: templates/js/translated/order.js:2505 templates/js/translated/order.js:2656
msgid "Shipment Date"
msgstr "Kiszállítás dátuma"
-#: order/models.py:671
+#: order/models.py:687
msgid "shipped by"
msgstr "szállította"
-#: order/models.py:726
+#: order/models.py:742
msgid "Order cannot be completed as no parts have been assigned"
msgstr "A rendelés nem teljesíthető mivel nincs hozzárendelve alkatrész"
-#: order/models.py:730
+#: order/models.py:746
msgid "Only a pending order can be marked as complete"
msgstr "Csak függő rendelés jelölhető késznek"
-#: order/models.py:733
+#: order/models.py:749
msgid "Order cannot be completed as there are incomplete shipments"
msgstr "A rendelés nem jelölhető késznek mivel függő szállítmányok vannak"
-#: order/models.py:736
+#: order/models.py:752
msgid "Order cannot be completed as there are incomplete line items"
msgstr "A rendelés nem jelölhető késznek mivel nem teljesített sortételek vannak"
-#: order/models.py:910
+#: order/models.py:926
msgid "Item quantity"
msgstr "Tétel mennyiség"
-#: order/models.py:916
+#: order/models.py:932
msgid "Line item reference"
msgstr "Sortétel azonosító"
-#: order/models.py:918
+#: order/models.py:934
msgid "Line item notes"
msgstr "Sortétel megjegyzései"
-#: order/models.py:923
+#: order/models.py:939
msgid "Target shipping date for this line item"
msgstr "Cél szállítási dátuma ennek a sortételnek"
-#: order/models.py:941
+#: order/models.py:957
msgid "Context"
msgstr "Kontextus"
-#: order/models.py:942
+#: order/models.py:958
msgid "Additional context for this line"
msgstr "További kontextus ehhez a sorhoz"
-#: order/models.py:950
+#: order/models.py:966
msgid "Unit price"
msgstr "Egységár"
-#: order/models.py:980
+#: order/models.py:996
msgid "Supplier part must match supplier"
msgstr "Beszállítói alkatrésznek egyeznie kell a beszállítóval"
-#: order/models.py:988
+#: order/models.py:1004
msgid "deleted"
msgstr "törölve"
-#: order/models.py:994 order/models.py:1074 order/models.py:1099
-#: order/models.py:1184 order/models.py:1320
+#: order/models.py:1010 order/models.py:1090 order/models.py:1115
+#: order/models.py:1200 order/models.py:1336
#: templates/js/translated/order.js:3112
msgid "Order"
msgstr "Rendelés"
-#: order/models.py:995 order/models.py:1074
+#: order/models.py:1011 order/models.py:1090
#: order/templates/order/order_base.html:9
#: order/templates/order/order_base.html:18
#: report/templates/report/inventree_po_report.html:76
#: stock/templates/stock/item_base.html:184
+#: templates/email/overdue_purchase_order.html:15
#: templates/js/translated/order.js:885 templates/js/translated/order.js:1621
-#: templates/js/translated/part.js:899 templates/js/translated/stock.js:1846
-#: templates/js/translated/stock.js:2412
+#: templates/js/translated/part.js:943 templates/js/translated/stock.js:1856
+#: templates/js/translated/stock.js:2422
msgid "Purchase Order"
msgstr "Beszerzési rendelés"
-#: order/models.py:1013
+#: order/models.py:1029
msgid "Supplier part"
msgstr "Beszállítói alkatrész"
-#: order/models.py:1020 order/templates/order/order_base.html:169
+#: order/models.py:1036 order/templates/order/order_base.html:169
#: templates/js/translated/order.js:1318 templates/js/translated/order.js:2009
-#: templates/js/translated/part.js:993 templates/js/translated/part.js:1020
+#: templates/js/translated/part.js:1037 templates/js/translated/part.js:1064
#: templates/js/translated/table_filters.js:330
msgid "Received"
msgstr "Beérkezett"
-#: order/models.py:1021
+#: order/models.py:1037
msgid "Number of items received"
msgstr "Érkezett tételek száma"
-#: order/models.py:1028 part/templates/part/prices.html:179 stock/models.py:722
+#: order/models.py:1044 part/templates/part/prices.html:181 stock/models.py:722
#: stock/serializers.py:153 stock/templates/stock/item_base.html:191
-#: templates/js/translated/stock.js:1900
+#: templates/js/translated/stock.js:1910
msgid "Purchase Price"
msgstr "Beszerzési ár"
-#: order/models.py:1029
+#: order/models.py:1045
msgid "Unit purchase price"
msgstr "Beszerzési egységár"
-#: order/models.py:1037
+#: order/models.py:1053
msgid "Where does the Purchaser want this item to be stored?"
msgstr "Mit szeretne a vevő hol tároljuk ezt az alkatrészt?"
-#: order/models.py:1109 part/templates/part/part_pricing.html:112
-#: part/templates/part/prices.html:119 part/templates/part/prices.html:288
+#: order/models.py:1125 part/templates/part/part_pricing.html:115
+#: part/templates/part/prices.html:121 part/templates/part/prices.html:290
msgid "Sale Price"
msgstr "Eladási ár"
-#: order/models.py:1110
+#: order/models.py:1126
msgid "Unit sale price"
msgstr "Eladási egységár"
-#: order/models.py:1115
+#: order/models.py:1131
msgid "Shipped quantity"
msgstr "Szállított mennyiség"
-#: order/models.py:1191
+#: order/models.py:1207
msgid "Date of shipment"
msgstr "Szállítás dátuma"
-#: order/models.py:1198
+#: order/models.py:1214
msgid "Checked By"
msgstr "Ellenőrizte"
-#: order/models.py:1199
+#: order/models.py:1215
msgid "User who checked this shipment"
msgstr "Felhasználó aki ellenőrizte ezt a szállítmányt"
-#: order/models.py:1207
+#: order/models.py:1223
msgid "Shipment number"
msgstr "Szállítmány száma"
-#: order/models.py:1214
+#: order/models.py:1230
msgid "Shipment notes"
msgstr "Szállítmány megjegyzései"
-#: order/models.py:1221
+#: order/models.py:1237
msgid "Tracking Number"
msgstr "Nyomkövetési szám"
-#: order/models.py:1222
+#: order/models.py:1238
msgid "Shipment tracking information"
msgstr "Szállítmány nyomkövetési információ"
-#: order/models.py:1229
+#: order/models.py:1245
msgid "Invoice Number"
msgstr "Számlaszám"
-#: order/models.py:1230
+#: order/models.py:1246
msgid "Reference number for associated invoice"
msgstr "Hozzátartozó számla referencia száma"
-#: order/models.py:1248
+#: order/models.py:1264
msgid "Shipment has already been sent"
msgstr "Szállítmány már elküldve"
-#: order/models.py:1251
+#: order/models.py:1267
msgid "Shipment has no allocated stock items"
msgstr "Szállítmány nem tartalmaz foglalt készlet tételeket"
-#: order/models.py:1354 order/models.py:1356
+#: order/models.py:1370 order/models.py:1372
msgid "Stock item has not been assigned"
msgstr "Készlet tétel nincs hozzárendelve"
-#: order/models.py:1360
+#: order/models.py:1376
msgid "Cannot allocate stock item to a line with a different part"
msgstr "Nem foglalható készlet egy másik fajta alkatrész sortételéhez"
-#: order/models.py:1362
+#: order/models.py:1378
msgid "Cannot allocate stock to a line without a part"
msgstr "Nem foglalható készlet egy olyan sorhoz amiben nincs alkatrész"
-#: order/models.py:1365
+#: order/models.py:1381
msgid "Allocation quantity cannot exceed stock quantity"
msgstr "A lefoglalandó mennyiség nem haladhatja meg a készlet mennyiségét"
-#: order/models.py:1369
+#: order/models.py:1385
msgid "StockItem is over-allocated"
msgstr "Készlet tétel túlfoglalva"
-#: order/models.py:1375 order/serializers.py:1045
+#: order/models.py:1391 order/serializers.py:1047
msgid "Quantity must be 1 for serialized stock item"
msgstr "Egyedi követésre kötelezett tételeknél a menyiség 1 kell legyen"
-#: order/models.py:1378
+#: order/models.py:1394
msgid "Sales order does not match shipment"
msgstr "Vevői rendelés nem egyezik a szállítmánnyal"
-#: order/models.py:1379
+#: order/models.py:1395
msgid "Shipment does not match sales order"
msgstr "Szállítmány nem egyezik a vevői rendeléssel"
-#: order/models.py:1387
+#: order/models.py:1403
msgid "Line"
msgstr "Sor"
-#: order/models.py:1395 order/serializers.py:1149 order/serializers.py:1273
+#: order/models.py:1411 order/serializers.py:1151 order/serializers.py:1275
#: templates/js/translated/model_renderers.js:301
msgid "Shipment"
msgstr "Szállítmány"
-#: order/models.py:1396
+#: order/models.py:1412
msgid "Sales order shipment reference"
msgstr "Vevői rendelés szállítmány azonosító"
-#: order/models.py:1408 templates/InvenTree/notifications/notifications.html:70
+#: order/models.py:1424 templates/InvenTree/notifications/notifications.html:70
msgid "Item"
msgstr "Tétel"
-#: order/models.py:1409
+#: order/models.py:1425
msgid "Select stock item to allocate"
msgstr "Válaszd ki a foglalásra szánt készlet tételt"
-#: order/models.py:1412
+#: order/models.py:1428
msgid "Enter stock allocation quantity"
msgstr "Készlet foglalási mennyiség megadása"
@@ -3663,7 +3693,7 @@ msgstr "A beszállítónak egyeznie kell a beszerzési rendelésben lévővel"
msgid "Purchase order must match supplier"
msgstr "A beszerzési rendelésnek egyeznie kell a beszállítóval"
-#: order/serializers.py:406 order/serializers.py:1117
+#: order/serializers.py:406 order/serializers.py:1119
msgid "Line Item"
msgstr "Sortétel"
@@ -3711,42 +3741,60 @@ msgstr "A cél helyet kötelező megadni"
msgid "Supplied barcode values must be unique"
msgstr "Megadott vonalkódoknak egyedieknek kel lenniük"
-#: order/serializers.py:866
+#: order/serializers.py:868
msgid "Sale price currency"
msgstr "Eladási ár pénzneme"
-#: order/serializers.py:947
+#: order/serializers.py:949
msgid "No shipment details provided"
msgstr "Nincsenek szállítmány részletek megadva"
-#: order/serializers.py:1006 order/serializers.py:1126
+#: order/serializers.py:1008 order/serializers.py:1128
msgid "Line item is not associated with this order"
msgstr "Sortétel nincs hozzárendelve ehhez a rendeléshez"
-#: order/serializers.py:1028
+#: order/serializers.py:1030
msgid "Quantity must be positive"
msgstr "Mennyiség pozitív kell legyen"
-#: order/serializers.py:1139
+#: order/serializers.py:1141
msgid "Enter serial numbers to allocate"
msgstr "Írd be a sorozatszámokat a kiosztáshoz"
-#: order/serializers.py:1161 order/serializers.py:1281
+#: order/serializers.py:1163 order/serializers.py:1283
msgid "Shipment has already been shipped"
msgstr "Szállítmány kiszállítva"
-#: order/serializers.py:1164 order/serializers.py:1284
+#: order/serializers.py:1166 order/serializers.py:1286
msgid "Shipment is not associated with this order"
msgstr "Szállítmány nincs hozzárendelve ehhez a rendeléshez"
-#: order/serializers.py:1214
+#: order/serializers.py:1216
msgid "No match found for the following serial numbers"
msgstr "Nincs találat a következő sorozatszámokra"
-#: order/serializers.py:1224
+#: order/serializers.py:1226
msgid "The following serial numbers are already allocated"
msgstr "A következő sorozatszámok már ki lettek osztva"
+#: order/tasks.py:26
+msgid "Overdue Purchase Order"
+msgstr ""
+
+#: order/tasks.py:31
+#, python-brace-format
+msgid "Purchase order {po} is now overdue"
+msgstr ""
+
+#: order/tasks.py:88
+msgid "Overdue Sales Order"
+msgstr ""
+
+#: order/tasks.py:93
+#, python-brace-format
+msgid "Sales order {so} is now overdue"
+msgstr ""
+
#: order/templates/order/order_base.html:33
msgid "Print purchase order report"
msgstr "Beszerzési rendelés nyomtatása"
@@ -3871,8 +3919,8 @@ msgstr "Beszállítói alkatrész kiválasztása"
#: templates/js/translated/bom.js:77 templates/js/translated/build.js:427
#: templates/js/translated/build.js:579 templates/js/translated/build.js:1972
#: templates/js/translated/order.js:833 templates/js/translated/order.js:1265
-#: templates/js/translated/order.js:2731 templates/js/translated/stock.js:570
-#: templates/js/translated/stock.js:738
+#: templates/js/translated/order.js:2731 templates/js/translated/stock.js:569
+#: templates/js/translated/stock.js:737
#: templates/patterns/wizard/match_fields.html:70
msgid "Remove row"
msgstr "Sor törlése"
@@ -3991,7 +4039,7 @@ msgid "Pending Shipments"
msgstr "Függő szállítmányok"
#: order/templates/order/sales_order_detail.html:70
-#: templates/attachment_table.html:6 templates/js/translated/bom.js:1053
+#: templates/attachment_table.html:6 templates/js/translated/bom.js:1047
#: templates/js/translated/build.js:1880
msgid "Actions"
msgstr "Műveletek"
@@ -4022,47 +4070,47 @@ msgstr "A {part} egységára {price}-ra módosítva"
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr "A {part} alkatrész módosított egységára {price} mennyisége pedig {qty}"
-#: part/api.py:481
+#: part/api.py:482
msgid "Incoming Purchase Order"
msgstr "Beérkező beszerzési rendelés"
-#: part/api.py:501
+#: part/api.py:502
msgid "Outgoing Sales Order"
msgstr "Kimenő vevői rendelés"
-#: part/api.py:519
+#: part/api.py:520
msgid "Stock produced by Build Order"
msgstr "Gyártással előállított készlet"
-#: part/api.py:551
+#: part/api.py:552
msgid "Stock required for Build Order"
msgstr "A gyártási utasításhoz szükséges készlet"
-#: part/api.py:637
+#: part/api.py:638
msgid "Valid"
msgstr "Érvényes"
-#: part/api.py:638
+#: part/api.py:639
msgid "Validate entire Bill of Materials"
msgstr "Teljes alkatrészjegyzék jóváhagyása"
-#: part/api.py:644
+#: part/api.py:645
msgid "This option must be selected"
msgstr "Ennek az opciónak ki kll lennie választva"
-#: part/api.py:1010
+#: part/api.py:1011
msgid "Must be greater than zero"
msgstr "Nullánál nagyobb kell legyen"
-#: part/api.py:1014
+#: part/api.py:1015
msgid "Must be a valid quantity"
msgstr "Érvényes mennyiségnek kell lennie"
-#: part/api.py:1029
+#: part/api.py:1030
msgid "Specify location for initial part stock"
msgstr "Hely megadása a kezdeti alkarész készlethez"
-#: part/api.py:1060 part/api.py:1064 part/api.py:1079 part/api.py:1083
+#: part/api.py:1061 part/api.py:1065 part/api.py:1080 part/api.py:1084
msgid "This field is required"
msgstr "Ez a mező kötelező"
@@ -4081,17 +4129,13 @@ msgid "Available Stock"
msgstr "Elérhető készlet"
#: part/bom.py:130 part/templates/part/part_base.html:207
-#: templates/js/translated/part.js:517 templates/js/translated/part.js:537
-#: templates/js/translated/part.js:1229 templates/js/translated/part.js:1401
-#: templates/js/translated/part.js:1417
+#: templates/js/translated/part.js:561 templates/js/translated/part.js:581
+#: templates/js/translated/part.js:1273 templates/js/translated/part.js:1445
+#: templates/js/translated/part.js:1461
msgid "On Order"
msgstr "Rendelve"
-#: part/forms.py:59
-msgid "Select part category"
-msgstr "Alkatrész kategória kiválasztása"
-
-#: part/forms.py:69
+#: part/forms.py:60
msgid "Input quantity for price calculation"
msgstr "Add meg a mennyiséget az árszámításhoz"
@@ -4107,7 +4151,7 @@ msgstr "Alapértelmezett kulcsszavak"
msgid "Default keywords for parts in this category"
msgstr "Ebben a kategóriában évő alkatrészek kulcsszavai alapban"
-#: part/models.py:115 part/models.py:2415 part/templates/part/category.html:15
+#: part/models.py:115 part/models.py:2403 part/templates/part/category.html:15
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr "Alkatrész kategória"
@@ -4124,7 +4168,7 @@ msgstr "Alkatrész kategóriák"
#: part/templates/part/category_sidebar.html:9
#: templates/InvenTree/index.html:85 templates/InvenTree/search.html:82
#: templates/InvenTree/settings/sidebar.html:39
-#: templates/js/translated/part.js:1768 templates/js/translated/search.js:144
+#: templates/js/translated/part.js:1864 templates/js/translated/search.js:144
#: templates/navbar.html:24 users/models.py:37
msgid "Parts"
msgstr "Alkatrészek"
@@ -4154,7 +4198,7 @@ msgstr "A legutóbbi sorozatszám"
msgid "Duplicate IPN not allowed in part settings"
msgstr "Azonos IPN nem engedélyezett az alkatrész beállításokban"
-#: part/models.py:738 part/models.py:2469
+#: part/models.py:738 part/models.py:2457
msgid "Part name"
msgstr "Alkatrész neve"
@@ -4187,12 +4231,11 @@ msgstr "Kulcsszavak"
msgid "Part keywords to improve visibility in search results"
msgstr "Alkatrész kulcsszavak amik segítik a megjelenést a keresési eredményekben"
-#: part/models.py:776 part/models.py:2171 part/models.py:2414
+#: part/models.py:776 part/models.py:2159 part/models.py:2402
#: part/templates/part/part_base.html:257
-#: part/templates/part/set_category.html:15
#: templates/InvenTree/notifications/notifications.html:65
#: templates/InvenTree/settings/settings.html:231
-#: templates/js/translated/part.js:1369
+#: templates/js/translated/part.js:1413 templates/js/translated/part.js:1639
msgid "Category"
msgstr "Kategória"
@@ -4201,8 +4244,8 @@ msgid "Part category"
msgstr "Alkatrész kategória"
#: part/models.py:782 part/templates/part/part_base.html:266
-#: templates/js/translated/part.js:666 templates/js/translated/part.js:1322
-#: templates/js/translated/stock.js:1659
+#: templates/js/translated/part.js:710 templates/js/translated/part.js:1366
+#: templates/js/translated/stock.js:1669
msgid "IPN"
msgstr "IPN"
@@ -4215,7 +4258,7 @@ msgid "Part revision or version number"
msgstr "Alkatrész változat vagy verziószám (pl. szín, hossz, revízió, stb.)"
#: part/models.py:790 part/templates/part/part_base.html:273
-#: report/models.py:170 templates/js/translated/part.js:670
+#: report/models.py:170 templates/js/translated/part.js:714
msgid "Revision"
msgstr "Változat"
@@ -4303,317 +4346,321 @@ msgstr "Alkatrészjegyzék ellenőrzési dátuma"
msgid "Creation User"
msgstr "Létrehozó"
-#: part/models.py:1690
+#: part/models.py:1685
msgid "Sell multiple"
msgstr "Több értékesítése"
-#: part/models.py:2218
+#: part/models.py:2206
msgid "Test templates can only be created for trackable parts"
msgstr "Teszt sablont csak követésre kötelezett alkatrészhez lehet csinálni"
-#: part/models.py:2235
+#: part/models.py:2223
msgid "Test with this name already exists for this part"
msgstr "Erre az alkatrészre már létezik teszt ilyen névvel"
-#: part/models.py:2255 templates/js/translated/part.js:1819
-#: templates/js/translated/stock.js:1274
+#: part/models.py:2243 templates/js/translated/part.js:1915
+#: templates/js/translated/stock.js:1284
msgid "Test Name"
msgstr "Teszt név"
-#: part/models.py:2256
+#: part/models.py:2244
msgid "Enter a name for the test"
msgstr "Add meg a teszt nevét"
-#: part/models.py:2261
+#: part/models.py:2249
msgid "Test Description"
msgstr "Teszt leírása"
-#: part/models.py:2262
+#: part/models.py:2250
msgid "Enter description for this test"
msgstr "Adj hozzá egy leírást ehhez a teszthez"
-#: part/models.py:2267 templates/js/translated/part.js:1828
+#: part/models.py:2255 templates/js/translated/part.js:1924
#: templates/js/translated/table_filters.js:294
msgid "Required"
msgstr "Kötelező"
-#: part/models.py:2268
+#: part/models.py:2256
msgid "Is this test required to pass?"
msgstr "Szükséges-e hogy ez a teszt sikeres legyen?"
-#: part/models.py:2273 templates/js/translated/part.js:1836
+#: part/models.py:2261 templates/js/translated/part.js:1932
msgid "Requires Value"
msgstr "Kötelező érték"
-#: part/models.py:2274
+#: part/models.py:2262
msgid "Does this test require a value when adding a test result?"
msgstr "Szükséges-e hogy ennek a tesztnek az eredményéhez kötelezően érték legyen rendelve?"
-#: part/models.py:2279 templates/js/translated/part.js:1843
+#: part/models.py:2267 templates/js/translated/part.js:1939
msgid "Requires Attachment"
msgstr "Kötelező melléklet"
-#: part/models.py:2280
+#: part/models.py:2268
msgid "Does this test require a file attachment when adding a test result?"
msgstr "Szükséges-e hogy ennek a tesztnek az eredményéhez kötelezően fájl melléklet legyen rendelve?"
-#: part/models.py:2288
+#: part/models.py:2276
#, python-brace-format
msgid "Illegal character in template name ({c})"
msgstr "Érvénytelen karakter ({c}) a sablon nevében"
-#: part/models.py:2324
+#: part/models.py:2312
msgid "Parameter template name must be unique"
msgstr "A paraméter sablon nevének egyedinek kell lennie"
-#: part/models.py:2332
+#: part/models.py:2320
msgid "Parameter Name"
msgstr "Paraméter neve"
-#: part/models.py:2339
+#: part/models.py:2327
msgid "Parameter Units"
msgstr "Paraméter mértékegysége"
-#: part/models.py:2370
+#: part/models.py:2358
msgid "Parent Part"
msgstr "Szülő alkatrész"
-#: part/models.py:2372 part/models.py:2420 part/models.py:2421
+#: part/models.py:2360 part/models.py:2408 part/models.py:2409
#: templates/InvenTree/settings/settings.html:226
msgid "Parameter Template"
msgstr "Paraméter sablon"
-#: part/models.py:2374
+#: part/models.py:2362
msgid "Data"
msgstr "Adat"
-#: part/models.py:2374
+#: part/models.py:2362
msgid "Parameter Value"
msgstr "Paraméter értéke"
-#: part/models.py:2425 templates/InvenTree/settings/settings.html:235
+#: part/models.py:2413 templates/InvenTree/settings/settings.html:235
msgid "Default Value"
msgstr "Alapértelmezett érték"
-#: part/models.py:2426
+#: part/models.py:2414
msgid "Default Parameter Value"
msgstr "Alapértelmezett paraméter érték"
-#: part/models.py:2461
+#: part/models.py:2449
msgid "Part ID or part name"
msgstr "Alkatrész ID vagy alkatrész név"
-#: part/models.py:2464 templates/js/translated/model_renderers.js:200
+#: part/models.py:2452 templates/js/translated/model_renderers.js:200
msgid "Part ID"
msgstr "Alkatrész ID"
-#: part/models.py:2465
+#: part/models.py:2453
msgid "Unique part ID value"
msgstr "Egyedi alkatrész ID értéke"
-#: part/models.py:2468
+#: part/models.py:2456
msgid "Part Name"
msgstr "Alkatrész neve"
-#: part/models.py:2472
+#: part/models.py:2460
msgid "Part IPN"
msgstr "Alkatrész IPN"
-#: part/models.py:2473
+#: part/models.py:2461
msgid "Part IPN value"
msgstr "Alkatrész IPN érték"
-#: part/models.py:2476
+#: part/models.py:2464
msgid "Level"
msgstr "Szint"
-#: part/models.py:2477
+#: part/models.py:2465
msgid "BOM level"
msgstr "Alkatrészjegyzék szint"
-#: part/models.py:2546
+#: part/models.py:2534
msgid "Select parent part"
msgstr "Szülő alkatrész kiválasztása"
-#: part/models.py:2554
+#: part/models.py:2542
msgid "Sub part"
msgstr "Al alkatrész"
-#: part/models.py:2555
+#: part/models.py:2543
msgid "Select part to be used in BOM"
msgstr "Válaszd ki az alkatrészjegyzékben használandó alkatrészt"
-#: part/models.py:2561
+#: part/models.py:2549
msgid "BOM quantity for this BOM item"
msgstr "Alkatrészjegyzék mennyiség ehhez az alkatrészjegyzék tételhez"
-#: part/models.py:2563 part/templates/part/upload_bom.html:58
-#: templates/js/translated/bom.js:877 templates/js/translated/bom.js:971
+#: part/models.py:2551 part/templates/part/upload_bom.html:58
+#: templates/js/translated/bom.js:871 templates/js/translated/bom.js:965
#: templates/js/translated/table_filters.js:92
msgid "Optional"
msgstr "Opcionális"
-#: part/models.py:2563
+#: part/models.py:2551
msgid "This BOM item is optional"
msgstr "Ez az alkatrészjegyzék tétel opcionális"
-#: part/models.py:2566 part/templates/part/upload_bom.html:55
+#: part/models.py:2554 part/templates/part/upload_bom.html:55
msgid "Overage"
msgstr "Többlet"
-#: part/models.py:2567
+#: part/models.py:2555
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr "Becsült gyártási veszteség (abszolút vagy százalékos)"
-#: part/models.py:2570
+#: part/models.py:2558
msgid "BOM item reference"
msgstr "Alkatrészjegyzék tétel azonosító"
-#: part/models.py:2573
+#: part/models.py:2561
msgid "BOM item notes"
msgstr "Alkatrészjegyzék tétel megjegyzései"
-#: part/models.py:2575
+#: part/models.py:2563
msgid "Checksum"
msgstr "Ellenőrző összeg"
-#: part/models.py:2575
+#: part/models.py:2563
msgid "BOM line checksum"
msgstr "Alkatrészjegyzék sor ellenőrző összeg"
-#: part/models.py:2579 part/templates/part/upload_bom.html:57
-#: templates/js/translated/bom.js:988
+#: part/models.py:2567 part/templates/part/upload_bom.html:57
+#: templates/js/translated/bom.js:982
#: templates/js/translated/table_filters.js:68
#: templates/js/translated/table_filters.js:88
msgid "Inherited"
msgstr "Örökölt"
-#: part/models.py:2580
+#: part/models.py:2568
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr "Ezt az alkatrészjegyzék tételt az alkatrész változatok alkatrészjegyzékei is öröklik"
-#: part/models.py:2585 part/templates/part/upload_bom.html:56
-#: templates/js/translated/bom.js:980
+#: part/models.py:2573 part/templates/part/upload_bom.html:56
+#: templates/js/translated/bom.js:974
msgid "Allow Variants"
msgstr "Változatok"
-#: part/models.py:2586
+#: part/models.py:2574
msgid "Stock items for variant parts can be used for this BOM item"
msgstr "Alkatrészváltozatok készlet tételei használhatók ehhez az alkatrészjegyzék tételhez"
-#: part/models.py:2664 stock/models.py:460
+#: part/models.py:2652 stock/models.py:460
msgid "Quantity must be integer value for trackable parts"
msgstr "A mennyiség egész szám kell legyen a követésre kötelezett alkatrészek esetén"
-#: part/models.py:2673 part/models.py:2675
+#: part/models.py:2661 part/models.py:2663
msgid "Sub part must be specified"
msgstr "Al alkatrészt kötelező megadni"
-#: part/models.py:2780
+#: part/models.py:2768
msgid "BOM Item Substitute"
msgstr "Alkatrészjegyzék tétel helyettesítő"
-#: part/models.py:2801
+#: part/models.py:2789
msgid "Substitute part cannot be the same as the master part"
msgstr "A helyettesítő alkatrész nem lehet ugyanaz mint a fő alkatrész"
-#: part/models.py:2814
+#: part/models.py:2802
msgid "Parent BOM item"
msgstr "Szülő alkatrészjegyzék tétel"
-#: part/models.py:2822
+#: part/models.py:2810
msgid "Substitute part"
msgstr "Helyettesítő alkatrész"
-#: part/models.py:2833
+#: part/models.py:2825
msgid "Part 1"
msgstr "1.rész"
-#: part/models.py:2837
+#: part/models.py:2829
msgid "Part 2"
msgstr "2.rész"
-#: part/models.py:2837
+#: part/models.py:2829
msgid "Select Related Part"
msgstr "Válassz kapcsolódó alkatrészt"
-#: part/models.py:2868
-msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique"
-msgstr "Hiba a kapcsolat létrehozása közben: ellenőrizd hogy az alkatrész nem kapcsolódik-e saját magához és azt hogy a kapcsolat egyedi"
+#: part/models.py:2847
+msgid "Part relationship cannot be created between a part and itself"
+msgstr ""
-#: part/serializers.py:138 part/serializers.py:169 stock/serializers.py:163
+#: part/models.py:2851
+msgid "Duplicate relationship already exists"
+msgstr ""
+
+#: part/serializers.py:140 part/serializers.py:171 stock/serializers.py:163
msgid "Purchase currency of this stock item"
msgstr "Beszerzési pénzneme ennek a készlet tételnek"
-#: part/serializers.py:794
+#: part/serializers.py:796
msgid "Select part to copy BOM from"
msgstr "Válassz alkatrészt ahonnan az alkatrészjegyzéket másoljuk"
-#: part/serializers.py:802
+#: part/serializers.py:804
msgid "Remove Existing Data"
msgstr "Létező adat törlése"
-#: part/serializers.py:803
+#: part/serializers.py:805
msgid "Remove existing BOM items before copying"
msgstr "Meglévő alkatrészjegyzék tételek törlése a másolás előtt"
-#: part/serializers.py:808
+#: part/serializers.py:810
msgid "Include Inherited"
msgstr "Örököltekkel együtt"
-#: part/serializers.py:809
+#: part/serializers.py:811
msgid "Include BOM items which are inherited from templated parts"
msgstr "Sablon alkatrészektől örökölt alkatrészjegyzék tételek használata"
-#: part/serializers.py:814
+#: part/serializers.py:816
msgid "Skip Invalid Rows"
msgstr "Hibás sorok kihagyása"
-#: part/serializers.py:815
+#: part/serializers.py:817
msgid "Enable this option to skip invalid rows"
msgstr "Engedély a hibás sorok kihagyására"
-#: part/serializers.py:820
+#: part/serializers.py:822
msgid "Copy Substitute Parts"
msgstr "Helyettesítő alkatrészek másolása"
-#: part/serializers.py:821
+#: part/serializers.py:823
msgid "Copy substitute parts when duplicate BOM items"
msgstr "Helyettesítő alkatrészek másolása az alkatrészjegyzék tételek másolásakor"
-#: part/serializers.py:861
+#: part/serializers.py:863
msgid "Clear Existing BOM"
msgstr "Meglévő alkatrészjegyzék törlése"
-#: part/serializers.py:862
+#: part/serializers.py:864
msgid "Delete existing BOM items before uploading"
msgstr "Meglévő alkatrészjegyzék tételek törlése a feltöltés előtt"
-#: part/serializers.py:892
+#: part/serializers.py:894
msgid "No part column specified"
msgstr "Nincs megadva alkatrész oszlop"
-#: part/serializers.py:935
+#: part/serializers.py:937
msgid "Multiple matching parts found"
msgstr "Több egyező alkatrész is található"
-#: part/serializers.py:938
+#: part/serializers.py:940
msgid "No matching part found"
msgstr "Nincs egyező alkatrész"
-#: part/serializers.py:941
+#: part/serializers.py:943
msgid "Part is not designated as a component"
msgstr "Az alkatrész nem lett összetevőként jelölve"
-#: part/serializers.py:950
+#: part/serializers.py:952
msgid "Quantity not provided"
msgstr "Mennyiség nincs megadva"
-#: part/serializers.py:958
+#: part/serializers.py:960
msgid "Invalid quantity"
msgstr "Érvénytelen mennyiség"
-#: part/serializers.py:979
+#: part/serializers.py:981
msgid "At least one BOM item is required"
msgstr "Legalább egy alkatrészjegyzék tétel szükséges"
@@ -5089,10 +5136,10 @@ msgid "Part is virtual (not a physical part)"
msgstr "Virtuális (nem kézzelfogható alkatrész)"
#: part/templates/part/part_base.html:143
-#: templates/js/translated/company.js:623
-#: templates/js/translated/company.js:882
+#: templates/js/translated/company.js:608
+#: templates/js/translated/company.js:867
#: templates/js/translated/model_renderers.js:192
-#: templates/js/translated/part.js:581 templates/js/translated/part.js:658
+#: templates/js/translated/part.js:625 templates/js/translated/part.js:702
msgid "Inactive"
msgstr "Inaktív"
@@ -5121,13 +5168,13 @@ msgstr "Gyártáshoz lefoglalva"
msgid "Allocated to Sales Orders"
msgstr "Vevő rendeléshez lefoglalva"
-#: part/templates/part/part_base.html:232 templates/js/translated/bom.js:1009
+#: part/templates/part/part_base.html:232 templates/js/translated/bom.js:1003
msgid "Can Build"
msgstr "Gyártható"
-#: part/templates/part/part_base.html:238 templates/js/translated/part.js:520
-#: templates/js/translated/part.js:540 templates/js/translated/part.js:1233
-#: templates/js/translated/part.js:1405 templates/js/translated/part.js:1421
+#: part/templates/part/part_base.html:238 templates/js/translated/part.js:564
+#: templates/js/translated/part.js:584 templates/js/translated/part.js:1277
+#: templates/js/translated/part.js:1449 templates/js/translated/part.js:1465
msgid "Building"
msgstr "Gyártásban"
@@ -5144,7 +5191,7 @@ msgstr "Legutolsó sorozatszám"
msgid "Search for serial number"
msgstr "Sorozatszámra keresés"
-#: part/templates/part/part_base.html:443 part/templates/part/prices.html:147
+#: part/templates/part/part_base.html:443 part/templates/part/prices.html:149
msgid "Calculate"
msgstr "Számítás"
@@ -5162,54 +5209,55 @@ msgstr "Beszállító árazás"
#: part/templates/part/part_pricing.html:26
#: part/templates/part/part_pricing.html:52
-#: part/templates/part/part_pricing.html:100
-#: part/templates/part/part_pricing.html:115 part/templates/part/prices.html:28
-#: part/templates/part/prices.html:55 part/templates/part/prices.html:106
-#: part/templates/part/prices.html:123
+#: part/templates/part/part_pricing.html:103
+#: part/templates/part/part_pricing.html:118 part/templates/part/prices.html:28
+#: part/templates/part/prices.html:55 part/templates/part/prices.html:108
+#: part/templates/part/prices.html:125
msgid "Unit Cost"
msgstr "Egység költség"
#: part/templates/part/part_pricing.html:32
#: part/templates/part/part_pricing.html:58
-#: part/templates/part/part_pricing.html:104
-#: part/templates/part/part_pricing.html:119 part/templates/part/prices.html:35
-#: part/templates/part/prices.html:62 part/templates/part/prices.html:111
-#: part/templates/part/prices.html:128
+#: part/templates/part/part_pricing.html:107
+#: part/templates/part/part_pricing.html:122 part/templates/part/prices.html:35
+#: part/templates/part/prices.html:62 part/templates/part/prices.html:113
+#: part/templates/part/prices.html:130
msgid "Total Cost"
msgstr "Teljes költség"
#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:43
-#: templates/js/translated/bom.js:963
+#: templates/js/translated/bom.js:957
msgid "No supplier pricing available"
msgstr "Nincs beszállítói árinfomáció"
#: part/templates/part/part_pricing.html:48 part/templates/part/prices.html:52
-#: part/templates/part/prices.html:246
+#: part/templates/part/prices.html:248
msgid "BOM Pricing"
msgstr "Alkatrészjegyzék árazás"
-#: part/templates/part/part_pricing.html:65 part/templates/part/prices.html:72
+#: part/templates/part/part_pricing.html:66 part/templates/part/prices.html:72
msgid "Unit Purchase Price"
msgstr "Beszerzési egységár"
-#: part/templates/part/part_pricing.html:71 part/templates/part/prices.html:79
+#: part/templates/part/part_pricing.html:72 part/templates/part/prices.html:79
msgid "Total Purchase Price"
msgstr "Teljes beszerzési ár"
-#: part/templates/part/part_pricing.html:81 part/templates/part/prices.html:89
+#: part/templates/part/part_pricing.html:82 part/templates/part/prices.html:89
msgid "Note: BOM pricing is incomplete for this part"
msgstr "Megjegyzés: ennek az alkatrésznek az alkatrészjegyzék árazása nem teljes"
-#: part/templates/part/part_pricing.html:88 part/templates/part/prices.html:96
+#: part/templates/part/part_pricing.html:91 part/templates/part/prices.html:98
msgid "No BOM pricing available"
msgstr "Nincs alkatrészjegyzék árinfomáció"
-#: part/templates/part/part_pricing.html:97 part/templates/part/prices.html:105
+#: part/templates/part/part_pricing.html:100
+#: part/templates/part/prices.html:107
msgid "Internal Price"
msgstr "Belső ár"
-#: part/templates/part/part_pricing.html:128
-#: part/templates/part/prices.html:137
+#: part/templates/part/part_pricing.html:131
+#: part/templates/part/prices.html:139
msgid "No pricing information is available for this part."
msgstr "Az alkatrészhez nem áll rendelkezésre árinformáció."
@@ -5233,43 +5281,6 @@ msgstr "Teszt sablonok"
msgid "Select from existing images"
msgstr "Válassz a meglévő képek közül"
-#: part/templates/part/partial_delete.html:9
-#, python-format
-msgid "Part '%(full_name)s' cannot be deleted as it is still marked as active.\n"
-"
Disable the \"Active\" part attribute and re-try.\n"
-" "
-msgstr "A(z) '%(full_name)s' alkatrész nem törölhető mert még mindig aktív. Előbb állítsd az alkatrészt inaktív állapotúra és probáld újra! "
-
-#: part/templates/part/partial_delete.html:17
-#, python-format
-msgid "Are you sure you want to delete part '%(full_name)s'?"
-msgstr "Biztosan töröljük a %(full_name)s alkatrészt?"
-
-#: part/templates/part/partial_delete.html:22
-#, python-format
-msgid "This part is used in BOMs for %(count)s other parts. If you delete this part, the BOMs for the following parts will be updated"
-msgstr "Ez a alkatrész %(count)s másik alkatrész alkatrészjegyzékében szerepel. Ha törlöd a következő alkatrészek módosítva lesznek"
-
-#: part/templates/part/partial_delete.html:32
-#, python-format
-msgid "There are %(count)s stock entries defined for this part. If you delete this part, the following stock entries will also be deleted:"
-msgstr "Ennek az alkatrésznek %(count)s készlet tétele van. Ha törlöd a következő készlet tételek is törölve lesznek:"
-
-#: part/templates/part/partial_delete.html:43
-#, python-format
-msgid "There are %(count)s manufacturers defined for this part. If you delete this part, the following manufacturer parts will also be deleted:"
-msgstr "Ennek az alkatrésznek %(count)s gyártója van. Ha törlöd a következő gyártói alkatrészek is törölve lesznek:"
-
-#: part/templates/part/partial_delete.html:54
-#, python-format
-msgid "There are %(count)s suppliers defined for this part. If you delete this part, the following supplier parts will also be deleted:"
-msgstr "Ennek az alkatrésznek %(count)s beszállítója van. Ha törlöd a következő beszállítói alkatrészek is törölve lesznek:"
-
-#: part/templates/part/partial_delete.html:67
-#, python-format
-msgid "There are %(count)s unique parts tracked for '%(full_name)s'. Deleting this part will permanently remove this tracking information."
-msgstr "Összesen %(count)s követésre kötelezett '%(full_name)s' alkatrész van. Ha törlöd, a követési információk véglegesen elvesznek."
-
#: part/templates/part/prices.html:19
msgid "Pricing ranges"
msgstr "Ártartományok"
@@ -5286,66 +5297,58 @@ msgstr "Beszerzési ár megjelenítése"
msgid "Show BOM cost"
msgstr "Alkatrészjegyzék költség megjelenítése"
-#: part/templates/part/prices.html:120
+#: part/templates/part/prices.html:122
msgid "Show sale cost"
msgstr "Értékesítési költség megjelenítése"
-#: part/templates/part/prices.html:121
+#: part/templates/part/prices.html:123
msgid "Show sale price"
msgstr "Eladási ár megjelenítése"
-#: part/templates/part/prices.html:143
+#: part/templates/part/prices.html:145
msgid "Calculation parameters"
msgstr "Számítási paraméterek"
-#: part/templates/part/prices.html:158 templates/js/translated/bom.js:957
+#: part/templates/part/prices.html:160 templates/js/translated/bom.js:951
msgid "Supplier Cost"
msgstr "Beszállítói költség"
-#: part/templates/part/prices.html:159 part/templates/part/prices.html:180
-#: part/templates/part/prices.html:204 part/templates/part/prices.html:234
-#: part/templates/part/prices.html:260 part/templates/part/prices.html:289
+#: part/templates/part/prices.html:161 part/templates/part/prices.html:182
+#: part/templates/part/prices.html:206 part/templates/part/prices.html:236
+#: part/templates/part/prices.html:262 part/templates/part/prices.html:291
msgid "Jump to overview"
msgstr "Ugrás az áttekintéshez"
-#: part/templates/part/prices.html:184
+#: part/templates/part/prices.html:186
msgid "Stock Pricing"
msgstr "Készlet árazás"
-#: part/templates/part/prices.html:193
+#: part/templates/part/prices.html:195
msgid "No stock pricing history is available for this part."
msgstr "Az alkatrészhez nem áll rendelkezésre ártörténet."
-#: part/templates/part/prices.html:203
+#: part/templates/part/prices.html:205
msgid "Internal Cost"
msgstr "Belső költség"
-#: part/templates/part/prices.html:218
+#: part/templates/part/prices.html:220
msgid "Add Internal Price Break"
msgstr "Belső árlépcső hozzáadása"
-#: part/templates/part/prices.html:233
+#: part/templates/part/prices.html:235
msgid "BOM Cost"
msgstr "Alkatrészjegyzék költség"
-#: part/templates/part/prices.html:259
+#: part/templates/part/prices.html:261
msgid "Sale Cost"
msgstr "Eladási költség"
-#: part/templates/part/prices.html:300
+#: part/templates/part/prices.html:302
msgid "No sale pice history available for this part."
msgstr "Az alkatrészhez nem áll rendelkezésre eladási ártörténet."
-#: part/templates/part/set_category.html:9
-msgid "Set category for the following parts"
-msgstr "Állítsd be a következő alkatrészek kategóriáját"
-
-#: part/templates/part/set_category.html:32
-msgid "Remove part"
-msgstr "Alkatrész eltávolítása"
-
-#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:543
-#: templates/js/translated/part.js:1221 templates/js/translated/part.js:1425
+#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:587
+#: templates/js/translated/part.js:1265 templates/js/translated/part.js:1469
msgid "No Stock"
msgstr "Nincs készlet"
@@ -5408,56 +5411,39 @@ msgstr "Ismeretlen adatbázis"
msgid "{title} v{version}"
msgstr "{title} v{version}"
-#: part/views.py:74
-msgid "Set Part Category"
-msgstr "Alkatrész kategória beállítása"
-
-#: part/views.py:122
-#, python-brace-format
-msgid "Set category for {n} parts"
-msgstr "Állítsd be {n} alkatrész kategóriáját"
-
-#: part/views.py:193
+#: part/views.py:118
msgid "Match References"
msgstr "Azonosítók egyeztetése"
-#: part/views.py:494
+#: part/views.py:419
msgid "None"
msgstr "Egyik sem"
-#: part/views.py:556
+#: part/views.py:481
msgid "Part QR Code"
msgstr "Alkatrész QR kódja"
-#: part/views.py:650
+#: part/views.py:575
msgid "Select Part Image"
msgstr "Válassz képet az alkatrészhez"
-#: part/views.py:676
+#: part/views.py:601
msgid "Updated part image"
msgstr "Alkatrész képe frissítve"
-#: part/views.py:679
+#: part/views.py:604
msgid "Part image not found"
msgstr "Az alkatrész képe nem található"
-#: part/views.py:768
-msgid "Confirm Part Deletion"
-msgstr "Alkatrész törlés megerősítése"
-
-#: part/views.py:776
-msgid "Part was deleted"
-msgstr "Alkatrész törölve"
-
-#: part/views.py:785
+#: part/views.py:693
msgid "Part Pricing"
msgstr "Alkatrész árak"
-#: part/views.py:976
+#: part/views.py:884
msgid "Delete Part Category"
msgstr "Alkatrész kategória törlése"
-#: part/views.py:983
+#: part/views.py:891
msgid "Part category was deleted"
msgstr "Alkatrész kategória törölve"
@@ -5517,21 +5503,21 @@ msgstr "Készlet tételhez tartozó vonalkód"
msgid "Label printing failed"
msgstr "Címkenyomtatás sikertelen"
-#: plugin/builtin/integration/core_notifications.py:28
+#: plugin/builtin/integration/core_notifications.py:29
msgid "InvenTree contributors"
msgstr "InvenTree fejlesztők"
-#: plugin/builtin/integration/core_notifications.py:29
+#: plugin/builtin/integration/core_notifications.py:30
msgid "Integrated outgoing notificaton methods"
msgstr "Integrált kimenő értesítési módszerek"
-#: plugin/builtin/integration/core_notifications.py:33
-#: plugin/builtin/integration/core_notifications.py:52
+#: plugin/builtin/integration/core_notifications.py:34
+#: plugin/builtin/integration/core_notifications.py:53
msgid "Enable email notifications"
msgstr "Email értesítések engedélyezése"
-#: plugin/builtin/integration/core_notifications.py:34
-#: plugin/builtin/integration/core_notifications.py:53
+#: plugin/builtin/integration/core_notifications.py:35
+#: plugin/builtin/integration/core_notifications.py:54
msgid "Allow sending of emails for event notifications"
msgstr "Email küldés engedélyezése esemény értesítésekre"
@@ -5647,15 +5633,19 @@ msgstr "Tlepítés nincs megerősítve"
msgid "Either packagename of URL must be provided"
msgstr "Vagy csomag nevet vagy URL-t meg kell adni"
-#: report/api.py:166
+#: report/api.py:179
msgid "No valid objects provided to template"
msgstr "Nincs érvényes objektum megadva a sablonhoz"
-#: report/api.py:198 report/api.py:239
+#: report/api.py:215 report/api.py:256
#, python-brace-format
msgid "Template file '{template}' is missing or does not exist"
msgstr "A '{template}' sablon fájl hiányzik vagy nem érhető el"
+#: report/api.py:359
+msgid "Test report"
+msgstr ""
+
#: report/models.py:152
msgid "Template name"
msgstr "Sablon neve"
@@ -5758,7 +5748,7 @@ msgstr "Készlet tétel teszt riport"
#: templates/js/translated/build.js:1173 templates/js/translated/build.js:1671
#: templates/js/translated/model_renderers.js:106
#: templates/js/translated/order.js:115 templates/js/translated/order.js:3229
-#: templates/js/translated/order.js:3318 templates/js/translated/stock.js:435
+#: templates/js/translated/order.js:3318 templates/js/translated/stock.js:434
msgid "Serial Number"
msgstr "Sorozatszám"
@@ -5767,19 +5757,19 @@ msgid "Test Results"
msgstr "Teszt eredmények"
#: report/templates/report/inventree_test_report_base.html:93
-#: stock/models.py:2068
+#: stock/models.py:2072
msgid "Test"
msgstr "Teszt"
#: report/templates/report/inventree_test_report_base.html:94
-#: stock/models.py:2074
+#: stock/models.py:2078
msgid "Result"
msgstr "Eredmény"
#: report/templates/report/inventree_test_report_base.html:97
#: templates/InvenTree/settings/plugin.html:51
#: templates/InvenTree/settings/plugin_settings.html:38
-#: templates/js/translated/order.js:1669 templates/js/translated/stock.js:2340
+#: templates/js/translated/order.js:1669 templates/js/translated/stock.js:2350
msgid "Date"
msgstr "Dátum"
@@ -5797,20 +5787,20 @@ msgid "Installed Items"
msgstr "Beépített tételek"
#: report/templates/report/inventree_test_report_base.html:137
-#: templates/js/translated/stock.js:555 templates/js/translated/stock.js:725
-#: templates/js/translated/stock.js:2589
+#: templates/js/translated/stock.js:554 templates/js/translated/stock.js:724
+#: templates/js/translated/stock.js:2599
msgid "Serial"
msgstr "Sorozatszám"
-#: stock/api.py:504
+#: stock/api.py:505
msgid "Quantity is required"
msgstr "Mennyiség megadása kötelező"
-#: stock/api.py:511
+#: stock/api.py:512
msgid "Valid part must be supplied"
msgstr "Egy érvényes alkatrészt meg kell adni"
-#: stock/api.py:536
+#: stock/api.py:537
msgid "Serial numbers cannot be supplied for a non-trackable part"
msgstr "Sorozatszámot nem lehet megadni nem követésre kötelezett alkatrész esetén"
@@ -5918,7 +5908,7 @@ msgid "Destination Sales Order"
msgstr "Cél vevői rendelés"
#: stock/models.py:690 stock/templates/stock/item_base.html:429
-#: templates/js/translated/stock.js:1816
+#: templates/js/translated/stock.js:1826
msgid "Expiry Date"
msgstr "Lejárati dátum"
@@ -5972,79 +5962,79 @@ msgstr "A mennyiség nem egyezik a megadott sorozatszámok számával"
msgid "Serial numbers already exist: {exists}"
msgstr "Ezek a sorozatszámok már léteznek: {exists}"
-#: stock/models.py:1321
+#: stock/models.py:1325
msgid "Stock item has been assigned to a sales order"
msgstr "Készlet tétel hozzárendelve egy vevői rendeléshez"
-#: stock/models.py:1324
+#: stock/models.py:1328
msgid "Stock item is installed in another item"
msgstr "Készlet tétel beépül egy másikba"
-#: stock/models.py:1327
+#: stock/models.py:1331
msgid "Stock item contains other items"
msgstr "A készlet tétel más tételeket tartalmaz"
-#: stock/models.py:1330
+#: stock/models.py:1334
msgid "Stock item has been assigned to a customer"
msgstr "Készlet tétel hozzárendelve egy vevőhöz"
-#: stock/models.py:1333
+#: stock/models.py:1337
msgid "Stock item is currently in production"
msgstr "Készlet tétel gyártás alatt"
-#: stock/models.py:1336
+#: stock/models.py:1340
msgid "Serialized stock cannot be merged"
msgstr "Követésre kötelezett készlet nem vonható össze"
-#: stock/models.py:1343 stock/serializers.py:908
+#: stock/models.py:1347 stock/serializers.py:895
msgid "Duplicate stock items"
msgstr "Duplikált készlet tételek vannak"
-#: stock/models.py:1347
+#: stock/models.py:1351
msgid "Stock items must refer to the same part"
msgstr "A készlet tétel ugyanarra az alkatrészre kell vonatkozzon"
-#: stock/models.py:1351
+#: stock/models.py:1355
msgid "Stock items must refer to the same supplier part"
msgstr "A készlet tétel ugyanarra a beszállítói alkatrészre kell vonatkozzon"
-#: stock/models.py:1355
+#: stock/models.py:1359
msgid "Stock status codes must match"
msgstr "Készlet tételek állapotainak egyeznie kell"
-#: stock/models.py:1524
+#: stock/models.py:1528
msgid "StockItem cannot be moved as it is not in stock"
msgstr "Készlet tétel nem mozgatható mivel nincs készleten"
-#: stock/models.py:1986
+#: stock/models.py:1990
msgid "Entry notes"
msgstr "Bejegyzés megjegyzései"
-#: stock/models.py:2044
+#: stock/models.py:2048
msgid "Value must be provided for this test"
msgstr "Ehhez a teszthez meg kell adni értéket"
-#: stock/models.py:2050
+#: stock/models.py:2054
msgid "Attachment must be uploaded for this test"
msgstr "Ehhez a teszthez fel kell tölteni mellékletet"
-#: stock/models.py:2069
+#: stock/models.py:2073
msgid "Test name"
msgstr "Teszt neve"
-#: stock/models.py:2075
+#: stock/models.py:2079
msgid "Test result"
msgstr "Teszt eredménye"
-#: stock/models.py:2081
+#: stock/models.py:2085
msgid "Test output value"
msgstr "Teszt kimeneti értéke"
-#: stock/models.py:2088
+#: stock/models.py:2092
msgid "Test result attachment"
msgstr "Teszt eredmény melléklet"
-#: stock/models.py:2094
+#: stock/models.py:2098
msgid "Test notes"
msgstr "Tesztek megjegyzései"
@@ -6065,7 +6055,7 @@ msgstr "A mennyiség nem lépheti túl a rendelkezésre álló készletet ({q})"
msgid "Enter serial numbers for new items"
msgstr "Írd be a sorozatszámokat az új tételekhez"
-#: stock/serializers.py:309 stock/serializers.py:865 stock/serializers.py:1098
+#: stock/serializers.py:309 stock/serializers.py:852 stock/serializers.py:1085
msgid "Destination stock location"
msgstr "Cél készlet hely"
@@ -6105,63 +6095,63 @@ msgstr "Tranzakció megjegyzés hozzáadása (opcionális)"
msgid "Destination location for returned item"
msgstr "Cél hely a visszatérő tételeknek"
-#: stock/serializers.py:720
+#: stock/serializers.py:707
msgid "Part must be salable"
msgstr "Az alkatrésznek értékesíthetőnek kell lennie"
-#: stock/serializers.py:724
+#: stock/serializers.py:711
msgid "Item is allocated to a sales order"
msgstr "A tétel egy vevő rendeléshez foglalt"
-#: stock/serializers.py:728
+#: stock/serializers.py:715
msgid "Item is allocated to a build order"
msgstr "A tétel egy gyártási utasításhoz foglalt"
-#: stock/serializers.py:759
+#: stock/serializers.py:746
msgid "Customer to assign stock items"
msgstr "Vevő akihez rendeljük a készlet tételeket"
-#: stock/serializers.py:765
+#: stock/serializers.py:752
msgid "Selected company is not a customer"
msgstr "A kiválasztott cég nem egy vevő"
-#: stock/serializers.py:773
+#: stock/serializers.py:760
msgid "Stock assignment notes"
msgstr "Készlet hozzárendelés megjegyzései"
-#: stock/serializers.py:783 stock/serializers.py:1014
+#: stock/serializers.py:770 stock/serializers.py:1001
msgid "A list of stock items must be provided"
msgstr "A készlet tételek listáját meg kell adni"
-#: stock/serializers.py:872
+#: stock/serializers.py:859
msgid "Stock merging notes"
msgstr "Készlet összevonás megjegyzései"
-#: stock/serializers.py:877
+#: stock/serializers.py:864
msgid "Allow mismatched suppliers"
msgstr "Nem egyező beszállítók megengedése"
-#: stock/serializers.py:878
+#: stock/serializers.py:865
msgid "Allow stock items with different supplier parts to be merged"
msgstr "Különböző beszállítói alkatrészekből származó készletek összevonásának engedélyezése"
-#: stock/serializers.py:883
+#: stock/serializers.py:870
msgid "Allow mismatched status"
msgstr "Nem egyező állapotok megjelenítése"
-#: stock/serializers.py:884
+#: stock/serializers.py:871
msgid "Allow stock items with different status codes to be merged"
msgstr "Különböző állapotú készletek összevonásának engedélyezése"
-#: stock/serializers.py:894
+#: stock/serializers.py:881
msgid "At least two stock items must be provided"
msgstr "Legalább két készlet tételt meg kell adni"
-#: stock/serializers.py:976
+#: stock/serializers.py:963
msgid "StockItem primary key value"
msgstr "Készlet tétel elsődleges kulcs értéke"
-#: stock/serializers.py:1004
+#: stock/serializers.py:991
msgid "Stock transaction notes"
msgstr "Készlet tranzakció megjegyzései"
@@ -6186,7 +6176,7 @@ msgstr "Teszt adatok"
msgid "Test Report"
msgstr "Teszt riport"
-#: stock/templates/stock/item.html:94
+#: stock/templates/stock/item.html:94 stock/templates/stock/item.html:298
msgid "Delete Test Data"
msgstr "Teszt adatok törlése"
@@ -6198,11 +6188,15 @@ msgstr "Teszt adatok hozzáadása"
msgid "Installed Stock Items"
msgstr "Beépített készlet tételek"
-#: stock/templates/stock/item.html:151 templates/js/translated/stock.js:2733
+#: stock/templates/stock/item.html:151 templates/js/translated/stock.js:2743
msgid "Install Stock Item"
msgstr "Készlet tétel beépítése"
-#: stock/templates/stock/item.html:292 templates/js/translated/stock.js:1455
+#: stock/templates/stock/item.html:290
+msgid "Delete all test results for this stock item"
+msgstr ""
+
+#: stock/templates/stock/item.html:323 templates/js/translated/stock.js:1465
msgid "Add Test Result"
msgstr "Teszt eredmény hozzáadása"
@@ -6389,7 +6383,7 @@ msgid "Stale"
msgstr "Állott"
#: stock/templates/stock/item_base.html:442
-#: templates/js/translated/stock.js:1832
+#: templates/js/translated/stock.js:1842
msgid "Last Updated"
msgstr "Utoljára módosítva"
@@ -6530,7 +6524,7 @@ msgstr "Foglalások"
msgid "Child Items"
msgstr "Gyermek tételek"
-#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:182
+#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:144
msgid "Convert Stock Item"
msgstr "Készlet tétel konvertálása"
@@ -6551,31 +6545,19 @@ msgstr "Figyelem"
msgid "This action cannot be easily undone"
msgstr "Ez a művelet nem vonható vissza könnyen"
-#: stock/views.py:113
+#: stock/views.py:111
msgid "Stock Location QR code"
msgstr "Készlet hely QR kódja"
-#: stock/views.py:131
-msgid "Delete All Test Data"
-msgstr "Minden teszt adat törlése"
-
-#: stock/views.py:149
-msgid "Confirm test data deletion"
-msgstr "Teszt adat törlésének megerősítése"
-
-#: stock/views.py:150
-msgid "Check the confirmation box"
-msgstr "Klikkeld be a megerősítő mezőt"
-
-#: stock/views.py:165
+#: stock/views.py:127
msgid "Stock Item QR Code"
msgstr "Készlet tétel QR kódja"
-#: stock/views.py:216
+#: stock/views.py:178
msgid "Delete Stock Location"
msgstr "Készlethely törlése"
-#: stock/views.py:229
+#: stock/views.py:191
msgid "Delete Stock Item"
msgstr "Készlet tétel törlése"
@@ -7318,8 +7300,8 @@ msgstr "InvenTree verzió információk"
#: templates/about.html:11 templates/about.html:105
#: templates/js/translated/bom.js:133 templates/js/translated/bom.js:621
-#: templates/js/translated/modals.js:56 templates/js/translated/modals.js:595
-#: templates/js/translated/modals.js:689 templates/js/translated/modals.js:997
+#: templates/js/translated/modals.js:56 templates/js/translated/modals.js:601
+#: templates/js/translated/modals.js:695 templates/js/translated/modals.js:1003
#: templates/js/translated/order.js:928 templates/modals.html:15
#: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50
msgid "Close"
@@ -7391,6 +7373,10 @@ msgstr "Email cím megerősítése"
msgid "Please confirm that %(email)s is an email address for user %(user_display)s."
msgstr "Erősítsd meg hogy a %(email)s email a %(user_display)s felhasználó email címe."
+#: templates/account/email_confirm.html:20 templates/js/translated/forms.js:630
+msgid "Confirm"
+msgstr "Megerősítés"
+
#: templates/account/email_confirm.html:27
#, python-format
msgid "This email confirmation link expired or is invalid. Please issue a new email confirmation request."
@@ -7563,7 +7549,7 @@ msgstr "Melléklet hozzáadása"
msgid "Delete selected attachments"
msgstr "Kiválasztott mellékletek törlése"
-#: templates/attachment_table.html:12 templates/js/translated/attachment.js:110
+#: templates/attachment_table.html:12 templates/js/translated/attachment.js:112
msgid "Delete Attachments"
msgstr "Mellékletek törlése"
@@ -7597,15 +7583,15 @@ msgid "The following parts are low on required stock"
msgstr "A következő alkatrészek szükséges készlete alacsony"
#: templates/email/build_order_required_stock.html:18
-#: templates/js/translated/bom.js:1425
+#: templates/js/translated/bom.js:1419
msgid "Required Quantity"
msgstr "Szükséges mennyiség"
#: templates/email/build_order_required_stock.html:19
#: templates/email/low_stock_notification.html:18
-#: templates/js/translated/bom.js:890 templates/js/translated/build.js:1787
-#: templates/js/translated/build.js:2650 templates/js/translated/part.js:527
-#: templates/js/translated/part.js:530
+#: templates/js/translated/bom.js:884 templates/js/translated/build.js:1787
+#: templates/js/translated/build.js:2650 templates/js/translated/part.js:571
+#: templates/js/translated/part.js:574
#: templates/js/translated/table_filters.js:178
msgid "Available"
msgstr "Elérhető"
@@ -7623,6 +7609,13 @@ msgstr "Klikk a következő linkre az alkatrész megjelenítéséhez"
msgid "Minimum Quantity"
msgstr "Minimum mennyiség"
+#: templates/email/new_order_assigned.html:9
+#: templates/email/overdue_build_order.html:9
+#: templates/email/overdue_purchase_order.html:9
+#: templates/email/overdue_sales_order.html:9
+msgid "Click on the following link to view this order"
+msgstr ""
+
#: templates/image_download.html:8
msgid "Specify URL for downloading image"
msgstr "URL megadása a kép letöltéséhez"
@@ -7639,91 +7632,91 @@ msgstr "A távoli kiszolgálónak elérhetőnek kell lennie"
msgid "Remote image must not exceed maximum allowable file size"
msgstr "A távoli kép mérete nem haladhatja meg a maximális fájlméretet"
-#: templates/js/translated/api.js:235 templates/js/translated/modals.js:1067
+#: templates/js/translated/api.js:195 templates/js/translated/modals.js:1073
msgid "No Response"
msgstr "Nincs válasz"
-#: templates/js/translated/api.js:236 templates/js/translated/modals.js:1068
+#: templates/js/translated/api.js:196 templates/js/translated/modals.js:1074
msgid "No response from the InvenTree server"
msgstr "Nincs válasz az InvenTree kiszolgálótól"
-#: templates/js/translated/api.js:242
+#: templates/js/translated/api.js:202
msgid "Error 400: Bad request"
msgstr "Error 400: Rossz kérelem"
-#: templates/js/translated/api.js:243
+#: templates/js/translated/api.js:203
msgid "API request returned error code 400"
msgstr "Az API kérelem 400-as hibakódot adott vissza"
-#: templates/js/translated/api.js:247 templates/js/translated/modals.js:1077
+#: templates/js/translated/api.js:207 templates/js/translated/modals.js:1083
msgid "Error 401: Not Authenticated"
msgstr "Error 401: Nincs hitelesítve"
-#: templates/js/translated/api.js:248 templates/js/translated/modals.js:1078
+#: templates/js/translated/api.js:208 templates/js/translated/modals.js:1084
msgid "Authentication credentials not supplied"
msgstr "Hitelesítési adatok nem lettek megadva"
-#: templates/js/translated/api.js:252 templates/js/translated/modals.js:1082
+#: templates/js/translated/api.js:212 templates/js/translated/modals.js:1088
msgid "Error 403: Permission Denied"
msgstr "Error 403: Hozzáférés megtagadva"
-#: templates/js/translated/api.js:253 templates/js/translated/modals.js:1083
+#: templates/js/translated/api.js:213 templates/js/translated/modals.js:1089
msgid "You do not have the required permissions to access this function"
msgstr "Nincs meg a szükséges jogosultságod, hogy elérd ezt a funkciót"
-#: templates/js/translated/api.js:257 templates/js/translated/modals.js:1087
+#: templates/js/translated/api.js:217 templates/js/translated/modals.js:1093
msgid "Error 404: Resource Not Found"
msgstr "Error 404: Erőforrás nem található"
-#: templates/js/translated/api.js:258 templates/js/translated/modals.js:1088
+#: templates/js/translated/api.js:218 templates/js/translated/modals.js:1094
msgid "The requested resource could not be located on the server"
msgstr "A kért erőforrás nem található a kiszolgálón"
-#: templates/js/translated/api.js:262
+#: templates/js/translated/api.js:222
msgid "Error 405: Method Not Allowed"
msgstr "Error 405: Metódus nincs engedélyezve"
-#: templates/js/translated/api.js:263
+#: templates/js/translated/api.js:223
msgid "HTTP method not allowed at URL"
msgstr "HTTP metódus nincs engedélyezve ezen az URL-n"
-#: templates/js/translated/api.js:267 templates/js/translated/modals.js:1092
+#: templates/js/translated/api.js:227 templates/js/translated/modals.js:1098
msgid "Error 408: Timeout"
msgstr "Error 408: Időtúllépés"
-#: templates/js/translated/api.js:268 templates/js/translated/modals.js:1093
+#: templates/js/translated/api.js:228 templates/js/translated/modals.js:1099
msgid "Connection timeout while requesting data from server"
msgstr "Időtúllépés a kiszolgálótól való adatlekérés közben"
-#: templates/js/translated/api.js:271
+#: templates/js/translated/api.js:231
msgid "Unhandled Error Code"
msgstr "Nem kezelt hibakód"
-#: templates/js/translated/api.js:272
+#: templates/js/translated/api.js:232
msgid "Error code"
msgstr "Hiba kód"
-#: templates/js/translated/attachment.js:96
+#: templates/js/translated/attachment.js:98
msgid "All selected attachments will be deleted"
msgstr "Az összes kijelölt melléklet törlésre kerül"
-#: templates/js/translated/attachment.js:156
+#: templates/js/translated/attachment.js:152
msgid "No attachments found"
msgstr "Nem találhatók mellékletek"
-#: templates/js/translated/attachment.js:180
+#: templates/js/translated/attachment.js:176
msgid "Edit Attachment"
msgstr "Melléklet szerkesztése"
-#: templates/js/translated/attachment.js:246
+#: templates/js/translated/attachment.js:242
msgid "Upload Date"
msgstr "Feltöltés dátuma"
-#: templates/js/translated/attachment.js:262
+#: templates/js/translated/attachment.js:264
msgid "Edit attachment"
msgstr "Melléklet szerkesztése"
-#: templates/js/translated/attachment.js:269
+#: templates/js/translated/attachment.js:271
msgid "Delete attachment"
msgstr "Melléklet törlése"
@@ -7756,7 +7749,7 @@ msgid "Unknown response from server"
msgstr "Ismeretlen válasz a kiszolgálótól"
#: templates/js/translated/barcode.js:182
-#: templates/js/translated/modals.js:1057
+#: templates/js/translated/modals.js:1063
msgid "Invalid server response"
msgstr "Érvénytelen válasz a szervertől"
@@ -7784,7 +7777,7 @@ msgstr "Ez törli az összerendelést a készlet tétel és a vonalkód között
msgid "Unlink"
msgstr "Leválasztás"
-#: templates/js/translated/barcode.js:456 templates/js/translated/stock.js:999
+#: templates/js/translated/barcode.js:456 templates/js/translated/stock.js:998
msgid "Remove stock item"
msgstr "Készlet tétel törlése"
@@ -7919,89 +7912,89 @@ msgstr "Helyettesítő hozzáadása"
msgid "Edit BOM Item Substitutes"
msgstr "Alkatrészjegyzék tétel helyettesítők szerkesztése"
-#: templates/js/translated/bom.js:682
+#: templates/js/translated/bom.js:684
msgid "All selected BOM items will be deleted"
msgstr "Az összes kijelölt alkatrészjegyzék tétel törlésre kerül"
-#: templates/js/translated/bom.js:697
+#: templates/js/translated/bom.js:699
msgid "Delete selected BOM items?"
msgstr "Töröljük a kiválasztott alkatrészjegyzék tételeket?"
-#: templates/js/translated/bom.js:824
+#: templates/js/translated/bom.js:818
msgid "Load BOM for subassembly"
msgstr "BOM betöltése az al-gyártmányhoz"
-#: templates/js/translated/bom.js:834
+#: templates/js/translated/bom.js:828
msgid "Substitutes Available"
msgstr "Vannak helyettesítők"
-#: templates/js/translated/bom.js:838 templates/js/translated/build.js:1769
+#: templates/js/translated/bom.js:832 templates/js/translated/build.js:1769
msgid "Variant stock allowed"
msgstr "Készletváltozatok engedélyezve"
-#: templates/js/translated/bom.js:906 templates/js/translated/build.js:1814
+#: templates/js/translated/bom.js:900 templates/js/translated/build.js:1814
#: templates/js/translated/order.js:3562
msgid "No Stock Available"
msgstr "Nincs szabad"
-#: templates/js/translated/bom.js:910 templates/js/translated/build.js:1818
+#: templates/js/translated/bom.js:904 templates/js/translated/build.js:1818
msgid "Includes variant and substitute stock"
msgstr "Változatokkal és helyettesítőkkel együtt"
-#: templates/js/translated/bom.js:912 templates/js/translated/build.js:1820
-#: templates/js/translated/part.js:690
+#: templates/js/translated/bom.js:906 templates/js/translated/build.js:1820
+#: templates/js/translated/part.js:734
msgid "Includes variant stock"
msgstr "Változatokkal együtt"
-#: templates/js/translated/bom.js:914 templates/js/translated/build.js:1822
+#: templates/js/translated/bom.js:908 templates/js/translated/build.js:1822
msgid "Includes substitute stock"
msgstr "Helyettesítőkkel együtt"
-#: templates/js/translated/bom.js:928
+#: templates/js/translated/bom.js:922
msgid "Substitutes"
msgstr "Helyettesítõk"
-#: templates/js/translated/bom.js:943
+#: templates/js/translated/bom.js:937
msgid "Purchase Price Range"
msgstr "Beszerzési ártartomány"
-#: templates/js/translated/bom.js:950
+#: templates/js/translated/bom.js:944
msgid "Purchase Price Average"
msgstr "Beszerzési átlagár"
-#: templates/js/translated/bom.js:999 templates/js/translated/bom.js:1090
+#: templates/js/translated/bom.js:993 templates/js/translated/bom.js:1084
msgid "View BOM"
msgstr "Alkatrészjegyzék megtekintése"
-#: templates/js/translated/bom.js:1061
+#: templates/js/translated/bom.js:1055
msgid "Validate BOM Item"
msgstr "Alkatrészjegyzék tétel jóváhagyása"
-#: templates/js/translated/bom.js:1063
+#: templates/js/translated/bom.js:1057
msgid "This line has been validated"
msgstr "Ez a sor jóvá lett hagyva"
-#: templates/js/translated/bom.js:1065
+#: templates/js/translated/bom.js:1059
msgid "Edit substitute parts"
msgstr "Helyettesítő alkatrészek szerkesztése"
-#: templates/js/translated/bom.js:1067 templates/js/translated/bom.js:1228
+#: templates/js/translated/bom.js:1061 templates/js/translated/bom.js:1222
msgid "Edit BOM Item"
msgstr "Alkatrészjegyzék tétel szerkesztése"
-#: templates/js/translated/bom.js:1069
+#: templates/js/translated/bom.js:1063
msgid "Delete BOM Item"
msgstr "Alkatrészjegyzék tétel törlése"
-#: templates/js/translated/bom.js:1164 templates/js/translated/build.js:1615
+#: templates/js/translated/bom.js:1158 templates/js/translated/build.js:1615
msgid "No BOM items found"
msgstr "Nem találhatók alkatrészjegyzék tételek"
-#: templates/js/translated/bom.js:1408 templates/js/translated/build.js:1753
+#: templates/js/translated/bom.js:1402 templates/js/translated/build.js:1753
msgid "Required Part"
msgstr "Szükséges alkatrész"
-#: templates/js/translated/bom.js:1430
+#: templates/js/translated/bom.js:1424
msgid "Inherited from parent BOM"
msgstr "Örökölve a szülő alkatrészjegyzéktől"
@@ -8041,13 +8034,13 @@ msgstr "Gyártási utasítás befejezetlen"
msgid "Complete Build Order"
msgstr "Gyártási utasítás befejezése"
-#: templates/js/translated/build.js:259 templates/js/translated/stock.js:91
-#: templates/js/translated/stock.js:181
+#: templates/js/translated/build.js:259 templates/js/translated/stock.js:90
+#: templates/js/translated/stock.js:180
msgid "Next available serial number"
msgstr "Következő szabad sorozatszám"
-#: templates/js/translated/build.js:261 templates/js/translated/stock.js:93
-#: templates/js/translated/stock.js:183
+#: templates/js/translated/build.js:261 templates/js/translated/stock.js:92
+#: templates/js/translated/stock.js:182
msgid "Latest serial number"
msgstr "Legutolsó sorozatszám"
@@ -8260,9 +8253,9 @@ msgstr "Készlet tételek foglalása"
msgid "No builds matching query"
msgstr "Nincs a lekérdezéssel egyező gyártási utasítás"
-#: templates/js/translated/build.js:2448 templates/js/translated/part.js:1314
-#: templates/js/translated/part.js:1729 templates/js/translated/stock.js:1619
-#: templates/js/translated/stock.js:2277
+#: templates/js/translated/build.js:2448 templates/js/translated/part.js:1358
+#: templates/js/translated/part.js:1825 templates/js/translated/stock.js:1629
+#: templates/js/translated/stock.js:2287
msgid "Select"
msgstr "Kiválaszt"
@@ -8274,7 +8267,7 @@ msgstr "Gyártás késésben van"
msgid "Progress"
msgstr "Haladás"
-#: templates/js/translated/build.js:2532 templates/js/translated/stock.js:2519
+#: templates/js/translated/build.js:2532 templates/js/translated/stock.js:2529
msgid "No user information"
msgstr "Nincs felhasználói információ"
@@ -8286,107 +8279,107 @@ msgstr "Nincs információ"
msgid "No parts allocated for"
msgstr "Nincs lefoglalt alkatrész ehhez"
-#: templates/js/translated/company.js:66
+#: templates/js/translated/company.js:65
msgid "Add Manufacturer"
msgstr "Gyártó hozzáadása"
-#: templates/js/translated/company.js:79 templates/js/translated/company.js:169
+#: templates/js/translated/company.js:78 templates/js/translated/company.js:168
msgid "Add Manufacturer Part"
msgstr "Gyártói alkatrész hozzáadása"
-#: templates/js/translated/company.js:100
+#: templates/js/translated/company.js:99
msgid "Edit Manufacturer Part"
msgstr "Gyártói alkatrész szerkesztése"
-#: templates/js/translated/company.js:157 templates/js/translated/order.js:506
+#: templates/js/translated/company.js:156 templates/js/translated/order.js:506
msgid "Add Supplier"
msgstr "Beszállító hozzáadása"
-#: templates/js/translated/company.js:185
+#: templates/js/translated/company.js:184
msgid "Add Supplier Part"
msgstr "Beszállítói alkatrész hozzáadása"
-#: templates/js/translated/company.js:200
+#: templates/js/translated/company.js:199
msgid "Edit Supplier Part"
msgstr "Beszállítói alkatrész szerkesztése"
-#: templates/js/translated/company.js:248
+#: templates/js/translated/company.js:249
msgid "All selected supplier parts will be deleted"
msgstr "Az összes kiválasztott beszállítói alkatrész törölve lesz"
-#: templates/js/translated/company.js:263
+#: templates/js/translated/company.js:264
msgid "Delete Supplier Parts"
msgstr "Beszállítói alkatrészek törlése"
-#: templates/js/translated/company.js:342
+#: templates/js/translated/company.js:336
msgid "Add new Company"
msgstr "Új cég hozzáadása"
-#: templates/js/translated/company.js:419
+#: templates/js/translated/company.js:413
msgid "Parts Supplied"
msgstr "Beszállított alkatrészek"
-#: templates/js/translated/company.js:428
+#: templates/js/translated/company.js:422
msgid "Parts Manufactured"
msgstr "Gyártott alkatrészek"
-#: templates/js/translated/company.js:443
+#: templates/js/translated/company.js:437
msgid "No company information found"
msgstr "Nem található céginformáció"
-#: templates/js/translated/company.js:482
+#: templates/js/translated/company.js:478
msgid "All selected manufacturer parts will be deleted"
msgstr "Az összes kijelölt gyártói alkatrész törlésre kerül"
-#: templates/js/translated/company.js:496
+#: templates/js/translated/company.js:492
msgid "Delete Manufacturer Parts"
msgstr "Gyártói alkatrészek törlése"
-#: templates/js/translated/company.js:535
+#: templates/js/translated/company.js:526
msgid "All selected parameters will be deleted"
msgstr "Az összes kijelölt paraméter törlésre kerül"
-#: templates/js/translated/company.js:548
+#: templates/js/translated/company.js:539
msgid "Delete Parameters"
msgstr "Paraméterek törlése"
-#: templates/js/translated/company.js:595
+#: templates/js/translated/company.js:580
msgid "No manufacturer parts found"
msgstr "Nincs gyártói alkatrész"
-#: templates/js/translated/company.js:615
-#: templates/js/translated/company.js:874 templates/js/translated/part.js:565
-#: templates/js/translated/part.js:650
+#: templates/js/translated/company.js:600
+#: templates/js/translated/company.js:859 templates/js/translated/part.js:609
+#: templates/js/translated/part.js:694
msgid "Template part"
msgstr "Sablon alkatrész"
-#: templates/js/translated/company.js:619
-#: templates/js/translated/company.js:878 templates/js/translated/part.js:569
-#: templates/js/translated/part.js:654
+#: templates/js/translated/company.js:604
+#: templates/js/translated/company.js:863 templates/js/translated/part.js:613
+#: templates/js/translated/part.js:698
msgid "Assembled part"
msgstr "Gyártmány alkatrész"
-#: templates/js/translated/company.js:747 templates/js/translated/part.js:757
+#: templates/js/translated/company.js:732 templates/js/translated/part.js:801
msgid "No parameters found"
msgstr "Nem található paraméter"
-#: templates/js/translated/company.js:784 templates/js/translated/part.js:799
+#: templates/js/translated/company.js:769 templates/js/translated/part.js:843
msgid "Edit parameter"
msgstr "Paraméter szerkesztése"
-#: templates/js/translated/company.js:785 templates/js/translated/part.js:800
+#: templates/js/translated/company.js:770 templates/js/translated/part.js:844
msgid "Delete parameter"
msgstr "Paraméter törlése"
-#: templates/js/translated/company.js:804 templates/js/translated/part.js:817
+#: templates/js/translated/company.js:789 templates/js/translated/part.js:861
msgid "Edit Parameter"
msgstr "Paraméter szerkesztése"
-#: templates/js/translated/company.js:815 templates/js/translated/part.js:829
+#: templates/js/translated/company.js:800 templates/js/translated/part.js:873
msgid "Delete Parameter"
msgstr "Paraméter törlése"
-#: templates/js/translated/company.js:854
+#: templates/js/translated/company.js:839
msgid "No supplier parts found"
msgstr "Nincs beszállítói alkatrész"
@@ -8449,36 +8442,36 @@ msgstr "Megtekintés nem engedélyezett"
msgid "Keep this form open"
msgstr "Form nyitva tartása"
-#: templates/js/translated/forms.js:756
+#: templates/js/translated/forms.js:757
msgid "Enter a valid number"
msgstr "Adj meg egy érvényes számot"
-#: templates/js/translated/forms.js:1248 templates/modals.html:19
+#: templates/js/translated/forms.js:1249 templates/modals.html:19
#: templates/modals.html:43
msgid "Form errors exist"
msgstr "Form hibák vannak"
-#: templates/js/translated/forms.js:1681
+#: templates/js/translated/forms.js:1682
msgid "No results found"
msgstr "Nincs eredmény"
-#: templates/js/translated/forms.js:1896 templates/search.html:29
+#: templates/js/translated/forms.js:1897 templates/search.html:29
msgid "Searching"
msgstr "Keresés"
-#: templates/js/translated/forms.js:2149
+#: templates/js/translated/forms.js:2150
msgid "Clear input"
msgstr "Bevitel törlése"
-#: templates/js/translated/forms.js:2615
+#: templates/js/translated/forms.js:2616
msgid "File Column"
msgstr "Fájl oszlop"
-#: templates/js/translated/forms.js:2615
+#: templates/js/translated/forms.js:2616
msgid "Field Name"
msgstr "Mező név"
-#: templates/js/translated/forms.js:2627
+#: templates/js/translated/forms.js:2628
msgid "Select Columns"
msgstr "Oszlopok kiválasztása"
@@ -8499,7 +8492,7 @@ msgid "Labels sent to printer"
msgstr "Címkék nyomtatónak elküldve"
#: templates/js/translated/label.js:60 templates/js/translated/report.js:118
-#: templates/js/translated/stock.js:1023
+#: templates/js/translated/stock.js:1022
msgid "Select Stock Items"
msgstr "Készlet tételek kiválasztása"
@@ -8553,12 +8546,12 @@ msgid "Select Label Template"
msgstr "Címke sablon kiválasztása"
#: templates/js/translated/modals.js:82 templates/js/translated/modals.js:142
-#: templates/js/translated/modals.js:621
+#: templates/js/translated/modals.js:627
msgid "Cancel"
msgstr "Mégsem"
#: templates/js/translated/modals.js:83 templates/js/translated/modals.js:141
-#: templates/js/translated/modals.js:688 templates/js/translated/modals.js:996
+#: templates/js/translated/modals.js:694 templates/js/translated/modals.js:1002
#: templates/modals.html:28 templates/modals.html:51
msgid "Submit"
msgstr "Küldés"
@@ -8567,47 +8560,47 @@ msgstr "Küldés"
msgid "Form Title"
msgstr "Form megnevezése"
-#: templates/js/translated/modals.js:403
+#: templates/js/translated/modals.js:421
msgid "Waiting for server..."
msgstr "Várakozás a kiszolgálóra..."
-#: templates/js/translated/modals.js:562
+#: templates/js/translated/modals.js:568
msgid "Show Error Information"
msgstr "Hibainformációk megjelenítése"
-#: templates/js/translated/modals.js:620
+#: templates/js/translated/modals.js:626
msgid "Accept"
msgstr "Elfogadás"
-#: templates/js/translated/modals.js:677
+#: templates/js/translated/modals.js:683
msgid "Loading Data"
msgstr "Adatok betöltése"
-#: templates/js/translated/modals.js:948
+#: templates/js/translated/modals.js:954
msgid "Invalid response from server"
msgstr "Rossz válasz a kiszolgálótól"
-#: templates/js/translated/modals.js:948
+#: templates/js/translated/modals.js:954
msgid "Form data missing from server response"
msgstr "Űrlap adat hiányzik a kiszolgálótól kapott válaszban"
-#: templates/js/translated/modals.js:960
+#: templates/js/translated/modals.js:966
msgid "Error posting form data"
msgstr "Form adat küldési hiba"
-#: templates/js/translated/modals.js:1057
+#: templates/js/translated/modals.js:1063
msgid "JSON response missing form data"
msgstr "JSON válasz hiányzó form adatok"
-#: templates/js/translated/modals.js:1072
+#: templates/js/translated/modals.js:1078
msgid "Error 400: Bad Request"
msgstr "Error 400: Rossz kérelem"
-#: templates/js/translated/modals.js:1073
+#: templates/js/translated/modals.js:1079
msgid "Server returned error code 400"
msgstr "A kiszolgáló 400-as hibakódot adott vissza"
-#: templates/js/translated/modals.js:1096
+#: templates/js/translated/modals.js:1102
msgid "Error requesting form data"
msgstr "Form adat lekérése sikertelen"
@@ -8657,11 +8650,11 @@ msgstr "Megjelölés olvasatlanként"
msgid "Mark as read"
msgstr "Megjelölés olvasottként"
-#: templates/js/translated/notification.js:259
+#: templates/js/translated/notification.js:260
msgid "No unread notifications"
msgstr "Nincs olvasatlan értesítés"
-#: templates/js/translated/notification.js:300 templates/notifications.html:10
+#: templates/js/translated/notification.js:302 templates/notifications.html:10
msgid "Notifications will load here"
msgstr "Az értesítések itt fognak megjelenni"
@@ -8805,7 +8798,7 @@ msgstr "Sorozatszám hozzáadása"
msgid "Quantity to receive"
msgstr "Érkező mennyiség"
-#: templates/js/translated/order.js:1225 templates/js/translated/stock.js:2080
+#: templates/js/translated/order.js:1225 templates/js/translated/stock.js:2090
msgid "Stock Status"
msgstr "Készlet állapota"
@@ -8829,7 +8822,7 @@ msgstr "Bevételezés megerősítése"
msgid "Receive Purchase Order Items"
msgstr "Beszerzési rendelés tételeinek bevételezése"
-#: templates/js/translated/order.js:1602 templates/js/translated/part.js:870
+#: templates/js/translated/order.js:1602 templates/js/translated/part.js:914
msgid "No purchase orders found"
msgstr "Nem található beszerzési rendelés"
@@ -8864,7 +8857,7 @@ msgstr "Összesen"
#: templates/js/translated/order.js:1937 templates/js/translated/order.js:2139
#: templates/js/translated/order.js:3467 templates/js/translated/order.js:3978
-#: templates/js/translated/part.js:1948 templates/js/translated/part.js:2301
+#: templates/js/translated/part.js:2044 templates/js/translated/part.js:2397
msgid "Unit Price"
msgstr "Egységár"
@@ -8874,11 +8867,11 @@ msgid "Total Price"
msgstr "Teljes ár"
#: templates/js/translated/order.js:1993 templates/js/translated/order.js:3525
-#: templates/js/translated/part.js:979
+#: templates/js/translated/part.js:1023
msgid "This line item is overdue"
msgstr "Ez a sortétel késésben van"
-#: templates/js/translated/order.js:2052 templates/js/translated/part.js:1025
+#: templates/js/translated/order.js:2052 templates/js/translated/part.js:1069
msgid "Receive line item"
msgstr "Sortétel bevételezése"
@@ -8999,7 +8992,7 @@ msgid "Delete Stock Allocation"
msgstr "Készlet foglalások törlése"
#: templates/js/translated/order.js:3243 templates/js/translated/order.js:3332
-#: templates/js/translated/stock.js:1535
+#: templates/js/translated/stock.js:1545
msgid "Shipped to customer"
msgstr "Vevőnek kiszállítva"
@@ -9139,165 +9132,209 @@ msgstr "Alkatrész módosítva"
msgid "Create Part Variant"
msgstr "Alkatrész változat létrehozása"
+#: templates/js/translated/part.js:405
+msgid "Active Part"
+msgstr ""
+
+#: templates/js/translated/part.js:406
+msgid "Part cannot be deleted as it is currently active"
+msgstr ""
+
+#: templates/js/translated/part.js:420
+msgid "Deleting this part cannot be reversed"
+msgstr ""
+
+#: templates/js/translated/part.js:422
+msgid "Any stock items for this part will be deleted"
+msgstr ""
+
#: templates/js/translated/part.js:423
+msgid "This part will be removed from any Bills of Material"
+msgstr ""
+
+#: templates/js/translated/part.js:424
+msgid "All manufacturer and supplier information for this part will be deleted"
+msgstr ""
+
+#: templates/js/translated/part.js:431
+msgid "Delete Part"
+msgstr ""
+
+#: templates/js/translated/part.js:467
msgid "You are subscribed to notifications for this item"
msgstr "Értesítések beállítva erre a tételre"
-#: templates/js/translated/part.js:425
+#: templates/js/translated/part.js:469
msgid "You have subscribed to notifications for this item"
msgstr "Értesítések beállítva erre a tételre"
-#: templates/js/translated/part.js:430
+#: templates/js/translated/part.js:474
msgid "Subscribe to notifications for this item"
msgstr "Értesítések kérése erre a tételre"
-#: templates/js/translated/part.js:432
+#: templates/js/translated/part.js:476
msgid "You have unsubscribed to notifications for this item"
msgstr "Értesítések letiltva erre a tételre"
-#: templates/js/translated/part.js:449
+#: templates/js/translated/part.js:493
msgid "Validating the BOM will mark each line item as valid"
msgstr "Az alkatrészjegyzék jóváhagyása minden sortételt jóvá fog hagyni"
-#: templates/js/translated/part.js:459
+#: templates/js/translated/part.js:503
msgid "Validate Bill of Materials"
msgstr "Alkatrészjegyzék jóváhagyása"
-#: templates/js/translated/part.js:462
+#: templates/js/translated/part.js:506
msgid "Validated Bill of Materials"
msgstr "Alkatrészjegyzék jóvá lett hagyva"
-#: templates/js/translated/part.js:487
+#: templates/js/translated/part.js:531
msgid "Copy Bill of Materials"
msgstr "Alkatrészjegyzék másolása"
-#: templates/js/translated/part.js:513 templates/js/translated/part.js:1397
+#: templates/js/translated/part.js:557 templates/js/translated/part.js:1441
#: templates/js/translated/table_filters.js:452
msgid "Low stock"
msgstr "Alacsony készlet"
-#: templates/js/translated/part.js:523 templates/js/translated/part.js:1409
+#: templates/js/translated/part.js:567 templates/js/translated/part.js:1453
msgid "No stock available"
msgstr "Nincs szabad"
-#: templates/js/translated/part.js:557 templates/js/translated/part.js:642
+#: templates/js/translated/part.js:601 templates/js/translated/part.js:686
msgid "Trackable part"
msgstr "Követésre kötelezett alkatrész"
-#: templates/js/translated/part.js:561 templates/js/translated/part.js:646
+#: templates/js/translated/part.js:605 templates/js/translated/part.js:690
msgid "Virtual part"
msgstr "Virtuális alkatrész"
-#: templates/js/translated/part.js:573
+#: templates/js/translated/part.js:617
msgid "Subscribed part"
msgstr "Értesítésre beállított alkatrész"
-#: templates/js/translated/part.js:577
+#: templates/js/translated/part.js:621
msgid "Salable part"
msgstr "Értékesíthető alkatrész"
-#: templates/js/translated/part.js:705
+#: templates/js/translated/part.js:749
msgid "No variants found"
msgstr "Nincs több változat"
-#: templates/js/translated/part.js:1095
+#: templates/js/translated/part.js:1139
msgid "Delete part relationship"
msgstr "Alkatrész kapcsolatok törlése"
-#: templates/js/translated/part.js:1119
+#: templates/js/translated/part.js:1163
msgid "Delete Part Relationship"
msgstr "Alkatrész kapcsolatok törlése"
-#: templates/js/translated/part.js:1184 templates/js/translated/part.js:1480
+#: templates/js/translated/part.js:1228 templates/js/translated/part.js:1524
msgid "No parts found"
msgstr "Nincs alkatrész"
-#: templates/js/translated/part.js:1223
+#: templates/js/translated/part.js:1267
msgid "Not available"
msgstr "Nincs szabad"
-#: templates/js/translated/part.js:1374
+#: templates/js/translated/part.js:1418
msgid "No category"
msgstr "Nincs kategória"
-#: templates/js/translated/part.js:1504 templates/js/translated/part.js:1664
-#: templates/js/translated/stock.js:2238
+#: templates/js/translated/part.js:1548 templates/js/translated/part.js:1760
+#: templates/js/translated/stock.js:2248
msgid "Display as list"
msgstr "Megjelenítés listaként"
-#: templates/js/translated/part.js:1520
+#: templates/js/translated/part.js:1564
msgid "Display as grid"
msgstr "Megjelenítés rácsnézetként"
-#: templates/js/translated/part.js:1683 templates/js/translated/stock.js:2257
+#: templates/js/translated/part.js:1630
+msgid "Set the part category for the selected parts"
+msgstr ""
+
+#: templates/js/translated/part.js:1635
+msgid "Set Part Category"
+msgstr "Alkatrész kategória beállítása"
+
+#: templates/js/translated/part.js:1640
+msgid "Select Part Category"
+msgstr ""
+
+#: templates/js/translated/part.js:1653
+msgid "Category is required"
+msgstr ""
+
+#: templates/js/translated/part.js:1779 templates/js/translated/stock.js:2267
msgid "Display as tree"
msgstr "Megjelenítés fában"
-#: templates/js/translated/part.js:1747
+#: templates/js/translated/part.js:1843
msgid "Subscribed category"
msgstr "Értesítésre beállított kategória"
-#: templates/js/translated/part.js:1761 templates/js/translated/stock.js:2301
+#: templates/js/translated/part.js:1857 templates/js/translated/stock.js:2311
msgid "Path"
msgstr "Elérési út"
-#: templates/js/translated/part.js:1805
+#: templates/js/translated/part.js:1901
msgid "No test templates matching query"
msgstr "Nincs a lekérdezéssel egyező teszt sablon"
-#: templates/js/translated/part.js:1856 templates/js/translated/stock.js:1233
+#: templates/js/translated/part.js:1952 templates/js/translated/stock.js:1243
msgid "Edit test result"
msgstr "Teszt eredmény szerkesztése"
-#: templates/js/translated/part.js:1857 templates/js/translated/stock.js:1234
-#: templates/js/translated/stock.js:1493
+#: templates/js/translated/part.js:1953 templates/js/translated/stock.js:1244
+#: templates/js/translated/stock.js:1503
msgid "Delete test result"
msgstr "Teszt eredmény törlése"
-#: templates/js/translated/part.js:1863
+#: templates/js/translated/part.js:1959
msgid "This test is defined for a parent part"
msgstr "Ez a teszt a szülő alkatrészhez lett felvéve"
-#: templates/js/translated/part.js:1885
+#: templates/js/translated/part.js:1981
msgid "Edit Test Result Template"
msgstr "Teszt eredmény sablon szerkesztése"
-#: templates/js/translated/part.js:1899
+#: templates/js/translated/part.js:1995
msgid "Delete Test Result Template"
msgstr "Teszt eredmény sablon törlése"
-#: templates/js/translated/part.js:1924
+#: templates/js/translated/part.js:2020
#, python-brace-format
msgid "No ${human_name} information found"
msgstr "Nincs ${human_name} információ"
-#: templates/js/translated/part.js:1981
+#: templates/js/translated/part.js:2077
#, python-brace-format
msgid "Edit ${human_name}"
msgstr "${human_name} szerkesztése"
-#: templates/js/translated/part.js:1982
+#: templates/js/translated/part.js:2078
#, python-brace-format
msgid "Delete ${human_name}"
msgstr "${human_name} törlése"
-#: templates/js/translated/part.js:2096
+#: templates/js/translated/part.js:2192
msgid "Current Stock"
msgstr "Aktuális készlet"
-#: templates/js/translated/part.js:2129
+#: templates/js/translated/part.js:2225
msgid "No scheduling information available for this part"
msgstr "Az alkatrészhez nem áll rendelkezésre ütemezési információ"
-#: templates/js/translated/part.js:2155
+#: templates/js/translated/part.js:2251
msgid "Scheduled Stock Quantities"
msgstr "Ütemezett készlet mennyiség"
-#: templates/js/translated/part.js:2225
+#: templates/js/translated/part.js:2321
msgid "Single Price"
msgstr "Egységes ár"
-#: templates/js/translated/part.js:2244
+#: templates/js/translated/part.js:2340
msgid "Single Price Difference"
msgstr "Egységes ár különbség"
@@ -9379,360 +9416,360 @@ msgstr "Eredmények összezárása"
msgid "Remove results"
msgstr "Eredmények eltávolítása"
-#: templates/js/translated/stock.js:73
+#: templates/js/translated/stock.js:72
msgid "Serialize Stock Item"
msgstr "Készlet tétel sorszámozása"
-#: templates/js/translated/stock.js:101
+#: templates/js/translated/stock.js:100
msgid "Confirm Stock Serialization"
msgstr "Készlet sorozatszámozás megerősítése"
-#: templates/js/translated/stock.js:110
+#: templates/js/translated/stock.js:109
msgid "Parent stock location"
msgstr "Felsőbb szintű készlet hely"
-#: templates/js/translated/stock.js:139
+#: templates/js/translated/stock.js:138
msgid "Edit Stock Location"
msgstr "Készlet hely szerkesztése"
-#: templates/js/translated/stock.js:154
+#: templates/js/translated/stock.js:153
msgid "New Stock Location"
msgstr "Új készlet hely"
-#: templates/js/translated/stock.js:194
+#: templates/js/translated/stock.js:193
msgid "This part cannot be serialized"
msgstr "Ezt az alkatrészt nem lehet sorozatszámozni"
-#: templates/js/translated/stock.js:233
+#: templates/js/translated/stock.js:232
msgid "Enter initial quantity for this stock item"
msgstr "Add meg a kezdeti mennyiséget ehhez a készlet tételhez"
-#: templates/js/translated/stock.js:239
+#: templates/js/translated/stock.js:238
msgid "Enter serial numbers for new stock (or leave blank)"
msgstr "Add meg az új készlet tételhez tartozó sorozatszámokat (vagy hagyd üresen)"
-#: templates/js/translated/stock.js:304
+#: templates/js/translated/stock.js:303
msgid "Stock item duplicated"
msgstr "Készlet tétel lemásolva"
-#: templates/js/translated/stock.js:324
+#: templates/js/translated/stock.js:323
msgid "Duplicate Stock Item"
msgstr "Készlet tétel másolása"
-#: templates/js/translated/stock.js:344
+#: templates/js/translated/stock.js:343
msgid "Edit Stock Item"
msgstr "Készlet tétel szerkesztése"
-#: templates/js/translated/stock.js:394
+#: templates/js/translated/stock.js:393
msgid "Created new stock item"
msgstr "Készlet tétel létrehozva"
-#: templates/js/translated/stock.js:407
+#: templates/js/translated/stock.js:406
msgid "Created multiple stock items"
msgstr "Több készlet tétel létre lett hozva"
-#: templates/js/translated/stock.js:432
+#: templates/js/translated/stock.js:431
msgid "Find Serial Number"
msgstr "Sorozatszám keresése"
-#: templates/js/translated/stock.js:436 templates/js/translated/stock.js:437
+#: templates/js/translated/stock.js:435 templates/js/translated/stock.js:436
msgid "Enter serial number"
msgstr "Sorozatszám megadása"
-#: templates/js/translated/stock.js:453
+#: templates/js/translated/stock.js:452
msgid "Enter a serial number"
msgstr "Adj meg egy sorozatszámot"
-#: templates/js/translated/stock.js:473
+#: templates/js/translated/stock.js:472
msgid "No matching serial number"
msgstr "Nincs egyező sorozatszám"
-#: templates/js/translated/stock.js:482
+#: templates/js/translated/stock.js:481
msgid "More than one matching result found"
msgstr "Több egyező eredmény is van"
-#: templates/js/translated/stock.js:605
+#: templates/js/translated/stock.js:604
msgid "Confirm stock assignment"
msgstr "Készlet hozzárendelés jóváhagyása"
-#: templates/js/translated/stock.js:606
+#: templates/js/translated/stock.js:605
msgid "Assign Stock to Customer"
msgstr "Készlet vevőhöz rendelése"
-#: templates/js/translated/stock.js:683
+#: templates/js/translated/stock.js:682
msgid "Warning: Merge operation cannot be reversed"
msgstr "Figyelem: az összevonási művelet nem vonható vissza"
-#: templates/js/translated/stock.js:684
+#: templates/js/translated/stock.js:683
msgid "Some information will be lost when merging stock items"
msgstr "Némi információ elveszik a készlet összevonás során"
-#: templates/js/translated/stock.js:686
+#: templates/js/translated/stock.js:685
msgid "Stock transaction history will be deleted for merged items"
msgstr "A készlettörténet törölve lesz az összevont tételeknél"
-#: templates/js/translated/stock.js:687
+#: templates/js/translated/stock.js:686
msgid "Supplier part information will be deleted for merged items"
msgstr "A beszállítói alkatrész információk törlődnek az összevont tételeknél"
-#: templates/js/translated/stock.js:773
+#: templates/js/translated/stock.js:772
msgid "Confirm stock item merge"
msgstr "Készlet összevonás megerősítése"
-#: templates/js/translated/stock.js:774
+#: templates/js/translated/stock.js:773
msgid "Merge Stock Items"
msgstr "Készlet tételek összevonása"
-#: templates/js/translated/stock.js:869
+#: templates/js/translated/stock.js:868
msgid "Transfer Stock"
msgstr "Készlet áthelyezése"
-#: templates/js/translated/stock.js:870
+#: templates/js/translated/stock.js:869
msgid "Move"
msgstr "Áthelyezés"
-#: templates/js/translated/stock.js:876
+#: templates/js/translated/stock.js:875
msgid "Count Stock"
msgstr "Leltározás"
-#: templates/js/translated/stock.js:877
+#: templates/js/translated/stock.js:876
msgid "Count"
msgstr "Mennyiség"
-#: templates/js/translated/stock.js:881
+#: templates/js/translated/stock.js:880
msgid "Remove Stock"
msgstr "Készlet csökkentése"
-#: templates/js/translated/stock.js:882
+#: templates/js/translated/stock.js:881
msgid "Take"
msgstr "Kivesz"
-#: templates/js/translated/stock.js:886
+#: templates/js/translated/stock.js:885
msgid "Add Stock"
msgstr "Készlet növelése"
-#: templates/js/translated/stock.js:887 users/models.py:215
+#: templates/js/translated/stock.js:886 users/models.py:215
msgid "Add"
msgstr "Hozzáad"
-#: templates/js/translated/stock.js:891
+#: templates/js/translated/stock.js:890
msgid "Delete Stock"
msgstr "Készlet törlése"
-#: templates/js/translated/stock.js:984
+#: templates/js/translated/stock.js:983
msgid "Quantity cannot be adjusted for serialized stock"
msgstr "Egyedi követésre kötelezett tételeknél a menyiség nem módosítható"
-#: templates/js/translated/stock.js:984
+#: templates/js/translated/stock.js:983
msgid "Specify stock quantity"
msgstr "Készlet mennyiség megadása"
-#: templates/js/translated/stock.js:1024
+#: templates/js/translated/stock.js:1023
msgid "You must select at least one available stock item"
msgstr "Ki kell választanod legalább egy rendelkezésre álló készlet tételt"
-#: templates/js/translated/stock.js:1047
+#: templates/js/translated/stock.js:1046
msgid "Confirm stock adjustment"
msgstr "Készlet módosítás jóváhagyása"
-#: templates/js/translated/stock.js:1172
+#: templates/js/translated/stock.js:1182
msgid "PASS"
msgstr "SIKER"
-#: templates/js/translated/stock.js:1174
+#: templates/js/translated/stock.js:1184
msgid "FAIL"
msgstr "SIKERTELEN"
-#: templates/js/translated/stock.js:1179
+#: templates/js/translated/stock.js:1189
msgid "NO RESULT"
msgstr "NINCS EREDMÉNY"
-#: templates/js/translated/stock.js:1226
+#: templates/js/translated/stock.js:1236
msgid "Pass test"
msgstr "Teszt sikeres"
-#: templates/js/translated/stock.js:1229
+#: templates/js/translated/stock.js:1239
msgid "Add test result"
msgstr "Teszt eredmény hozzáadása"
-#: templates/js/translated/stock.js:1255
+#: templates/js/translated/stock.js:1265
msgid "No test results found"
msgstr "Nincs teszt eredmény"
-#: templates/js/translated/stock.js:1311
+#: templates/js/translated/stock.js:1321
msgid "Test Date"
msgstr "Teszt dátuma"
-#: templates/js/translated/stock.js:1476
+#: templates/js/translated/stock.js:1486
msgid "Edit Test Result"
msgstr "Teszt eredmény szerkesztése"
-#: templates/js/translated/stock.js:1498
+#: templates/js/translated/stock.js:1508
msgid "Delete Test Result"
msgstr "Teszt eredmény törlése"
-#: templates/js/translated/stock.js:1527
+#: templates/js/translated/stock.js:1537
msgid "In production"
msgstr "Gyártásban"
-#: templates/js/translated/stock.js:1531
+#: templates/js/translated/stock.js:1541
msgid "Installed in Stock Item"
msgstr "Beépítve készlet tételbe"
-#: templates/js/translated/stock.js:1539
+#: templates/js/translated/stock.js:1549
msgid "Assigned to Sales Order"
msgstr "Vevő rendeléshez hozzárendelve"
-#: templates/js/translated/stock.js:1545
+#: templates/js/translated/stock.js:1555
msgid "No stock location set"
msgstr "Nincs hely megadva"
-#: templates/js/translated/stock.js:1712
+#: templates/js/translated/stock.js:1722
msgid "Stock item is in production"
msgstr "Készlet tétel gyártás alatt"
-#: templates/js/translated/stock.js:1717
+#: templates/js/translated/stock.js:1727
msgid "Stock item assigned to sales order"
msgstr "Készlet tétel hozzárendelve egy vevői rendeléshez"
-#: templates/js/translated/stock.js:1720
+#: templates/js/translated/stock.js:1730
msgid "Stock item assigned to customer"
msgstr "Készlet tétel hozzárendelve egy vevőhöz"
-#: templates/js/translated/stock.js:1723
+#: templates/js/translated/stock.js:1733
msgid "Serialized stock item has been allocated"
msgstr "Egyedi követésre kötelezett készlet tétel lefoglalva"
-#: templates/js/translated/stock.js:1725
+#: templates/js/translated/stock.js:1735
msgid "Stock item has been fully allocated"
msgstr "Készlet tétel teljes egészében lefoglalva"
-#: templates/js/translated/stock.js:1727
+#: templates/js/translated/stock.js:1737
msgid "Stock item has been partially allocated"
msgstr "Készlet tétel részben lefoglalva"
-#: templates/js/translated/stock.js:1730
+#: templates/js/translated/stock.js:1740
msgid "Stock item has been installed in another item"
msgstr "Készlet tétel beépítve egy másikba"
-#: templates/js/translated/stock.js:1734
+#: templates/js/translated/stock.js:1744
msgid "Stock item has expired"
msgstr "Készlet tétel lejárt"
-#: templates/js/translated/stock.js:1736
+#: templates/js/translated/stock.js:1746
msgid "Stock item will expire soon"
msgstr "Készlet tétel hamarosan lejár"
-#: templates/js/translated/stock.js:1743
+#: templates/js/translated/stock.js:1753
msgid "Stock item has been rejected"
msgstr "Készlet tétel elutasítva"
-#: templates/js/translated/stock.js:1745
+#: templates/js/translated/stock.js:1755
msgid "Stock item is lost"
msgstr "Készlet tétel elveszett"
-#: templates/js/translated/stock.js:1747
+#: templates/js/translated/stock.js:1757
msgid "Stock item is destroyed"
msgstr "Készlet tétel megsemmisült"
-#: templates/js/translated/stock.js:1751
+#: templates/js/translated/stock.js:1761
#: templates/js/translated/table_filters.js:188
msgid "Depleted"
msgstr "Kimerült"
-#: templates/js/translated/stock.js:1802
+#: templates/js/translated/stock.js:1812
msgid "Stocktake"
msgstr "Leltár"
-#: templates/js/translated/stock.js:1884
+#: templates/js/translated/stock.js:1894
msgid "Supplier part not specified"
msgstr "Beszállítói alkatrész nincs megadva"
-#: templates/js/translated/stock.js:1922
+#: templates/js/translated/stock.js:1932
msgid "No stock items matching query"
msgstr "Nincs a lekérdezésnek megfelelő készlet tétel"
-#: templates/js/translated/stock.js:2095
+#: templates/js/translated/stock.js:2105
msgid "Set Stock Status"
msgstr "Készlet állapot beállítása"
-#: templates/js/translated/stock.js:2109
+#: templates/js/translated/stock.js:2119
msgid "Select Status Code"
msgstr "Státuszkód kiválasztása"
-#: templates/js/translated/stock.js:2110
+#: templates/js/translated/stock.js:2120
msgid "Status code must be selected"
msgstr "Státuszkódot ki kell választani"
-#: templates/js/translated/stock.js:2365
+#: templates/js/translated/stock.js:2375
msgid "Details"
msgstr "Részletek"
-#: templates/js/translated/stock.js:2381
+#: templates/js/translated/stock.js:2391
msgid "Part information unavailable"
msgstr "Alkatrész információ nem áll rendelkezésre"
-#: templates/js/translated/stock.js:2403
+#: templates/js/translated/stock.js:2413
msgid "Location no longer exists"
msgstr "A hely már nem létezik"
-#: templates/js/translated/stock.js:2422
+#: templates/js/translated/stock.js:2432
msgid "Purchase order no longer exists"
msgstr "Beszerzési megrendelés már nem létezik"
-#: templates/js/translated/stock.js:2441
+#: templates/js/translated/stock.js:2451
msgid "Customer no longer exists"
msgstr "Vevő már nem létezik"
-#: templates/js/translated/stock.js:2459
+#: templates/js/translated/stock.js:2469
msgid "Stock item no longer exists"
msgstr "A készlet tétel már nem létezik"
-#: templates/js/translated/stock.js:2482
+#: templates/js/translated/stock.js:2492
msgid "Added"
msgstr "Hozzáadva"
-#: templates/js/translated/stock.js:2490
+#: templates/js/translated/stock.js:2500
msgid "Removed"
msgstr "Eltávolítva"
-#: templates/js/translated/stock.js:2566
+#: templates/js/translated/stock.js:2576
msgid "No installed items"
msgstr "Nincsenek beépített tételek"
-#: templates/js/translated/stock.js:2617 templates/js/translated/stock.js:2653
+#: templates/js/translated/stock.js:2627 templates/js/translated/stock.js:2663
msgid "Uninstall Stock Item"
msgstr "Készlet tétel kiszedése"
-#: templates/js/translated/stock.js:2666
+#: templates/js/translated/stock.js:2676
msgid "Select stock item to uninstall"
msgstr "Válaszd ki a kiszedni való készlet tételt"
-#: templates/js/translated/stock.js:2687
+#: templates/js/translated/stock.js:2697
msgid "Install another stock item into this item"
msgstr "Másik tétel beépítése ebbe a készlet tételbe"
-#: templates/js/translated/stock.js:2688
+#: templates/js/translated/stock.js:2698
msgid "Stock items can only be installed if they meet the following criteria"
msgstr "Készlet tételek csak akkor építhetők be ha teljesítik a következő kritériumokat"
-#: templates/js/translated/stock.js:2690
+#: templates/js/translated/stock.js:2700
msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
msgstr "A készlet tétel egy olyan alkatrészre mutat ami alkatrészjegyzéke ennek a készlet tételnek"
-#: templates/js/translated/stock.js:2691
+#: templates/js/translated/stock.js:2701
msgid "The Stock Item is currently available in stock"
msgstr "A készlet tétel jelenleg elérhető készleten"
-#: templates/js/translated/stock.js:2692
+#: templates/js/translated/stock.js:2702
msgid "The Stock Item is not already installed in another item"
msgstr "A készlet tétel még nem épült be egy másik tételbe"
-#: templates/js/translated/stock.js:2693
+#: templates/js/translated/stock.js:2703
msgid "The Stock Item is tracked by either a batch code or serial number"
msgstr "A készlet tétel követett vagy sorozatszámmal vagy batch kóddal"
-#: templates/js/translated/stock.js:2706
+#: templates/js/translated/stock.js:2716
msgid "Select part to install"
msgstr "Válaszd ki a beépítendő alkatrészt"
diff --git a/InvenTree/locale/id/LC_MESSAGES/django.po b/InvenTree/locale/id/LC_MESSAGES/django.po
index ddb68a3507..8eb850647a 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: 2022-06-05 14:26+0000\n"
-"PO-Revision-Date: 2022-06-05 14:34\n"
+"POT-Creation-Date: 2022-06-06 22:59+0000\n"
+"PO-Revision-Date: 2022-06-07 14:34\n"
"Last-Translator: \n"
"Language-Team: Indonesian\n"
"Language: id_ID\n"
@@ -17,7 +17,7 @@ msgstr ""
"X-Crowdin-File: /[inventree.InvenTree] l10/InvenTree/locale/en/LC_MESSAGES/django.po\n"
"X-Crowdin-File-ID: 154\n"
-#: InvenTree/api.py:46
+#: InvenTree/api.py:49
msgid "API endpoint not found"
msgstr "API endpoint tidak ditemukan"
@@ -29,275 +29,273 @@ msgstr ""
msgid "Enter date"
msgstr "Masukkan tanggal"
-#: InvenTree/forms.py:117 templates/account/email_confirm.html:20
-#: templates/js/translated/forms.js:630
-msgid "Confirm"
-msgstr "Konfirmasi"
-
-#: InvenTree/forms.py:134
+#: InvenTree/forms.py:117
msgid "Confirm delete"
msgstr "Konfirmasi penghapusan"
-#: InvenTree/forms.py:135
+#: InvenTree/forms.py:118
msgid "Confirm item deletion"
msgstr "Konfirmasi penghapusan item"
-#: InvenTree/forms.py:167
+#: InvenTree/forms.py:150
msgid "Enter password"
msgstr "Masukkan sandi"
-#: InvenTree/forms.py:168
+#: InvenTree/forms.py:151
msgid "Enter new password"
msgstr "Masukkan kata sandi baru"
-#: InvenTree/forms.py:175
+#: InvenTree/forms.py:158
msgid "Confirm password"
msgstr "Konfirmasikan kata sandi"
-#: InvenTree/forms.py:176
+#: InvenTree/forms.py:159
msgid "Confirm new password"
msgstr "Konfirmasi sandi baru"
-#: InvenTree/forms.py:213
-msgid "Select Category"
-msgstr "Pilih Kategori"
-
-#: InvenTree/forms.py:234
+#: InvenTree/forms.py:184
msgid "Email (again)"
msgstr "Email (ulang)"
-#: InvenTree/forms.py:238
+#: InvenTree/forms.py:188
msgid "Email address confirmation"
msgstr "Konfirmasi alamat email"
-#: InvenTree/forms.py:259
+#: InvenTree/forms.py:209
msgid "You must type the same email each time."
msgstr ""
-#: InvenTree/helpers.py:402
+#: InvenTree/helpers.py:404
#, python-brace-format
msgid "Duplicate serial: {sn}"
msgstr ""
-#: InvenTree/helpers.py:409 order/models.py:365 order/models.py:517
+#: InvenTree/helpers.py:411 order/models.py:370 order/models.py:522
msgid "Invalid quantity provided"
msgstr ""
-#: InvenTree/helpers.py:412
+#: InvenTree/helpers.py:414
msgid "Empty serial number string"
msgstr ""
-#: InvenTree/helpers.py:444
+#: InvenTree/helpers.py:446
#, python-brace-format
msgid "Invalid group range: {g}"
msgstr ""
-#: InvenTree/helpers.py:447
+#: InvenTree/helpers.py:449
#, python-brace-format
msgid "Invalid group: {g}"
msgstr ""
-#: InvenTree/helpers.py:475
+#: InvenTree/helpers.py:477
#, python-brace-format
msgid "Invalid group sequence: {g}"
msgstr ""
-#: InvenTree/helpers.py:483
+#: InvenTree/helpers.py:485
#, python-brace-format
msgid "Invalid/no group {group}"
msgstr ""
-#: InvenTree/helpers.py:489
+#: InvenTree/helpers.py:491
msgid "No serial numbers found"
msgstr ""
-#: InvenTree/helpers.py:493
+#: InvenTree/helpers.py:495
#, python-brace-format
msgid "Number of unique serial numbers ({s}) must match quantity ({q})"
msgstr ""
-#: InvenTree/models.py:174
+#: InvenTree/models.py:178
msgid "Missing file"
msgstr ""
-#: InvenTree/models.py:175
+#: InvenTree/models.py:179
msgid "Missing external link"
msgstr ""
-#: InvenTree/models.py:187 stock/models.py:2087
-#: templates/js/translated/attachment.js:101
-#: templates/js/translated/attachment.js:198
+#: InvenTree/models.py:191 stock/models.py:2091
+#: templates/js/translated/attachment.js:103
+#: templates/js/translated/attachment.js:194
msgid "Attachment"
msgstr ""
-#: InvenTree/models.py:188
+#: InvenTree/models.py:192
msgid "Select file to attach"
msgstr ""
-#: InvenTree/models.py:194 company/models.py:123 company/models.py:272
-#: company/models.py:506 order/models.py:135 order/models.py:1235
+#: InvenTree/models.py:198 company/models.py:123 company/models.py:272
+#: company/models.py:506 order/models.py:136 order/models.py:1251
#: part/models.py:795
#: report/templates/report/inventree_build_order_base.html:165
-#: templates/js/translated/company.js:655
-#: templates/js/translated/company.js:946 templates/js/translated/order.js:2676
-#: templates/js/translated/part.js:1441
+#: templates/js/translated/company.js:640
+#: templates/js/translated/company.js:931 templates/js/translated/order.js:2676
+#: templates/js/translated/part.js:1485
msgid "Link"
msgstr ""
-#: InvenTree/models.py:195 build/models.py:320 part/models.py:796
+#: InvenTree/models.py:199 build/models.py:320 part/models.py:796
#: stock/models.py:642
msgid "Link to external URL"
msgstr ""
-#: InvenTree/models.py:198 templates/js/translated/attachment.js:102
-#: templates/js/translated/attachment.js:242
+#: InvenTree/models.py:202 templates/js/translated/attachment.js:104
+#: templates/js/translated/attachment.js:238
msgid "Comment"
msgstr ""
-#: InvenTree/models.py:198
+#: InvenTree/models.py:202
msgid "File comment"
msgstr ""
-#: InvenTree/models.py:204 InvenTree/models.py:205 common/models.py:1499
-#: common/models.py:1500 common/models.py:1728 common/models.py:1729
-#: common/models.py:1991 common/models.py:1992 part/models.py:2153
-#: part/models.py:2173 plugin/models.py:238 plugin/models.py:239
+#: InvenTree/models.py:208 InvenTree/models.py:209 common/models.py:1506
+#: common/models.py:1507 common/models.py:1735 common/models.py:1736
+#: common/models.py:1998 common/models.py:1999 part/models.py:2141
+#: part/models.py:2161 plugin/models.py:238 plugin/models.py:239
#: report/templates/report/inventree_test_report_base.html:96
-#: templates/js/translated/stock.js:2513
+#: templates/js/translated/stock.js:2523
msgid "User"
msgstr ""
-#: InvenTree/models.py:208
+#: InvenTree/models.py:212
msgid "upload date"
msgstr ""
-#: InvenTree/models.py:230
+#: InvenTree/models.py:234
msgid "Filename must not be empty"
msgstr ""
-#: InvenTree/models.py:253
+#: InvenTree/models.py:257
msgid "Invalid attachment directory"
msgstr ""
-#: InvenTree/models.py:263
+#: InvenTree/models.py:267
#, python-brace-format
msgid "Filename contains illegal character '{c}'"
msgstr ""
-#: InvenTree/models.py:266
+#: InvenTree/models.py:270
msgid "Filename missing extension"
msgstr ""
-#: InvenTree/models.py:273
+#: InvenTree/models.py:277
msgid "Attachment with this filename already exists"
msgstr ""
-#: InvenTree/models.py:280
+#: InvenTree/models.py:284
msgid "Error renaming file"
msgstr ""
-#: InvenTree/models.py:314
+#: InvenTree/models.py:318
msgid "Invalid choice"
msgstr ""
-#: InvenTree/models.py:333 InvenTree/models.py:334 common/models.py:1714
+#: InvenTree/models.py:337 InvenTree/models.py:338 common/models.py:1721
#: company/models.py:354 label/models.py:101 part/models.py:739
-#: part/models.py:2331 plugin/models.py:93 report/models.py:151
+#: part/models.py:2319 plugin/models.py:93 report/models.py:151
#: templates/InvenTree/notifications/notifications.html:84
#: templates/InvenTree/settings/mixins/urls.html:13
#: templates/InvenTree/settings/plugin.html:49
#: templates/InvenTree/settings/plugin.html:132
#: templates/InvenTree/settings/plugin_settings.html:23
#: templates/InvenTree/settings/settings.html:346
-#: templates/js/translated/company.js:539
-#: templates/js/translated/company.js:757 templates/js/translated/part.js:615
-#: templates/js/translated/part.js:767 templates/js/translated/part.js:1736
-#: templates/js/translated/stock.js:2283
+#: templates/js/translated/company.js:530
+#: templates/js/translated/company.js:742 templates/js/translated/part.js:659
+#: templates/js/translated/part.js:811 templates/js/translated/part.js:1832
+#: templates/js/translated/stock.js:2293
msgid "Name"
msgstr ""
-#: InvenTree/models.py:340 build/models.py:197
+#: InvenTree/models.py:344 build/models.py:197
#: build/templates/build/detail.html:24 company/models.py:278
#: company/models.py:512 company/templates/company/company_base.html:71
#: company/templates/company/manufacturer_part.html:75
#: company/templates/company/supplier_part.html:73 label/models.py:108
-#: order/models.py:133 part/models.py:762 part/templates/part/category.html:74
-#: part/templates/part/part_base.html:167
-#: part/templates/part/set_category.html:14 report/models.py:164
+#: order/models.py:134 part/models.py:762 part/templates/part/category.html:74
+#: part/templates/part/part_base.html:167 report/models.py:164
#: report/models.py:509 report/models.py:550
#: report/templates/report/inventree_build_order_base.html:118
#: stock/templates/stock/location.html:103
#: templates/InvenTree/settings/plugin_settings.html:33
-#: templates/js/translated/bom.js:553 templates/js/translated/bom.js:851
-#: templates/js/translated/build.js:2476 templates/js/translated/company.js:401
-#: templates/js/translated/company.js:666
-#: templates/js/translated/company.js:957 templates/js/translated/order.js:1656
+#: templates/js/translated/bom.js:553 templates/js/translated/bom.js:845
+#: templates/js/translated/build.js:2476 templates/js/translated/company.js:395
+#: templates/js/translated/company.js:651
+#: templates/js/translated/company.js:942 templates/js/translated/order.js:1656
#: templates/js/translated/order.js:1888 templates/js/translated/order.js:2476
-#: templates/js/translated/part.js:674 templates/js/translated/part.js:1082
-#: templates/js/translated/part.js:1355 templates/js/translated/part.js:1755
-#: templates/js/translated/part.js:1824 templates/js/translated/stock.js:1676
-#: templates/js/translated/stock.js:2295 templates/js/translated/stock.js:2350
+#: templates/js/translated/part.js:718 templates/js/translated/part.js:1126
+#: templates/js/translated/part.js:1399 templates/js/translated/part.js:1851
+#: templates/js/translated/part.js:1920 templates/js/translated/stock.js:1686
+#: templates/js/translated/stock.js:2305 templates/js/translated/stock.js:2360
msgid "Description"
msgstr ""
-#: InvenTree/models.py:341
+#: InvenTree/models.py:345
msgid "Description (optional)"
msgstr ""
-#: InvenTree/models.py:349
+#: InvenTree/models.py:353
msgid "parent"
msgstr ""
-#: InvenTree/serializers.py:52 part/models.py:2652
+#: InvenTree/models.py:466
+msgid "Server Error"
+msgstr ""
+
+#: InvenTree/models.py:467
+msgid "An error has been logged by the server."
+msgstr ""
+
+#: InvenTree/serializers.py:52 part/models.py:2640
msgid "Must be a valid number"
msgstr ""
-#: InvenTree/serializers.py:271
+#: InvenTree/serializers.py:263
msgid "Filename"
msgstr ""
-#: InvenTree/serializers.py:306
+#: InvenTree/serializers.py:298
msgid "Invalid value"
msgstr ""
-#: InvenTree/serializers.py:328
+#: InvenTree/serializers.py:320
msgid "Data File"
msgstr ""
-#: InvenTree/serializers.py:329
+#: InvenTree/serializers.py:321
msgid "Select data file for upload"
msgstr ""
-#: InvenTree/serializers.py:350
+#: InvenTree/serializers.py:342
msgid "Unsupported file type"
msgstr ""
-#: InvenTree/serializers.py:356
+#: InvenTree/serializers.py:348
msgid "File is too large"
msgstr ""
-#: InvenTree/serializers.py:377
+#: InvenTree/serializers.py:369
msgid "No columns found in file"
msgstr ""
-#: InvenTree/serializers.py:380
+#: InvenTree/serializers.py:372
msgid "No data rows found in file"
msgstr ""
-#: InvenTree/serializers.py:503
+#: InvenTree/serializers.py:495
msgid "No data rows provided"
msgstr ""
-#: InvenTree/serializers.py:506
+#: InvenTree/serializers.py:498
msgid "No data columns supplied"
msgstr ""
-#: InvenTree/serializers.py:583
+#: InvenTree/serializers.py:575
#, python-brace-format
msgid "Missing required column: '{name}'"
msgstr ""
-#: InvenTree/serializers.py:592
+#: InvenTree/serializers.py:584
#, python-brace-format
msgid "Duplicate column: '{col}'"
msgstr ""
@@ -440,7 +438,7 @@ msgstr ""
msgid "Returned"
msgstr ""
-#: InvenTree/status_codes.py:141 order/models.py:1114
+#: InvenTree/status_codes.py:141 order/models.py:1130
#: templates/js/translated/order.js:3264 templates/js/translated/order.js:3607
msgid "Shipped"
msgstr ""
@@ -525,7 +523,7 @@ msgstr ""
msgid "Split child item"
msgstr ""
-#: InvenTree/status_codes.py:281 templates/js/translated/stock.js:2020
+#: InvenTree/status_codes.py:281 templates/js/translated/stock.js:2030
msgid "Merged stock items"
msgstr ""
@@ -597,27 +595,27 @@ msgstr ""
msgid "Invalid value for overage"
msgstr ""
-#: InvenTree/views.py:522
+#: InvenTree/views.py:521
msgid "Delete Item"
msgstr ""
-#: InvenTree/views.py:571
+#: InvenTree/views.py:570
msgid "Check box to confirm item deletion"
msgstr ""
-#: InvenTree/views.py:586 templates/InvenTree/settings/user.html:22
+#: InvenTree/views.py:585 templates/InvenTree/settings/user.html:22
msgid "Edit User Information"
msgstr ""
-#: InvenTree/views.py:598 templates/InvenTree/settings/user.html:19
+#: InvenTree/views.py:597 templates/InvenTree/settings/user.html:19
msgid "Set Password"
msgstr ""
-#: InvenTree/views.py:618
+#: InvenTree/views.py:617
msgid "Password fields must match"
msgstr ""
-#: InvenTree/views.py:842 templates/navbar.html:152
+#: InvenTree/views.py:807 templates/navbar.html:152
msgid "System Information"
msgstr ""
@@ -628,6 +626,7 @@ msgstr ""
#: build/models.py:131 build/templates/build/build_base.html:9
#: build/templates/build/build_base.html:27
#: report/templates/report/inventree_build_order_base.html:106
+#: templates/email/overdue_build_order.html:15
#: templates/js/translated/build.js:727
msgid "Build Order"
msgstr ""
@@ -646,12 +645,12 @@ msgstr ""
msgid "Build Order Reference"
msgstr ""
-#: build/models.py:189 order/models.py:288 order/models.py:638
-#: order/models.py:916 part/models.py:2570
+#: build/models.py:189 order/models.py:293 order/models.py:654
+#: order/models.py:932 part/models.py:2558
#: part/templates/part/upload_bom.html:54
#: report/templates/report/inventree_po_report.html:91
#: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:688 templates/js/translated/bom.js:858
+#: templates/js/translated/bom.js:690 templates/js/translated/bom.js:852
#: templates/js/translated/build.js:1777 templates/js/translated/order.js:1919
#: templates/js/translated/order.js:2120 templates/js/translated/order.js:3448
#: templates/js/translated/order.js:3959
@@ -673,13 +672,12 @@ msgstr ""
#: build/models.py:215 build/templates/build/build_base.html:77
#: build/templates/build/detail.html:29 company/models.py:647
-#: order/models.py:1012 order/models.py:1103 part/models.py:336
-#: part/models.py:2099 part/models.py:2114 part/models.py:2133
-#: part/models.py:2151 part/models.py:2250 part/models.py:2370
-#: part/models.py:2460 part/models.py:2545 part/models.py:2821
-#: part/serializers.py:793 part/templates/part/part_app_base.html:8
+#: order/models.py:1028 order/models.py:1119 part/models.py:336
+#: part/models.py:2087 part/models.py:2102 part/models.py:2121
+#: part/models.py:2139 part/models.py:2238 part/models.py:2358
+#: part/models.py:2448 part/models.py:2533 part/models.py:2809
+#: part/serializers.py:795 part/templates/part/part_app_base.html:8
#: part/templates/part/part_pricing.html:12
-#: part/templates/part/set_category.html:13
#: part/templates/part/upload_bom.html:52
#: report/templates/report/inventree_build_order_base.html:110
#: report/templates/report/inventree_po_report.html:89
@@ -687,22 +685,23 @@ msgstr ""
#: templates/InvenTree/search.html:80
#: templates/email/build_order_required_stock.html:17
#: templates/email/low_stock_notification.html:16
+#: templates/email/overdue_build_order.html:16
#: templates/js/translated/barcode.js:435 templates/js/translated/bom.js:552
-#: templates/js/translated/bom.js:687 templates/js/translated/bom.js:805
+#: templates/js/translated/bom.js:689 templates/js/translated/bom.js:799
#: templates/js/translated/build.js:1153 templates/js/translated/build.js:1647
#: templates/js/translated/build.js:2083 templates/js/translated/build.js:2481
-#: templates/js/translated/company.js:252
-#: templates/js/translated/company.js:486
-#: templates/js/translated/company.js:607
-#: templates/js/translated/company.js:866 templates/js/translated/order.js:100
+#: templates/js/translated/company.js:253
+#: templates/js/translated/company.js:482
+#: templates/js/translated/company.js:592
+#: templates/js/translated/company.js:851 templates/js/translated/order.js:100
#: templates/js/translated/order.js:883 templates/js/translated/order.js:1315
#: templates/js/translated/order.js:1873 templates/js/translated/order.js:2819
#: templates/js/translated/order.js:3217 templates/js/translated/order.js:3432
-#: templates/js/translated/part.js:1067 templates/js/translated/part.js:1137
-#: templates/js/translated/part.js:1333 templates/js/translated/stock.js:531
-#: templates/js/translated/stock.js:696 templates/js/translated/stock.js:903
-#: templates/js/translated/stock.js:1633 templates/js/translated/stock.js:2376
-#: templates/js/translated/stock.js:2571 templates/js/translated/stock.js:2705
+#: templates/js/translated/part.js:1111 templates/js/translated/part.js:1181
+#: templates/js/translated/part.js:1377 templates/js/translated/stock.js:530
+#: templates/js/translated/stock.js:695 templates/js/translated/stock.js:902
+#: templates/js/translated/stock.js:1643 templates/js/translated/stock.js:2386
+#: templates/js/translated/stock.js:2581 templates/js/translated/stock.js:2715
msgid "Part"
msgstr ""
@@ -768,12 +767,12 @@ msgstr ""
msgid "Batch code for this build output"
msgstr ""
-#: build/models.py:282 order/models.py:137 part/models.py:932
+#: build/models.py:282 order/models.py:138 part/models.py:932
#: part/templates/part/part_base.html:305 templates/js/translated/order.js:2489
msgid "Creation Date"
msgstr ""
-#: build/models.py:286 order/models.py:660
+#: build/models.py:286 order/models.py:676
msgid "Target completion date"
msgstr ""
@@ -781,7 +780,7 @@ msgstr ""
msgid "Target date for build completion. Build will be overdue after this date."
msgstr ""
-#: build/models.py:290 order/models.py:331
+#: build/models.py:290 order/models.py:336
#: templates/js/translated/build.js:2558
msgid "Completion Date"
msgstr ""
@@ -799,7 +798,7 @@ msgid "User who issued this build order"
msgstr ""
#: build/models.py:313 build/templates/build/build_base.html:190
-#: build/templates/build/detail.html:115 order/models.py:151
+#: build/templates/build/detail.html:115 order/models.py:152
#: order/templates/order/order_base.html:176
#: order/templates/order/sales_order_base.html:183 part/models.py:936
#: report/templates/report/inventree_build_order_base.html:159
@@ -822,20 +821,20 @@ msgstr ""
#: build/models.py:324 build/serializers.py:374
#: build/templates/build/sidebar.html:21 company/models.py:134
#: company/models.py:519 company/templates/company/sidebar.html:25
-#: order/models.py:155 order/models.py:918 order/models.py:1213
+#: order/models.py:156 order/models.py:934 order/models.py:1229
#: order/templates/order/po_sidebar.html:11
#: order/templates/order/so_sidebar.html:17 part/models.py:921
#: part/templates/part/part_sidebar.html:59
#: report/templates/report/inventree_build_order_base.html:173
-#: stock/models.py:713 stock/models.py:1985 stock/models.py:2093
+#: stock/models.py:713 stock/models.py:1989 stock/models.py:2097
#: stock/serializers.py:315 stock/serializers.py:444 stock/serializers.py:486
-#: stock/serializers.py:772 stock/serializers.py:871 stock/serializers.py:1003
+#: stock/serializers.py:759 stock/serializers.py:858 stock/serializers.py:990
#: stock/templates/stock/stock_sidebar.html:25
-#: templates/js/translated/barcode.js:100 templates/js/translated/bom.js:1044
-#: templates/js/translated/company.js:962 templates/js/translated/order.js:2040
+#: templates/js/translated/barcode.js:100 templates/js/translated/bom.js:1038
+#: templates/js/translated/company.js:947 templates/js/translated/order.js:2040
#: templates/js/translated/order.js:2191 templates/js/translated/order.js:2687
#: templates/js/translated/order.js:3632 templates/js/translated/order.js:4030
-#: templates/js/translated/stock.js:1307 templates/js/translated/stock.js:1916
+#: templates/js/translated/stock.js:1317 templates/js/translated/stock.js:1926
msgid "Notes"
msgstr ""
@@ -855,44 +854,44 @@ msgstr ""
msgid "Build output does not match Build Order"
msgstr ""
-#: build/models.py:1108
+#: build/models.py:1111
msgid "Build item must specify a build output, as master part is marked as trackable"
msgstr ""
-#: build/models.py:1117
+#: build/models.py:1120
#, python-brace-format
msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})"
msgstr ""
-#: build/models.py:1127
+#: build/models.py:1130
msgid "Stock item is over-allocated"
msgstr ""
-#: build/models.py:1133 order/models.py:1372
+#: build/models.py:1136 order/models.py:1388
msgid "Allocation quantity must be greater than zero"
msgstr ""
-#: build/models.py:1139
+#: build/models.py:1142
msgid "Quantity must be 1 for serialized stock"
msgstr ""
-#: build/models.py:1196
+#: build/models.py:1199
msgid "Selected stock item not found in BOM"
msgstr ""
-#: build/models.py:1265 stock/templates/stock/item_base.html:177
+#: build/models.py:1268 stock/templates/stock/item_base.html:177
#: templates/InvenTree/search.html:137 templates/js/translated/build.js:2454
#: templates/navbar.html:38
msgid "Build"
msgstr ""
-#: build/models.py:1266
+#: build/models.py:1269
msgid "Build to allocate parts"
msgstr ""
-#: build/models.py:1282 build/serializers.py:603 order/serializers.py:994
-#: order/serializers.py:1015 stock/serializers.py:382 stock/serializers.py:703
-#: stock/serializers.py:829 stock/templates/stock/item_base.html:10
+#: build/models.py:1285 build/serializers.py:603 order/serializers.py:996
+#: order/serializers.py:1017 stock/serializers.py:382 stock/serializers.py:690
+#: stock/serializers.py:816 stock/templates/stock/item_base.html:10
#: stock/templates/stock/item_base.html:23
#: stock/templates/stock/item_base.html:199
#: templates/js/translated/build.js:738 templates/js/translated/build.js:743
@@ -900,22 +899,22 @@ msgstr ""
#: templates/js/translated/order.js:101 templates/js/translated/order.js:2820
#: templates/js/translated/order.js:3124 templates/js/translated/order.js:3129
#: templates/js/translated/order.js:3224 templates/js/translated/order.js:3314
-#: templates/js/translated/stock.js:532 templates/js/translated/stock.js:697
-#: templates/js/translated/stock.js:2449
+#: templates/js/translated/stock.js:531 templates/js/translated/stock.js:696
+#: templates/js/translated/stock.js:2459
msgid "Stock Item"
msgstr ""
-#: build/models.py:1283
+#: build/models.py:1286
msgid "Source stock item"
msgstr ""
-#: build/models.py:1295 build/serializers.py:183
+#: build/models.py:1298 build/serializers.py:183
#: build/templates/build/build_base.html:82
-#: build/templates/build/detail.html:34 common/models.py:1536
+#: build/templates/build/detail.html:34 common/models.py:1543
#: company/forms.py:36 company/templates/company/supplier_part.html:258
-#: order/models.py:909 order/models.py:1412 order/serializers.py:1134
-#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:68
-#: part/forms.py:83 part/forms.py:98 part/models.py:2561
+#: order/models.py:925 order/models.py:1428 order/serializers.py:1136
+#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:59
+#: part/forms.py:74 part/forms.py:89 part/models.py:2549
#: part/templates/part/detail.html:935 part/templates/part/detail.html:1021
#: part/templates/part/part_pricing.html:16
#: part/templates/part/upload_bom.html:53
@@ -926,8 +925,8 @@ msgstr ""
#: report/templates/report/inventree_test_report_base.html:139
#: stock/serializers.py:279 stock/templates/stock/item_base.html:292
#: stock/templates/stock/item_base.html:300
-#: templates/js/translated/barcode.js:437 templates/js/translated/bom.js:689
-#: templates/js/translated/bom.js:866 templates/js/translated/build.js:422
+#: templates/js/translated/barcode.js:437 templates/js/translated/bom.js:691
+#: templates/js/translated/bom.js:860 templates/js/translated/build.js:422
#: templates/js/translated/build.js:574 templates/js/translated/build.js:765
#: templates/js/translated/build.js:1175 templates/js/translated/build.js:1673
#: templates/js/translated/build.js:2086
@@ -937,23 +936,23 @@ msgstr ""
#: templates/js/translated/order.js:2821 templates/js/translated/order.js:3143
#: templates/js/translated/order.js:3231 templates/js/translated/order.js:3320
#: templates/js/translated/order.js:3454 templates/js/translated/order.js:3965
-#: templates/js/translated/part.js:967 templates/js/translated/part.js:1969
-#: templates/js/translated/part.js:2200 templates/js/translated/part.js:2234
-#: templates/js/translated/part.js:2312 templates/js/translated/stock.js:403
-#: templates/js/translated/stock.js:557 templates/js/translated/stock.js:727
-#: templates/js/translated/stock.js:2498 templates/js/translated/stock.js:2583
+#: templates/js/translated/part.js:1011 templates/js/translated/part.js:2065
+#: templates/js/translated/part.js:2296 templates/js/translated/part.js:2330
+#: templates/js/translated/part.js:2408 templates/js/translated/stock.js:402
+#: templates/js/translated/stock.js:556 templates/js/translated/stock.js:726
+#: templates/js/translated/stock.js:2508 templates/js/translated/stock.js:2593
msgid "Quantity"
msgstr ""
-#: build/models.py:1296
+#: build/models.py:1299
msgid "Stock quantity to allocate to build"
msgstr ""
-#: build/models.py:1304
+#: build/models.py:1307
msgid "Install into"
msgstr ""
-#: build/models.py:1305
+#: build/models.py:1308
msgid "Destination stock item"
msgstr ""
@@ -982,9 +981,9 @@ msgstr ""
msgid "Enter quantity for build output"
msgstr ""
-#: build/serializers.py:198 build/serializers.py:623 order/models.py:363
-#: order/serializers.py:280 order/serializers.py:435 part/serializers.py:512
-#: part/serializers.py:956 stock/models.py:470 stock/models.py:1239
+#: build/serializers.py:198 build/serializers.py:623 order/models.py:368
+#: order/serializers.py:280 order/serializers.py:435 part/serializers.py:514
+#: part/serializers.py:958 stock/models.py:470 stock/models.py:1239
#: stock/serializers.py:288
msgid "Quantity must be greater than zero"
msgstr ""
@@ -997,9 +996,9 @@ msgstr ""
msgid "Integer quantity required, as the bill of materials contains trackable parts"
msgstr ""
-#: build/serializers.py:222 order/serializers.py:448 order/serializers.py:1138
+#: build/serializers.py:222 order/serializers.py:448 order/serializers.py:1140
#: stock/serializers.py:297 templates/js/translated/order.js:1186
-#: templates/js/translated/stock.js:238 templates/js/translated/stock.js:404
+#: templates/js/translated/stock.js:237 templates/js/translated/stock.js:403
msgid "Serial Numbers"
msgstr ""
@@ -1015,7 +1014,7 @@ msgstr ""
msgid "Automatically allocate required items with matching serial numbers"
msgstr ""
-#: build/serializers.py:268 stock/api.py:552
+#: build/serializers.py:268 stock/api.py:553
msgid "The following serial numbers already exist"
msgstr ""
@@ -1025,16 +1024,16 @@ msgstr ""
#: build/serializers.py:356 order/serializers.py:421 order/serializers.py:525
#: stock/serializers.py:308 stock/serializers.py:439 stock/serializers.py:481
-#: stock/serializers.py:864 stock/serializers.py:1097
+#: stock/serializers.py:851 stock/serializers.py:1084
#: stock/templates/stock/item_base.html:390
#: templates/js/translated/barcode.js:436
#: templates/js/translated/barcode.js:618 templates/js/translated/build.js:750
#: templates/js/translated/build.js:1685 templates/js/translated/order.js:1213
#: templates/js/translated/order.js:3136 templates/js/translated/order.js:3239
#: templates/js/translated/order.js:3247 templates/js/translated/order.js:3328
-#: templates/js/translated/part.js:180 templates/js/translated/stock.js:533
-#: templates/js/translated/stock.js:698 templates/js/translated/stock.js:905
-#: templates/js/translated/stock.js:1787 templates/js/translated/stock.js:2390
+#: templates/js/translated/part.js:180 templates/js/translated/stock.js:532
+#: templates/js/translated/stock.js:697 templates/js/translated/stock.js:904
+#: templates/js/translated/stock.js:1797 templates/js/translated/stock.js:2400
msgid "Location"
msgstr ""
@@ -1043,12 +1042,12 @@ msgid "Location for completed build outputs"
msgstr ""
#: build/serializers.py:363 build/templates/build/build_base.html:142
-#: build/templates/build/detail.html:62 order/models.py:654
+#: build/templates/build/detail.html:62 order/models.py:670
#: order/serializers.py:458 stock/templates/stock/item_base.html:423
#: templates/js/translated/barcode.js:182 templates/js/translated/build.js:2510
#: templates/js/translated/order.js:1320 templates/js/translated/order.js:1660
-#: templates/js/translated/order.js:2481 templates/js/translated/stock.js:1762
-#: templates/js/translated/stock.js:2467 templates/js/translated/stock.js:2599
+#: templates/js/translated/order.js:2481 templates/js/translated/stock.js:1772
+#: templates/js/translated/stock.js:2477 templates/js/translated/stock.js:2609
msgid "Status"
msgstr ""
@@ -1108,8 +1107,8 @@ msgstr ""
msgid "No build outputs have been created for this build order"
msgstr ""
-#: build/serializers.py:535 build/serializers.py:580 part/models.py:2679
-#: part/models.py:2813
+#: build/serializers.py:535 build/serializers.py:580 part/models.py:2667
+#: part/models.py:2801
msgid "BOM Item"
msgstr ""
@@ -1125,11 +1124,11 @@ msgstr ""
msgid "bom_item.part must point to the same part as the build order"
msgstr ""
-#: build/serializers.py:609 stock/serializers.py:716
+#: build/serializers.py:609 stock/serializers.py:703
msgid "Item must be in stock"
msgstr ""
-#: build/serializers.py:667 order/serializers.py:1052
+#: build/serializers.py:667 order/serializers.py:1054
#, python-brace-format
msgid "Available quantity ({q}) exceeded"
msgstr ""
@@ -1146,7 +1145,7 @@ msgstr ""
msgid "This stock item has already been allocated to this build output"
msgstr ""
-#: build/serializers.py:708 order/serializers.py:1298
+#: build/serializers.py:708 order/serializers.py:1300
msgid "Allocation items must be provided"
msgstr ""
@@ -1178,10 +1177,19 @@ msgstr ""
msgid "Allow allocation of substitute parts"
msgstr ""
-#: build/tasks.py:96
+#: build/tasks.py:100
msgid "Stock required for build order"
msgstr ""
+#: build/tasks.py:118
+msgid "Overdue Build Order"
+msgstr ""
+
+#: build/tasks.py:123
+#, python-brace-format
+msgid "Build order {bo} is now overdue"
+msgstr ""
+
#: build/templates/build/build_base.html:39
#: order/templates/order/order_base.html:28
#: order/templates/order/sales_order_base.html:38
@@ -1244,13 +1252,13 @@ msgid "Stock has not been fully allocated to this Build Order"
msgstr ""
#: build/templates/build/build_base.html:151
-#: build/templates/build/detail.html:131 order/models.py:922
+#: build/templates/build/detail.html:131 order/models.py:938
#: order/templates/order/order_base.html:162
#: order/templates/order/sales_order_base.html:164
#: report/templates/report/inventree_build_order_base.html:126
#: templates/js/translated/build.js:2550 templates/js/translated/order.js:1677
#: templates/js/translated/order.js:1987 templates/js/translated/order.js:2497
-#: templates/js/translated/order.js:3517 templates/js/translated/part.js:971
+#: templates/js/translated/order.js:3517 templates/js/translated/part.js:1015
msgid "Target Date"
msgstr ""
@@ -1277,13 +1285,14 @@ msgid "Completed"
msgstr ""
#: build/templates/build/build_base.html:176
-#: build/templates/build/detail.html:94 order/models.py:1100
-#: order/models.py:1185 order/models.py:1320
+#: build/templates/build/detail.html:94 order/models.py:1116
+#: order/models.py:1201 order/models.py:1336
#: order/templates/order/sales_order_base.html:9
#: order/templates/order/sales_order_base.html:28
#: report/templates/report/inventree_build_order_base.html:136
#: report/templates/report/inventree_so_report.html:77
#: stock/templates/stock/item_base.html:370
+#: templates/email/overdue_sales_order.html:15
#: templates/js/translated/order.js:2436
msgid "Sales Order"
msgstr ""
@@ -1319,7 +1328,7 @@ msgstr ""
msgid "Stock can be taken from any available location."
msgstr ""
-#: build/templates/build/detail.html:49 order/models.py:1034
+#: build/templates/build/detail.html:49 order/models.py:1050
#: templates/js/translated/order.js:1321 templates/js/translated/order.js:2029
msgid "Destination"
msgstr ""
@@ -1336,8 +1345,8 @@ msgstr ""
#: stock/templates/stock/item_base.html:170
#: templates/js/translated/build.js:1179
#: templates/js/translated/model_renderers.js:112
-#: templates/js/translated/stock.js:971 templates/js/translated/stock.js:1776
-#: templates/js/translated/stock.js:2606
+#: templates/js/translated/stock.js:970 templates/js/translated/stock.js:1786
+#: templates/js/translated/stock.js:2616
#: templates/js/translated/table_filters.js:151
#: templates/js/translated/table_filters.js:242
msgid "Batch"
@@ -1716,7 +1725,7 @@ msgstr ""
msgid "Copy category parameter templates when creating a part"
msgstr ""
-#: common/models.py:820 part/models.py:2372 report/models.py:157
+#: common/models.py:820 part/models.py:2360 report/models.py:157
#: templates/js/translated/table_filters.js:38
#: templates/js/translated/table_filters.js:444
msgid "Template"
@@ -1726,7 +1735,7 @@ msgstr ""
msgid "Parts are templates by default"
msgstr ""
-#: common/models.py:827 part/models.py:884 templates/js/translated/bom.js:1390
+#: common/models.py:827 part/models.py:884 templates/js/translated/bom.js:1384
#: templates/js/translated/table_filters.js:168
#: templates/js/translated/table_filters.js:460
msgid "Assembly"
@@ -1880,7 +1889,7 @@ msgid "Default page size for PDF reports"
msgstr ""
#: common/models.py:968
-msgid "Test Reports"
+msgid "Enable Test Reports"
msgstr ""
#: common/models.py:969
@@ -1888,568 +1897,576 @@ msgid "Enable generation of test reports"
msgstr ""
#: common/models.py:975
-msgid "Batch Code Template"
+msgid "Attach Test Reports"
msgstr ""
#: common/models.py:976
-msgid "Template for generating default batch codes for stock items"
-msgstr ""
-
-#: common/models.py:981
-msgid "Stock Expiry"
+msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item"
msgstr ""
#: common/models.py:982
-msgid "Enable stock expiry functionality"
+msgid "Batch Code Template"
+msgstr ""
+
+#: common/models.py:983
+msgid "Template for generating default batch codes for stock items"
msgstr ""
#: common/models.py:988
-msgid "Sell Expired Stock"
+msgid "Stock Expiry"
msgstr ""
#: common/models.py:989
-msgid "Allow sale of expired stock"
+msgid "Enable stock expiry functionality"
msgstr ""
#: common/models.py:995
-msgid "Stock Stale Time"
+msgid "Sell Expired Stock"
msgstr ""
#: common/models.py:996
-msgid "Number of days stock items are considered stale before expiring"
+msgid "Allow sale of expired stock"
msgstr ""
-#: common/models.py:998
-msgid "days"
+#: common/models.py:1002
+msgid "Stock Stale Time"
msgstr ""
#: common/models.py:1003
-msgid "Build Expired Stock"
+msgid "Number of days stock items are considered stale before expiring"
msgstr ""
-#: common/models.py:1004
-msgid "Allow building with expired stock"
+#: common/models.py:1005
+msgid "days"
msgstr ""
#: common/models.py:1010
-msgid "Stock Ownership Control"
+msgid "Build Expired Stock"
msgstr ""
#: common/models.py:1011
-msgid "Enable ownership control over stock locations and items"
+msgid "Allow building with expired stock"
msgstr ""
#: common/models.py:1017
-msgid "Build Order Reference Prefix"
+msgid "Stock Ownership Control"
msgstr ""
#: common/models.py:1018
-msgid "Prefix value for build order reference"
-msgstr ""
-
-#: common/models.py:1023
-msgid "Build Order Reference Regex"
+msgid "Enable ownership control over stock locations and items"
msgstr ""
#: common/models.py:1024
+msgid "Build Order Reference Prefix"
+msgstr ""
+
+#: common/models.py:1025
+msgid "Prefix value for build order reference"
+msgstr ""
+
+#: common/models.py:1030
+msgid "Build Order Reference Regex"
+msgstr ""
+
+#: common/models.py:1031
msgid "Regular expression pattern for matching build order reference"
msgstr ""
-#: common/models.py:1028
+#: common/models.py:1035
msgid "Sales Order Reference Prefix"
msgstr ""
-#: common/models.py:1029
+#: common/models.py:1036
msgid "Prefix value for sales order reference"
msgstr ""
-#: common/models.py:1034
+#: common/models.py:1041
msgid "Sales Order Default Shipment"
msgstr ""
-#: common/models.py:1035
+#: common/models.py:1042
msgid "Enable creation of default shipment with sales orders"
msgstr ""
-#: common/models.py:1041
+#: common/models.py:1048
msgid "Purchase Order Reference Prefix"
msgstr ""
-#: common/models.py:1042
+#: common/models.py:1049
msgid "Prefix value for purchase order reference"
msgstr ""
-#: common/models.py:1048
+#: common/models.py:1055
msgid "Enable password forgot"
msgstr ""
-#: common/models.py:1049
+#: common/models.py:1056
msgid "Enable password forgot function on the login pages"
msgstr ""
-#: common/models.py:1055
+#: common/models.py:1062
msgid "Enable registration"
msgstr ""
-#: common/models.py:1056
+#: common/models.py:1063
msgid "Enable self-registration for users on the login pages"
msgstr ""
-#: common/models.py:1062
+#: common/models.py:1069
msgid "Enable SSO"
msgstr ""
-#: common/models.py:1063
+#: common/models.py:1070
msgid "Enable SSO on the login pages"
msgstr ""
-#: common/models.py:1069
+#: common/models.py:1076
msgid "Email required"
msgstr ""
-#: common/models.py:1070
+#: common/models.py:1077
msgid "Require user to supply mail on signup"
msgstr ""
-#: common/models.py:1076
+#: common/models.py:1083
msgid "Auto-fill SSO users"
msgstr ""
-#: common/models.py:1077
+#: common/models.py:1084
msgid "Automatically fill out user-details from SSO account-data"
msgstr ""
-#: common/models.py:1083
+#: common/models.py:1090
msgid "Mail twice"
msgstr ""
-#: common/models.py:1084
+#: common/models.py:1091
msgid "On signup ask users twice for their mail"
msgstr ""
-#: common/models.py:1090
+#: common/models.py:1097
msgid "Password twice"
msgstr ""
-#: common/models.py:1091
+#: common/models.py:1098
msgid "On signup ask users twice for their password"
msgstr ""
-#: common/models.py:1097
+#: common/models.py:1104
msgid "Group on signup"
msgstr ""
-#: common/models.py:1098
+#: common/models.py:1105
msgid "Group to which new users are assigned on registration"
msgstr ""
-#: common/models.py:1104
+#: common/models.py:1111
msgid "Enforce MFA"
msgstr ""
-#: common/models.py:1105
+#: common/models.py:1112
msgid "Users must use multifactor security."
msgstr ""
-#: common/models.py:1111
+#: common/models.py:1118
msgid "Check plugins on startup"
msgstr ""
-#: common/models.py:1112
+#: common/models.py:1119
msgid "Check that all plugins are installed on startup - enable in container enviroments"
msgstr ""
-#: common/models.py:1120
+#: common/models.py:1127
msgid "Enable URL integration"
msgstr ""
-#: common/models.py:1121
+#: common/models.py:1128
msgid "Enable plugins to add URL routes"
msgstr ""
-#: common/models.py:1128
+#: common/models.py:1135
msgid "Enable navigation integration"
msgstr ""
-#: common/models.py:1129
+#: common/models.py:1136
msgid "Enable plugins to integrate into navigation"
msgstr ""
-#: common/models.py:1136
+#: common/models.py:1143
msgid "Enable app integration"
msgstr ""
-#: common/models.py:1137
+#: common/models.py:1144
msgid "Enable plugins to add apps"
msgstr ""
-#: common/models.py:1144
+#: common/models.py:1151
msgid "Enable schedule integration"
msgstr ""
-#: common/models.py:1145
+#: common/models.py:1152
msgid "Enable plugins to run scheduled tasks"
msgstr ""
-#: common/models.py:1152
+#: common/models.py:1159
msgid "Enable event integration"
msgstr ""
-#: common/models.py:1153
+#: common/models.py:1160
msgid "Enable plugins to respond to internal events"
msgstr ""
-#: common/models.py:1170 common/models.py:1492
+#: common/models.py:1177 common/models.py:1499
msgid "Settings key (must be unique - case insensitive"
msgstr ""
-#: common/models.py:1192
+#: common/models.py:1199
msgid "Show subscribed parts"
msgstr ""
-#: common/models.py:1193
+#: common/models.py:1200
msgid "Show subscribed parts on the homepage"
msgstr ""
-#: common/models.py:1199
+#: common/models.py:1206
msgid "Show subscribed categories"
msgstr ""
-#: common/models.py:1200
+#: common/models.py:1207
msgid "Show subscribed part categories on the homepage"
msgstr ""
-#: common/models.py:1206
+#: common/models.py:1213
msgid "Show latest parts"
msgstr ""
-#: common/models.py:1207
+#: common/models.py:1214
msgid "Show latest parts on the homepage"
msgstr ""
-#: common/models.py:1213
+#: common/models.py:1220
msgid "Recent Part Count"
msgstr ""
-#: common/models.py:1214
+#: common/models.py:1221
msgid "Number of recent parts to display on index page"
msgstr ""
-#: common/models.py:1220
+#: common/models.py:1227
msgid "Show unvalidated BOMs"
msgstr ""
-#: common/models.py:1221
+#: common/models.py:1228
msgid "Show BOMs that await validation on the homepage"
msgstr ""
-#: common/models.py:1227
+#: common/models.py:1234
msgid "Show recent stock changes"
msgstr ""
-#: common/models.py:1228
+#: common/models.py:1235
msgid "Show recently changed stock items on the homepage"
msgstr ""
-#: common/models.py:1234
+#: common/models.py:1241
msgid "Recent Stock Count"
msgstr ""
-#: common/models.py:1235
+#: common/models.py:1242
msgid "Number of recent stock items to display on index page"
msgstr ""
-#: common/models.py:1241
+#: common/models.py:1248
msgid "Show low stock"
msgstr ""
-#: common/models.py:1242
+#: common/models.py:1249
msgid "Show low stock items on the homepage"
msgstr ""
-#: common/models.py:1248
+#: common/models.py:1255
msgid "Show depleted stock"
msgstr ""
-#: common/models.py:1249
+#: common/models.py:1256
msgid "Show depleted stock items on the homepage"
msgstr ""
-#: common/models.py:1255
+#: common/models.py:1262
msgid "Show needed stock"
msgstr ""
-#: common/models.py:1256
+#: common/models.py:1263
msgid "Show stock items needed for builds on the homepage"
msgstr ""
-#: common/models.py:1262
+#: common/models.py:1269
msgid "Show expired stock"
msgstr ""
-#: common/models.py:1263
+#: common/models.py:1270
msgid "Show expired stock items on the homepage"
msgstr ""
-#: common/models.py:1269
+#: common/models.py:1276
msgid "Show stale stock"
msgstr ""
-#: common/models.py:1270
+#: common/models.py:1277
msgid "Show stale stock items on the homepage"
msgstr ""
-#: common/models.py:1276
+#: common/models.py:1283
msgid "Show pending builds"
msgstr ""
-#: common/models.py:1277
+#: common/models.py:1284
msgid "Show pending builds on the homepage"
msgstr ""
-#: common/models.py:1283
+#: common/models.py:1290
msgid "Show overdue builds"
msgstr ""
-#: common/models.py:1284
+#: common/models.py:1291
msgid "Show overdue builds on the homepage"
msgstr ""
-#: common/models.py:1290
+#: common/models.py:1297
msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:1291
+#: common/models.py:1298
msgid "Show outstanding POs on the homepage"
msgstr ""
-#: common/models.py:1297
+#: common/models.py:1304
msgid "Show overdue POs"
msgstr ""
-#: common/models.py:1298
+#: common/models.py:1305
msgid "Show overdue POs on the homepage"
msgstr ""
-#: common/models.py:1304
+#: common/models.py:1311
msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:1305
+#: common/models.py:1312
msgid "Show outstanding SOs on the homepage"
msgstr ""
-#: common/models.py:1311
+#: common/models.py:1318
msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:1312
+#: common/models.py:1319
msgid "Show overdue SOs on the homepage"
msgstr ""
-#: common/models.py:1317
+#: common/models.py:1324
msgid "Enable label printing"
msgstr ""
-#: common/models.py:1318
+#: common/models.py:1325
msgid "Enable label printing from the web interface"
msgstr ""
-#: common/models.py:1324
+#: common/models.py:1331
msgid "Inline label display"
msgstr ""
-#: common/models.py:1325
+#: common/models.py:1332
msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:1331
+#: common/models.py:1338
msgid "Inline report display"
msgstr ""
-#: common/models.py:1332
+#: common/models.py:1339
msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:1338
+#: common/models.py:1345
msgid "Search Parts"
msgstr ""
-#: common/models.py:1339
+#: common/models.py:1346
msgid "Display parts in search preview window"
msgstr ""
-#: common/models.py:1345
+#: common/models.py:1352
msgid "Seach Supplier Parts"
msgstr ""
-#: common/models.py:1346
+#: common/models.py:1353
msgid "Display supplier parts in search preview window"
msgstr ""
-#: common/models.py:1352
+#: common/models.py:1359
msgid "Search Manufacturer Parts"
msgstr ""
-#: common/models.py:1353
+#: common/models.py:1360
msgid "Display manufacturer parts in search preview window"
msgstr ""
-#: common/models.py:1359
+#: common/models.py:1366
msgid "Hide Inactive Parts"
msgstr ""
-#: common/models.py:1360
+#: common/models.py:1367
msgid "Excluded inactive parts from search preview window"
msgstr ""
-#: common/models.py:1366
+#: common/models.py:1373
msgid "Search Categories"
msgstr ""
-#: common/models.py:1367
+#: common/models.py:1374
msgid "Display part categories in search preview window"
msgstr ""
-#: common/models.py:1373
+#: common/models.py:1380
msgid "Search Stock"
msgstr ""
-#: common/models.py:1374
+#: common/models.py:1381
msgid "Display stock items in search preview window"
msgstr ""
-#: common/models.py:1380
+#: common/models.py:1387
msgid "Hide Unavailable Stock Items"
msgstr ""
-#: common/models.py:1381
+#: common/models.py:1388
msgid "Exclude stock items which are not available from the search preview window"
msgstr ""
-#: common/models.py:1387
+#: common/models.py:1394
msgid "Search Locations"
msgstr ""
-#: common/models.py:1388
+#: common/models.py:1395
msgid "Display stock locations in search preview window"
msgstr ""
-#: common/models.py:1394
+#: common/models.py:1401
msgid "Search Companies"
msgstr ""
-#: common/models.py:1395
+#: common/models.py:1402
msgid "Display companies in search preview window"
msgstr ""
-#: common/models.py:1401
+#: common/models.py:1408
msgid "Search Purchase Orders"
msgstr ""
-#: common/models.py:1402
+#: common/models.py:1409
msgid "Display purchase orders in search preview window"
msgstr ""
-#: common/models.py:1408
+#: common/models.py:1415
msgid "Exclude Inactive Purchase Orders"
msgstr ""
-#: common/models.py:1409
+#: common/models.py:1416
msgid "Exclude inactive purchase orders from search preview window"
msgstr ""
-#: common/models.py:1415
+#: common/models.py:1422
msgid "Search Sales Orders"
msgstr ""
-#: common/models.py:1416
+#: common/models.py:1423
msgid "Display sales orders in search preview window"
msgstr ""
-#: common/models.py:1422
+#: common/models.py:1429
msgid "Exclude Inactive Sales Orders"
msgstr ""
-#: common/models.py:1423
+#: common/models.py:1430
msgid "Exclude inactive sales orders from search preview window"
msgstr ""
-#: common/models.py:1429
+#: common/models.py:1436
msgid "Search Preview Results"
msgstr ""
-#: common/models.py:1430
+#: common/models.py:1437
msgid "Number of results to show in each section of the search preview window"
msgstr ""
-#: common/models.py:1436
+#: common/models.py:1443
msgid "Show Quantity in Forms"
msgstr ""
-#: common/models.py:1437
+#: common/models.py:1444
msgid "Display available part quantity in some forms"
msgstr ""
-#: common/models.py:1443
+#: common/models.py:1450
msgid "Escape Key Closes Forms"
msgstr ""
-#: common/models.py:1444
+#: common/models.py:1451
msgid "Use the escape key to close modal forms"
msgstr ""
-#: common/models.py:1450
+#: common/models.py:1457
msgid "Fixed Navbar"
msgstr ""
-#: common/models.py:1451
+#: common/models.py:1458
msgid "The navbar position is fixed to the top of the screen"
msgstr ""
-#: common/models.py:1457
+#: common/models.py:1464
msgid "Date Format"
msgstr ""
-#: common/models.py:1458
+#: common/models.py:1465
msgid "Preferred format for displaying dates"
msgstr ""
-#: common/models.py:1472 part/templates/part/detail.html:39
+#: common/models.py:1479 part/templates/part/detail.html:39
msgid "Part Scheduling"
msgstr ""
-#: common/models.py:1473
+#: common/models.py:1480
msgid "Display part scheduling information"
msgstr ""
-#: common/models.py:1537 company/forms.py:37
+#: common/models.py:1544 company/forms.py:37
msgid "Price break quantity"
msgstr ""
-#: common/models.py:1544 company/serializers.py:288
-#: company/templates/company/supplier_part.html:263 order/models.py:949
-#: templates/js/translated/part.js:998 templates/js/translated/part.js:1974
+#: common/models.py:1551 company/serializers.py:290
+#: company/templates/company/supplier_part.html:263 order/models.py:965
+#: templates/js/translated/part.js:1042 templates/js/translated/part.js:2070
msgid "Price"
msgstr ""
-#: common/models.py:1545
+#: common/models.py:1552
msgid "Unit price at specified quantity"
msgstr ""
-#: common/models.py:1705 common/models.py:1883
+#: common/models.py:1712 common/models.py:1890
msgid "Endpoint"
msgstr ""
-#: common/models.py:1706
+#: common/models.py:1713
msgid "Endpoint at which this webhook is received"
msgstr ""
-#: common/models.py:1715
+#: common/models.py:1722
msgid "Name for this webhook"
msgstr ""
-#: common/models.py:1720 part/models.py:911 plugin/models.py:99
+#: common/models.py:1727 part/models.py:911 plugin/models.py:99
#: templates/js/translated/table_filters.js:34
#: templates/js/translated/table_filters.js:96
#: templates/js/translated/table_filters.js:308
@@ -2457,79 +2474,89 @@ msgstr ""
msgid "Active"
msgstr ""
-#: common/models.py:1721
+#: common/models.py:1728
msgid "Is this webhook active"
msgstr ""
-#: common/models.py:1735
+#: common/models.py:1742
msgid "Token"
msgstr ""
-#: common/models.py:1736
+#: common/models.py:1743
msgid "Token for access"
msgstr ""
-#: common/models.py:1743
+#: common/models.py:1750
msgid "Secret"
msgstr ""
-#: common/models.py:1744
+#: common/models.py:1751
msgid "Shared secret for HMAC"
msgstr ""
-#: common/models.py:1850
+#: common/models.py:1857
msgid "Message ID"
msgstr ""
-#: common/models.py:1851
+#: common/models.py:1858
msgid "Unique identifier for this message"
msgstr ""
-#: common/models.py:1859
+#: common/models.py:1866
msgid "Host"
msgstr ""
-#: common/models.py:1860
+#: common/models.py:1867
msgid "Host from which this message was received"
msgstr ""
-#: common/models.py:1867
+#: common/models.py:1874
msgid "Header"
msgstr ""
-#: common/models.py:1868
+#: common/models.py:1875
msgid "Header of this message"
msgstr ""
-#: common/models.py:1874
+#: common/models.py:1881
msgid "Body"
msgstr ""
-#: common/models.py:1875
+#: common/models.py:1882
msgid "Body of this message"
msgstr ""
-#: common/models.py:1884
+#: common/models.py:1891
msgid "Endpoint on which this message was received"
msgstr ""
-#: common/models.py:1889
+#: common/models.py:1896
msgid "Worked on"
msgstr ""
-#: common/models.py:1890
+#: common/models.py:1897
msgid "Was the work on this message finished?"
msgstr ""
+#: common/notifications.py:292
+#, python-brace-format
+msgid "New {verbose_name}"
+msgstr ""
+
+#: common/notifications.py:294
+#, python-brace-format
+msgid "A new {verbose_name} has been created and ,assigned to you"
+msgstr ""
+
#: common/views.py:87 order/templates/order/purchase_order_detail.html:23
-#: order/views.py:102 part/views.py:191
+#: order/views.py:102 part/views.py:116
#: templates/patterns/wizard/upload.html:37
msgid "Upload File"
msgstr ""
#: common/views.py:88 order/views.py:103
#: part/templates/part/import_wizard/ajax_match_fields.html:45
-#: part/views.py:192 templates/patterns/wizard/match_fields.html:51
+#: part/views.py:117 templates/patterns/wizard/match_fields.html:51
msgid "Match Fields"
msgstr ""
@@ -2545,19 +2572,19 @@ msgstr ""
msgid "Parts imported"
msgstr ""
-#: common/views.py:507 order/templates/order/order_wizard/match_parts.html:19
+#: common/views.py:511 order/templates/order/order_wizard/match_parts.html:19
#: part/templates/part/import_wizard/match_references.html:19
#: templates/patterns/wizard/match_fields.html:26
#: templates/patterns/wizard/upload.html:35
msgid "Previous Step"
msgstr ""
-#: company/forms.py:16 part/forms.py:21
+#: company/forms.py:16 part/forms.py:18
#: templates/InvenTree/settings/mixins/urls.html:14
msgid "URL"
msgstr ""
-#: company/forms.py:17 part/forms.py:22
+#: company/forms.py:17 part/forms.py:19
msgid "Image URL"
msgstr ""
@@ -2571,7 +2598,7 @@ msgstr ""
#: company/models.py:104 company/templates/company/company_base.html:100
#: templates/InvenTree/settings/plugin_settings.html:55
-#: templates/js/translated/company.js:405
+#: templates/js/translated/company.js:399
msgid "Website"
msgstr ""
@@ -2644,9 +2671,9 @@ msgstr ""
msgid "Does this company manufacture parts?"
msgstr ""
-#: company/models.py:144 company/serializers.py:294
-#: company/templates/company/company_base.html:106 part/serializers.py:137
-#: part/serializers.py:168 stock/serializers.py:162
+#: company/models.py:144 company/serializers.py:296
+#: company/templates/company/company_base.html:106 part/serializers.py:139
+#: part/serializers.py:170 stock/serializers.py:162
msgid "Currency"
msgstr ""
@@ -2667,10 +2694,10 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:90
#: company/templates/company/supplier_part.html:103
#: stock/templates/stock/item_base.html:212
-#: templates/js/translated/company.js:389
-#: templates/js/translated/company.js:488
-#: templates/js/translated/company.js:632
-#: templates/js/translated/company.js:917 templates/js/translated/part.js:235
+#: templates/js/translated/company.js:383
+#: templates/js/translated/company.js:484
+#: templates/js/translated/company.js:617
+#: templates/js/translated/company.js:902 templates/js/translated/part.js:235
#: templates/js/translated/table_filters.js:411
msgid "Manufacturer"
msgstr ""
@@ -2681,11 +2708,11 @@ msgstr ""
#: company/models.py:266 company/templates/company/manufacturer_part.html:101
#: company/templates/company/supplier_part.html:111
-#: templates/js/translated/company.js:255
-#: templates/js/translated/company.js:487
-#: templates/js/translated/company.js:648
-#: templates/js/translated/company.js:935 templates/js/translated/order.js:1907
-#: templates/js/translated/part.js:246 templates/js/translated/part.js:956
+#: templates/js/translated/company.js:256
+#: templates/js/translated/company.js:483
+#: templates/js/translated/company.js:633
+#: templates/js/translated/company.js:920 templates/js/translated/order.js:1907
+#: templates/js/translated/part.js:246 templates/js/translated/part.js:1000
msgid "MPN"
msgstr ""
@@ -2714,9 +2741,9 @@ msgstr ""
#: company/models.py:361
#: report/templates/report/inventree_test_report_base.html:95
-#: stock/models.py:2080 templates/js/translated/company.js:540
-#: templates/js/translated/company.js:763 templates/js/translated/part.js:776
-#: templates/js/translated/stock.js:1294
+#: stock/models.py:2084 templates/js/translated/company.js:531
+#: templates/js/translated/company.js:748 templates/js/translated/part.js:820
+#: templates/js/translated/stock.js:1304
msgid "Value"
msgstr ""
@@ -2724,10 +2751,10 @@ msgstr ""
msgid "Parameter value"
msgstr ""
-#: company/models.py:368 part/models.py:878 part/models.py:2339
+#: company/models.py:368 part/models.py:878 part/models.py:2327
#: part/templates/part/part_base.html:280
#: templates/InvenTree/settings/settings.html:351
-#: templates/js/translated/company.js:769 templates/js/translated/part.js:782
+#: templates/js/translated/company.js:754 templates/js/translated/part.js:826
msgid "Units"
msgstr ""
@@ -2740,13 +2767,14 @@ msgid "Linked manufacturer part must reference the same base part"
msgstr ""
#: company/models.py:487 company/templates/company/company_base.html:81
-#: company/templates/company/supplier_part.html:87 order/models.py:303
+#: company/templates/company/supplier_part.html:87 order/models.py:308
#: order/templates/order/order_base.html:112 part/bom.py:237 part/bom.py:265
#: stock/templates/stock/item_base.html:229
-#: templates/js/translated/company.js:254
-#: templates/js/translated/company.js:393
-#: templates/js/translated/company.js:891 templates/js/translated/order.js:1643
-#: templates/js/translated/part.js:216 templates/js/translated/part.js:924
+#: templates/email/overdue_purchase_order.html:16
+#: templates/js/translated/company.js:255
+#: templates/js/translated/company.js:387
+#: templates/js/translated/company.js:876 templates/js/translated/order.js:1643
+#: templates/js/translated/part.js:216 templates/js/translated/part.js:968
#: templates/js/translated/table_filters.js:415
msgid "Supplier"
msgstr ""
@@ -2756,9 +2784,9 @@ msgid "Select supplier"
msgstr ""
#: company/models.py:493 company/templates/company/supplier_part.html:97
-#: part/bom.py:238 part/bom.py:266 templates/js/translated/company.js:253
+#: part/bom.py:238 part/bom.py:266 templates/js/translated/company.js:254
#: templates/js/translated/order.js:1894 templates/js/translated/part.js:227
-#: templates/js/translated/part.js:942
+#: templates/js/translated/part.js:986
msgid "SKU"
msgstr ""
@@ -2779,23 +2807,23 @@ msgid "Supplier part description"
msgstr ""
#: company/models.py:518 company/templates/company/supplier_part.html:125
-#: part/models.py:2573 part/templates/part/upload_bom.html:59
+#: part/models.py:2561 part/templates/part/upload_bom.html:59
#: report/templates/report/inventree_po_report.html:92
#: report/templates/report/inventree_so_report.html:93 stock/serializers.py:387
msgid "Note"
msgstr ""
-#: company/models.py:522 part/models.py:1688
+#: company/models.py:522 part/models.py:1683
msgid "base cost"
msgstr ""
-#: company/models.py:522 part/models.py:1688
+#: company/models.py:522 part/models.py:1683
msgid "Minimum charge (e.g. stocking fee)"
msgstr ""
#: company/models.py:524 company/templates/company/supplier_part.html:118
#: stock/models.py:608 stock/templates/stock/item_base.html:245
-#: templates/js/translated/company.js:967 templates/js/translated/stock.js:1912
+#: templates/js/translated/company.js:952 templates/js/translated/stock.js:1922
msgid "Packaging"
msgstr ""
@@ -2803,7 +2831,7 @@ msgstr ""
msgid "Part packaging"
msgstr ""
-#: company/models.py:526 part/models.py:1690
+#: company/models.py:526 part/models.py:1685
msgid "multiple"
msgstr ""
@@ -2825,7 +2853,7 @@ msgstr ""
#: company/templates/company/company_base.html:8
#: company/templates/company/company_base.html:12
-#: templates/InvenTree/search.html:177 templates/js/translated/company.js:378
+#: templates/InvenTree/search.html:177 templates/js/translated/company.js:372
msgid "Company"
msgstr ""
@@ -2843,7 +2871,7 @@ msgid "Edit company information"
msgstr ""
#: company/templates/company/company_base.html:34
-#: templates/js/translated/company.js:321
+#: templates/js/translated/company.js:315
msgid "Edit Company"
msgstr ""
@@ -2866,12 +2894,13 @@ msgstr ""
msgid "Download image from URL"
msgstr ""
-#: company/templates/company/company_base.html:86 order/models.py:649
+#: company/templates/company/company_base.html:86 order/models.py:665
#: order/templates/order/sales_order_base.html:116 stock/models.py:627
-#: stock/models.py:628 stock/serializers.py:758
+#: stock/models.py:628 stock/serializers.py:745
#: stock/templates/stock/item_base.html:401
-#: templates/js/translated/company.js:385 templates/js/translated/order.js:2458
-#: templates/js/translated/stock.js:2431
+#: templates/email/overdue_sales_order.html:16
+#: templates/js/translated/company.js:379 templates/js/translated/order.js:2458
+#: templates/js/translated/stock.js:2441
#: templates/js/translated/table_filters.js:419
msgid "Customer"
msgstr ""
@@ -2999,7 +3028,7 @@ msgid "Supplier List"
msgstr ""
#: company/templates/company/manufacturer_part.html:15 company/views.py:45
-#: part/templates/part/prices.html:170 templates/InvenTree/search.html:179
+#: part/templates/part/prices.html:172 templates/InvenTree/search.html:179
#: templates/navbar.html:49
msgid "Manufacturers"
msgstr ""
@@ -3012,12 +3041,12 @@ msgid "Order part"
msgstr ""
#: company/templates/company/manufacturer_part.html:39
-#: templates/js/translated/company.js:680
+#: templates/js/translated/company.js:665
msgid "Edit manufacturer part"
msgstr ""
#: company/templates/company/manufacturer_part.html:43
-#: templates/js/translated/company.js:681
+#: templates/js/translated/company.js:666
msgid "Delete manufacturer part"
msgstr ""
@@ -3032,7 +3061,7 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:119
#: company/templates/company/supplier_part.html:15 company/views.py:39
-#: part/templates/part/part_sidebar.html:35 part/templates/part/prices.html:166
+#: part/templates/part/part_sidebar.html:35 part/templates/part/prices.html:168
#: templates/InvenTree/search.html:189 templates/navbar.html:48
msgid "Suppliers"
msgstr ""
@@ -3092,18 +3121,18 @@ msgstr ""
#: company/templates/company/supplier_part.html:7
#: company/templates/company/supplier_part.html:24 stock/models.py:592
#: stock/templates/stock/item_base.html:238
-#: templates/js/translated/company.js:907 templates/js/translated/order.js:884
-#: templates/js/translated/stock.js:1869
+#: templates/js/translated/company.js:892 templates/js/translated/order.js:884
+#: templates/js/translated/stock.js:1879
msgid "Supplier Part"
msgstr ""
#: company/templates/company/supplier_part.html:38
-#: templates/js/translated/company.js:980
+#: templates/js/translated/company.js:965
msgid "Edit supplier part"
msgstr ""
#: company/templates/company/supplier_part.html:42
-#: templates/js/translated/company.js:981
+#: templates/js/translated/company.js:966
msgid "Delete supplier part"
msgstr ""
@@ -3123,7 +3152,7 @@ msgstr ""
#: company/templates/company/supplier_part.html:148
#: part/templates/part/detail.html:24 stock/templates/stock/location.html:177
-#: templates/js/translated/stock.js:380
+#: templates/js/translated/stock.js:379
msgid "New Stock Item"
msgstr ""
@@ -3144,7 +3173,7 @@ msgstr ""
#: company/templates/company/supplier_part.html:191
#: company/templates/company/supplier_part.html:305
-#: part/templates/part/prices.html:274 templates/js/translated/part.js:2046
+#: part/templates/part/prices.html:276 templates/js/translated/part.js:2142
msgid "Add Price Break"
msgstr ""
@@ -3153,12 +3182,12 @@ msgid "No price break information found"
msgstr ""
#: company/templates/company/supplier_part.html:231
-#: templates/js/translated/part.js:2056
+#: templates/js/translated/part.js:2152
msgid "Delete Price Break"
msgstr ""
#: company/templates/company/supplier_part.html:245
-#: templates/js/translated/part.js:2070
+#: templates/js/translated/part.js:2166
msgid "Edit Price Break"
msgstr ""
@@ -3180,9 +3209,9 @@ msgstr ""
#: stock/templates/stock/stock_app_base.html:10
#: templates/InvenTree/search.html:151
#: templates/InvenTree/settings/sidebar.html:43
-#: templates/js/translated/bom.js:554 templates/js/translated/part.js:678
-#: templates/js/translated/part.js:1226 templates/js/translated/part.js:1387
-#: templates/js/translated/stock.js:904 templates/js/translated/stock.js:1687
+#: templates/js/translated/bom.js:554 templates/js/translated/part.js:722
+#: templates/js/translated/part.js:1270 templates/js/translated/part.js:1431
+#: templates/js/translated/stock.js:903 templates/js/translated/stock.js:1697
#: templates/navbar.html:31
msgid "Stock"
msgstr ""
@@ -3209,7 +3238,7 @@ msgstr ""
#: stock/templates/stock/location.html:173
#: stock/templates/stock/location_sidebar.html:7
#: templates/InvenTree/search.html:153 templates/js/translated/search.js:223
-#: templates/js/translated/stock.js:2307 users/models.py:39
+#: templates/js/translated/stock.js:2317 users/models.py:39
msgid "Stock Items"
msgstr ""
@@ -3238,20 +3267,20 @@ msgstr ""
msgid "New Company"
msgstr ""
-#: company/views.py:112 part/views.py:576
+#: company/views.py:112 part/views.py:501
msgid "Download Image"
msgstr ""
-#: company/views.py:139 part/views.py:606
+#: company/views.py:139 part/views.py:531
msgid "Image size exceeds maximum allowable size for download"
msgstr ""
-#: company/views.py:146 part/views.py:613
+#: company/views.py:146 part/views.py:538
#, python-brace-format
msgid "Invalid response: {code}"
msgstr ""
-#: company/views.py:155 part/views.py:622
+#: company/views.py:155 part/views.py:547
msgid "Supplied URL is not a valid image file"
msgstr ""
@@ -3320,313 +3349,314 @@ msgstr ""
msgid "Part query filters (comma-separated value of key=value pairs)"
msgstr ""
-#: order/models.py:133
+#: order/models.py:134
msgid "Order description"
msgstr ""
-#: order/models.py:135 order/models.py:1236
+#: order/models.py:136 order/models.py:1252
msgid "Link to external page"
msgstr ""
-#: order/models.py:143
+#: order/models.py:144
msgid "Created By"
msgstr ""
-#: order/models.py:150
+#: order/models.py:151
msgid "User or group responsible for this order"
msgstr ""
-#: order/models.py:155
+#: order/models.py:156
msgid "Order notes"
msgstr ""
-#: order/models.py:289 order/models.py:639
+#: order/models.py:294 order/models.py:655
msgid "Order reference"
msgstr ""
-#: order/models.py:294 order/models.py:654
+#: order/models.py:299 order/models.py:670
msgid "Purchase order status"
msgstr ""
-#: order/models.py:304
+#: order/models.py:309
msgid "Company from which the items are being ordered"
msgstr ""
-#: order/models.py:307 order/templates/order/order_base.html:124
+#: order/models.py:312 order/templates/order/order_base.html:124
#: templates/js/translated/order.js:1652
msgid "Supplier Reference"
msgstr ""
-#: order/models.py:307
+#: order/models.py:312
msgid "Supplier order reference code"
msgstr ""
-#: order/models.py:314
+#: order/models.py:319
msgid "received by"
msgstr ""
-#: order/models.py:319
+#: order/models.py:324
msgid "Issue Date"
msgstr ""
-#: order/models.py:320
+#: order/models.py:325
msgid "Date order was issued"
msgstr ""
-#: order/models.py:325
+#: order/models.py:330
msgid "Target Delivery Date"
msgstr ""
-#: order/models.py:326
+#: order/models.py:331
msgid "Expected date for order delivery. Order will be overdue after this date."
msgstr ""
-#: order/models.py:332
+#: order/models.py:337
msgid "Date order was completed"
msgstr ""
-#: order/models.py:368
+#: order/models.py:373
msgid "Part supplier must match PO supplier"
msgstr ""
-#: order/models.py:512
+#: order/models.py:517
msgid "Quantity must be a positive number"
msgstr ""
-#: order/models.py:650
+#: order/models.py:666
msgid "Company to which the items are being sold"
msgstr ""
-#: order/models.py:656
+#: order/models.py:672
msgid "Customer Reference "
msgstr ""
-#: order/models.py:656
+#: order/models.py:672
msgid "Customer order reference code"
msgstr ""
-#: order/models.py:661
+#: order/models.py:677
msgid "Target date for order completion. Order will be overdue after this date."
msgstr ""
-#: order/models.py:664 order/models.py:1190
+#: order/models.py:680 order/models.py:1206
#: templates/js/translated/order.js:2505 templates/js/translated/order.js:2656
msgid "Shipment Date"
msgstr ""
-#: order/models.py:671
+#: order/models.py:687
msgid "shipped by"
msgstr ""
-#: order/models.py:726
+#: order/models.py:742
msgid "Order cannot be completed as no parts have been assigned"
msgstr ""
-#: order/models.py:730
+#: order/models.py:746
msgid "Only a pending order can be marked as complete"
msgstr ""
-#: order/models.py:733
+#: order/models.py:749
msgid "Order cannot be completed as there are incomplete shipments"
msgstr ""
-#: order/models.py:736
+#: order/models.py:752
msgid "Order cannot be completed as there are incomplete line items"
msgstr ""
-#: order/models.py:910
+#: order/models.py:926
msgid "Item quantity"
msgstr ""
-#: order/models.py:916
+#: order/models.py:932
msgid "Line item reference"
msgstr ""
-#: order/models.py:918
+#: order/models.py:934
msgid "Line item notes"
msgstr ""
-#: order/models.py:923
+#: order/models.py:939
msgid "Target shipping date for this line item"
msgstr ""
-#: order/models.py:941
+#: order/models.py:957
msgid "Context"
msgstr ""
-#: order/models.py:942
+#: order/models.py:958
msgid "Additional context for this line"
msgstr ""
-#: order/models.py:950
+#: order/models.py:966
msgid "Unit price"
msgstr ""
-#: order/models.py:980
+#: order/models.py:996
msgid "Supplier part must match supplier"
msgstr ""
-#: order/models.py:988
+#: order/models.py:1004
msgid "deleted"
msgstr ""
-#: order/models.py:994 order/models.py:1074 order/models.py:1099
-#: order/models.py:1184 order/models.py:1320
+#: order/models.py:1010 order/models.py:1090 order/models.py:1115
+#: order/models.py:1200 order/models.py:1336
#: templates/js/translated/order.js:3112
msgid "Order"
msgstr ""
-#: order/models.py:995 order/models.py:1074
+#: order/models.py:1011 order/models.py:1090
#: order/templates/order/order_base.html:9
#: order/templates/order/order_base.html:18
#: report/templates/report/inventree_po_report.html:76
#: stock/templates/stock/item_base.html:184
+#: templates/email/overdue_purchase_order.html:15
#: templates/js/translated/order.js:885 templates/js/translated/order.js:1621
-#: templates/js/translated/part.js:899 templates/js/translated/stock.js:1846
-#: templates/js/translated/stock.js:2412
+#: templates/js/translated/part.js:943 templates/js/translated/stock.js:1856
+#: templates/js/translated/stock.js:2422
msgid "Purchase Order"
msgstr ""
-#: order/models.py:1013
+#: order/models.py:1029
msgid "Supplier part"
msgstr ""
-#: order/models.py:1020 order/templates/order/order_base.html:169
+#: order/models.py:1036 order/templates/order/order_base.html:169
#: templates/js/translated/order.js:1318 templates/js/translated/order.js:2009
-#: templates/js/translated/part.js:993 templates/js/translated/part.js:1020
+#: templates/js/translated/part.js:1037 templates/js/translated/part.js:1064
#: templates/js/translated/table_filters.js:330
msgid "Received"
msgstr ""
-#: order/models.py:1021
+#: order/models.py:1037
msgid "Number of items received"
msgstr ""
-#: order/models.py:1028 part/templates/part/prices.html:179 stock/models.py:722
+#: order/models.py:1044 part/templates/part/prices.html:181 stock/models.py:722
#: stock/serializers.py:153 stock/templates/stock/item_base.html:191
-#: templates/js/translated/stock.js:1900
+#: templates/js/translated/stock.js:1910
msgid "Purchase Price"
msgstr ""
-#: order/models.py:1029
+#: order/models.py:1045
msgid "Unit purchase price"
msgstr ""
-#: order/models.py:1037
+#: order/models.py:1053
msgid "Where does the Purchaser want this item to be stored?"
msgstr ""
-#: order/models.py:1109 part/templates/part/part_pricing.html:112
-#: part/templates/part/prices.html:119 part/templates/part/prices.html:288
+#: order/models.py:1125 part/templates/part/part_pricing.html:115
+#: part/templates/part/prices.html:121 part/templates/part/prices.html:290
msgid "Sale Price"
msgstr ""
-#: order/models.py:1110
+#: order/models.py:1126
msgid "Unit sale price"
msgstr ""
-#: order/models.py:1115
+#: order/models.py:1131
msgid "Shipped quantity"
msgstr ""
-#: order/models.py:1191
+#: order/models.py:1207
msgid "Date of shipment"
msgstr ""
-#: order/models.py:1198
+#: order/models.py:1214
msgid "Checked By"
msgstr ""
-#: order/models.py:1199
+#: order/models.py:1215
msgid "User who checked this shipment"
msgstr ""
-#: order/models.py:1207
+#: order/models.py:1223
msgid "Shipment number"
msgstr ""
-#: order/models.py:1214
+#: order/models.py:1230
msgid "Shipment notes"
msgstr ""
-#: order/models.py:1221
+#: order/models.py:1237
msgid "Tracking Number"
msgstr ""
-#: order/models.py:1222
+#: order/models.py:1238
msgid "Shipment tracking information"
msgstr ""
-#: order/models.py:1229
+#: order/models.py:1245
msgid "Invoice Number"
msgstr ""
-#: order/models.py:1230
+#: order/models.py:1246
msgid "Reference number for associated invoice"
msgstr ""
-#: order/models.py:1248
+#: order/models.py:1264
msgid "Shipment has already been sent"
msgstr ""
-#: order/models.py:1251
+#: order/models.py:1267
msgid "Shipment has no allocated stock items"
msgstr ""
-#: order/models.py:1354 order/models.py:1356
+#: order/models.py:1370 order/models.py:1372
msgid "Stock item has not been assigned"
msgstr ""
-#: order/models.py:1360
+#: order/models.py:1376
msgid "Cannot allocate stock item to a line with a different part"
msgstr ""
-#: order/models.py:1362
+#: order/models.py:1378
msgid "Cannot allocate stock to a line without a part"
msgstr ""
-#: order/models.py:1365
+#: order/models.py:1381
msgid "Allocation quantity cannot exceed stock quantity"
msgstr ""
-#: order/models.py:1369
+#: order/models.py:1385
msgid "StockItem is over-allocated"
msgstr ""
-#: order/models.py:1375 order/serializers.py:1045
+#: order/models.py:1391 order/serializers.py:1047
msgid "Quantity must be 1 for serialized stock item"
msgstr ""
-#: order/models.py:1378
+#: order/models.py:1394
msgid "Sales order does not match shipment"
msgstr ""
-#: order/models.py:1379
+#: order/models.py:1395
msgid "Shipment does not match sales order"
msgstr ""
-#: order/models.py:1387
+#: order/models.py:1403
msgid "Line"
msgstr ""
-#: order/models.py:1395 order/serializers.py:1149 order/serializers.py:1273
+#: order/models.py:1411 order/serializers.py:1151 order/serializers.py:1275
#: templates/js/translated/model_renderers.js:301
msgid "Shipment"
msgstr ""
-#: order/models.py:1396
+#: order/models.py:1412
msgid "Sales order shipment reference"
msgstr ""
-#: order/models.py:1408 templates/InvenTree/notifications/notifications.html:70
+#: order/models.py:1424 templates/InvenTree/notifications/notifications.html:70
msgid "Item"
msgstr ""
-#: order/models.py:1409
+#: order/models.py:1425
msgid "Select stock item to allocate"
msgstr ""
-#: order/models.py:1412
+#: order/models.py:1428
msgid "Enter stock allocation quantity"
msgstr ""
@@ -3662,7 +3692,7 @@ msgstr ""
msgid "Purchase order must match supplier"
msgstr ""
-#: order/serializers.py:406 order/serializers.py:1117
+#: order/serializers.py:406 order/serializers.py:1119
msgid "Line Item"
msgstr ""
@@ -3710,42 +3740,60 @@ msgstr ""
msgid "Supplied barcode values must be unique"
msgstr ""
-#: order/serializers.py:866
+#: order/serializers.py:868
msgid "Sale price currency"
msgstr ""
-#: order/serializers.py:947
+#: order/serializers.py:949
msgid "No shipment details provided"
msgstr ""
-#: order/serializers.py:1006 order/serializers.py:1126
+#: order/serializers.py:1008 order/serializers.py:1128
msgid "Line item is not associated with this order"
msgstr ""
-#: order/serializers.py:1028
+#: order/serializers.py:1030
msgid "Quantity must be positive"
msgstr ""
-#: order/serializers.py:1139
+#: order/serializers.py:1141
msgid "Enter serial numbers to allocate"
msgstr ""
-#: order/serializers.py:1161 order/serializers.py:1281
+#: order/serializers.py:1163 order/serializers.py:1283
msgid "Shipment has already been shipped"
msgstr ""
-#: order/serializers.py:1164 order/serializers.py:1284
+#: order/serializers.py:1166 order/serializers.py:1286
msgid "Shipment is not associated with this order"
msgstr ""
-#: order/serializers.py:1214
+#: order/serializers.py:1216
msgid "No match found for the following serial numbers"
msgstr ""
-#: order/serializers.py:1224
+#: order/serializers.py:1226
msgid "The following serial numbers are already allocated"
msgstr ""
+#: order/tasks.py:26
+msgid "Overdue Purchase Order"
+msgstr ""
+
+#: order/tasks.py:31
+#, python-brace-format
+msgid "Purchase order {po} is now overdue"
+msgstr ""
+
+#: order/tasks.py:88
+msgid "Overdue Sales Order"
+msgstr ""
+
+#: order/tasks.py:93
+#, python-brace-format
+msgid "Sales order {so} is now overdue"
+msgstr ""
+
#: order/templates/order/order_base.html:33
msgid "Print purchase order report"
msgstr ""
@@ -3870,8 +3918,8 @@ msgstr ""
#: templates/js/translated/bom.js:77 templates/js/translated/build.js:427
#: templates/js/translated/build.js:579 templates/js/translated/build.js:1972
#: templates/js/translated/order.js:833 templates/js/translated/order.js:1265
-#: templates/js/translated/order.js:2731 templates/js/translated/stock.js:570
-#: templates/js/translated/stock.js:738
+#: templates/js/translated/order.js:2731 templates/js/translated/stock.js:569
+#: templates/js/translated/stock.js:737
#: templates/patterns/wizard/match_fields.html:70
msgid "Remove row"
msgstr ""
@@ -3990,7 +4038,7 @@ msgid "Pending Shipments"
msgstr ""
#: order/templates/order/sales_order_detail.html:70
-#: templates/attachment_table.html:6 templates/js/translated/bom.js:1053
+#: templates/attachment_table.html:6 templates/js/translated/bom.js:1047
#: templates/js/translated/build.js:1880
msgid "Actions"
msgstr ""
@@ -4021,47 +4069,47 @@ msgstr ""
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr ""
-#: part/api.py:481
+#: part/api.py:482
msgid "Incoming Purchase Order"
msgstr ""
-#: part/api.py:501
+#: part/api.py:502
msgid "Outgoing Sales Order"
msgstr ""
-#: part/api.py:519
+#: part/api.py:520
msgid "Stock produced by Build Order"
msgstr ""
-#: part/api.py:551
+#: part/api.py:552
msgid "Stock required for Build Order"
msgstr ""
-#: part/api.py:637
+#: part/api.py:638
msgid "Valid"
msgstr ""
-#: part/api.py:638
+#: part/api.py:639
msgid "Validate entire Bill of Materials"
msgstr ""
-#: part/api.py:644
+#: part/api.py:645
msgid "This option must be selected"
msgstr ""
-#: part/api.py:1010
+#: part/api.py:1011
msgid "Must be greater than zero"
msgstr ""
-#: part/api.py:1014
+#: part/api.py:1015
msgid "Must be a valid quantity"
msgstr ""
-#: part/api.py:1029
+#: part/api.py:1030
msgid "Specify location for initial part stock"
msgstr ""
-#: part/api.py:1060 part/api.py:1064 part/api.py:1079 part/api.py:1083
+#: part/api.py:1061 part/api.py:1065 part/api.py:1080 part/api.py:1084
msgid "This field is required"
msgstr ""
@@ -4080,17 +4128,13 @@ msgid "Available Stock"
msgstr ""
#: part/bom.py:130 part/templates/part/part_base.html:207
-#: templates/js/translated/part.js:517 templates/js/translated/part.js:537
-#: templates/js/translated/part.js:1229 templates/js/translated/part.js:1401
-#: templates/js/translated/part.js:1417
+#: templates/js/translated/part.js:561 templates/js/translated/part.js:581
+#: templates/js/translated/part.js:1273 templates/js/translated/part.js:1445
+#: templates/js/translated/part.js:1461
msgid "On Order"
msgstr ""
-#: part/forms.py:59
-msgid "Select part category"
-msgstr ""
-
-#: part/forms.py:69
+#: part/forms.py:60
msgid "Input quantity for price calculation"
msgstr ""
@@ -4106,7 +4150,7 @@ msgstr ""
msgid "Default keywords for parts in this category"
msgstr ""
-#: part/models.py:115 part/models.py:2415 part/templates/part/category.html:15
+#: part/models.py:115 part/models.py:2403 part/templates/part/category.html:15
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr ""
@@ -4123,7 +4167,7 @@ msgstr ""
#: part/templates/part/category_sidebar.html:9
#: templates/InvenTree/index.html:85 templates/InvenTree/search.html:82
#: templates/InvenTree/settings/sidebar.html:39
-#: templates/js/translated/part.js:1768 templates/js/translated/search.js:144
+#: templates/js/translated/part.js:1864 templates/js/translated/search.js:144
#: templates/navbar.html:24 users/models.py:37
msgid "Parts"
msgstr ""
@@ -4153,7 +4197,7 @@ msgstr ""
msgid "Duplicate IPN not allowed in part settings"
msgstr ""
-#: part/models.py:738 part/models.py:2469
+#: part/models.py:738 part/models.py:2457
msgid "Part name"
msgstr ""
@@ -4186,12 +4230,11 @@ msgstr ""
msgid "Part keywords to improve visibility in search results"
msgstr ""
-#: part/models.py:776 part/models.py:2171 part/models.py:2414
+#: part/models.py:776 part/models.py:2159 part/models.py:2402
#: part/templates/part/part_base.html:257
-#: part/templates/part/set_category.html:15
#: templates/InvenTree/notifications/notifications.html:65
#: templates/InvenTree/settings/settings.html:231
-#: templates/js/translated/part.js:1369
+#: templates/js/translated/part.js:1413 templates/js/translated/part.js:1639
msgid "Category"
msgstr ""
@@ -4200,8 +4243,8 @@ msgid "Part category"
msgstr ""
#: part/models.py:782 part/templates/part/part_base.html:266
-#: templates/js/translated/part.js:666 templates/js/translated/part.js:1322
-#: templates/js/translated/stock.js:1659
+#: templates/js/translated/part.js:710 templates/js/translated/part.js:1366
+#: templates/js/translated/stock.js:1669
msgid "IPN"
msgstr ""
@@ -4214,7 +4257,7 @@ msgid "Part revision or version number"
msgstr ""
#: part/models.py:790 part/templates/part/part_base.html:273
-#: report/models.py:170 templates/js/translated/part.js:670
+#: report/models.py:170 templates/js/translated/part.js:714
msgid "Revision"
msgstr ""
@@ -4302,317 +4345,321 @@ msgstr ""
msgid "Creation User"
msgstr ""
-#: part/models.py:1690
+#: part/models.py:1685
msgid "Sell multiple"
msgstr ""
-#: part/models.py:2218
+#: part/models.py:2206
msgid "Test templates can only be created for trackable parts"
msgstr ""
-#: part/models.py:2235
+#: part/models.py:2223
msgid "Test with this name already exists for this part"
msgstr ""
-#: part/models.py:2255 templates/js/translated/part.js:1819
-#: templates/js/translated/stock.js:1274
+#: part/models.py:2243 templates/js/translated/part.js:1915
+#: templates/js/translated/stock.js:1284
msgid "Test Name"
msgstr ""
-#: part/models.py:2256
+#: part/models.py:2244
msgid "Enter a name for the test"
msgstr ""
-#: part/models.py:2261
+#: part/models.py:2249
msgid "Test Description"
msgstr ""
-#: part/models.py:2262
+#: part/models.py:2250
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:2267 templates/js/translated/part.js:1828
+#: part/models.py:2255 templates/js/translated/part.js:1924
#: templates/js/translated/table_filters.js:294
msgid "Required"
msgstr ""
-#: part/models.py:2268
+#: part/models.py:2256
msgid "Is this test required to pass?"
msgstr ""
-#: part/models.py:2273 templates/js/translated/part.js:1836
+#: part/models.py:2261 templates/js/translated/part.js:1932
msgid "Requires Value"
msgstr ""
-#: part/models.py:2274
+#: part/models.py:2262
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:2279 templates/js/translated/part.js:1843
+#: part/models.py:2267 templates/js/translated/part.js:1939
msgid "Requires Attachment"
msgstr ""
-#: part/models.py:2280
+#: part/models.py:2268
msgid "Does this test require a file attachment when adding a test result?"
msgstr ""
-#: part/models.py:2288
+#: part/models.py:2276
#, python-brace-format
msgid "Illegal character in template name ({c})"
msgstr ""
-#: part/models.py:2324
+#: part/models.py:2312
msgid "Parameter template name must be unique"
msgstr ""
-#: part/models.py:2332
+#: part/models.py:2320
msgid "Parameter Name"
msgstr ""
-#: part/models.py:2339
+#: part/models.py:2327
msgid "Parameter Units"
msgstr ""
-#: part/models.py:2370
+#: part/models.py:2358
msgid "Parent Part"
msgstr ""
-#: part/models.py:2372 part/models.py:2420 part/models.py:2421
+#: part/models.py:2360 part/models.py:2408 part/models.py:2409
#: templates/InvenTree/settings/settings.html:226
msgid "Parameter Template"
msgstr ""
-#: part/models.py:2374
+#: part/models.py:2362
msgid "Data"
msgstr ""
-#: part/models.py:2374
+#: part/models.py:2362
msgid "Parameter Value"
msgstr ""
-#: part/models.py:2425 templates/InvenTree/settings/settings.html:235
+#: part/models.py:2413 templates/InvenTree/settings/settings.html:235
msgid "Default Value"
msgstr ""
-#: part/models.py:2426
+#: part/models.py:2414
msgid "Default Parameter Value"
msgstr ""
-#: part/models.py:2461
+#: part/models.py:2449
msgid "Part ID or part name"
msgstr ""
-#: part/models.py:2464 templates/js/translated/model_renderers.js:200
+#: part/models.py:2452 templates/js/translated/model_renderers.js:200
msgid "Part ID"
msgstr ""
-#: part/models.py:2465
+#: part/models.py:2453
msgid "Unique part ID value"
msgstr ""
-#: part/models.py:2468
+#: part/models.py:2456
msgid "Part Name"
msgstr ""
-#: part/models.py:2472
+#: part/models.py:2460
msgid "Part IPN"
msgstr ""
-#: part/models.py:2473
+#: part/models.py:2461
msgid "Part IPN value"
msgstr ""
-#: part/models.py:2476
+#: part/models.py:2464
msgid "Level"
msgstr ""
-#: part/models.py:2477
+#: part/models.py:2465
msgid "BOM level"
msgstr ""
-#: part/models.py:2546
+#: part/models.py:2534
msgid "Select parent part"
msgstr ""
-#: part/models.py:2554
+#: part/models.py:2542
msgid "Sub part"
msgstr ""
-#: part/models.py:2555
+#: part/models.py:2543
msgid "Select part to be used in BOM"
msgstr ""
-#: part/models.py:2561
+#: part/models.py:2549
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:2563 part/templates/part/upload_bom.html:58
-#: templates/js/translated/bom.js:877 templates/js/translated/bom.js:971
+#: part/models.py:2551 part/templates/part/upload_bom.html:58
+#: templates/js/translated/bom.js:871 templates/js/translated/bom.js:965
#: templates/js/translated/table_filters.js:92
msgid "Optional"
msgstr ""
-#: part/models.py:2563
+#: part/models.py:2551
msgid "This BOM item is optional"
msgstr ""
-#: part/models.py:2566 part/templates/part/upload_bom.html:55
+#: part/models.py:2554 part/templates/part/upload_bom.html:55
msgid "Overage"
msgstr ""
-#: part/models.py:2567
+#: part/models.py:2555
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr ""
-#: part/models.py:2570
+#: part/models.py:2558
msgid "BOM item reference"
msgstr ""
-#: part/models.py:2573
+#: part/models.py:2561
msgid "BOM item notes"
msgstr ""
-#: part/models.py:2575
+#: part/models.py:2563
msgid "Checksum"
msgstr ""
-#: part/models.py:2575
+#: part/models.py:2563
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:2579 part/templates/part/upload_bom.html:57
-#: templates/js/translated/bom.js:988
+#: part/models.py:2567 part/templates/part/upload_bom.html:57
+#: templates/js/translated/bom.js:982
#: templates/js/translated/table_filters.js:68
#: templates/js/translated/table_filters.js:88
msgid "Inherited"
msgstr ""
-#: part/models.py:2580
+#: part/models.py:2568
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr ""
-#: part/models.py:2585 part/templates/part/upload_bom.html:56
-#: templates/js/translated/bom.js:980
+#: part/models.py:2573 part/templates/part/upload_bom.html:56
+#: templates/js/translated/bom.js:974
msgid "Allow Variants"
msgstr ""
-#: part/models.py:2586
+#: part/models.py:2574
msgid "Stock items for variant parts can be used for this BOM item"
msgstr ""
-#: part/models.py:2664 stock/models.py:460
+#: part/models.py:2652 stock/models.py:460
msgid "Quantity must be integer value for trackable parts"
msgstr ""
-#: part/models.py:2673 part/models.py:2675
+#: part/models.py:2661 part/models.py:2663
msgid "Sub part must be specified"
msgstr ""
-#: part/models.py:2780
+#: part/models.py:2768
msgid "BOM Item Substitute"
msgstr ""
-#: part/models.py:2801
+#: part/models.py:2789
msgid "Substitute part cannot be the same as the master part"
msgstr ""
-#: part/models.py:2814
+#: part/models.py:2802
msgid "Parent BOM item"
msgstr ""
-#: part/models.py:2822
+#: part/models.py:2810
msgid "Substitute part"
msgstr ""
-#: part/models.py:2833
+#: part/models.py:2825
msgid "Part 1"
msgstr ""
-#: part/models.py:2837
+#: part/models.py:2829
msgid "Part 2"
msgstr ""
-#: part/models.py:2837
+#: part/models.py:2829
msgid "Select Related Part"
msgstr ""
-#: part/models.py:2868
-msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique"
+#: part/models.py:2847
+msgid "Part relationship cannot be created between a part and itself"
msgstr ""
-#: part/serializers.py:138 part/serializers.py:169 stock/serializers.py:163
+#: part/models.py:2851
+msgid "Duplicate relationship already exists"
+msgstr ""
+
+#: part/serializers.py:140 part/serializers.py:171 stock/serializers.py:163
msgid "Purchase currency of this stock item"
msgstr ""
-#: part/serializers.py:794
+#: part/serializers.py:796
msgid "Select part to copy BOM from"
msgstr ""
-#: part/serializers.py:802
+#: part/serializers.py:804
msgid "Remove Existing Data"
msgstr ""
-#: part/serializers.py:803
+#: part/serializers.py:805
msgid "Remove existing BOM items before copying"
msgstr ""
-#: part/serializers.py:808
+#: part/serializers.py:810
msgid "Include Inherited"
msgstr ""
-#: part/serializers.py:809
+#: part/serializers.py:811
msgid "Include BOM items which are inherited from templated parts"
msgstr ""
-#: part/serializers.py:814
+#: part/serializers.py:816
msgid "Skip Invalid Rows"
msgstr ""
-#: part/serializers.py:815
+#: part/serializers.py:817
msgid "Enable this option to skip invalid rows"
msgstr ""
-#: part/serializers.py:820
+#: part/serializers.py:822
msgid "Copy Substitute Parts"
msgstr ""
-#: part/serializers.py:821
+#: part/serializers.py:823
msgid "Copy substitute parts when duplicate BOM items"
msgstr ""
-#: part/serializers.py:861
+#: part/serializers.py:863
msgid "Clear Existing BOM"
msgstr ""
-#: part/serializers.py:862
+#: part/serializers.py:864
msgid "Delete existing BOM items before uploading"
msgstr ""
-#: part/serializers.py:892
+#: part/serializers.py:894
msgid "No part column specified"
msgstr ""
-#: part/serializers.py:935
+#: part/serializers.py:937
msgid "Multiple matching parts found"
msgstr ""
-#: part/serializers.py:938
+#: part/serializers.py:940
msgid "No matching part found"
msgstr ""
-#: part/serializers.py:941
+#: part/serializers.py:943
msgid "Part is not designated as a component"
msgstr ""
-#: part/serializers.py:950
+#: part/serializers.py:952
msgid "Quantity not provided"
msgstr ""
-#: part/serializers.py:958
+#: part/serializers.py:960
msgid "Invalid quantity"
msgstr ""
-#: part/serializers.py:979
+#: part/serializers.py:981
msgid "At least one BOM item is required"
msgstr ""
@@ -5088,10 +5135,10 @@ msgid "Part is virtual (not a physical part)"
msgstr ""
#: part/templates/part/part_base.html:143
-#: templates/js/translated/company.js:623
-#: templates/js/translated/company.js:882
+#: templates/js/translated/company.js:608
+#: templates/js/translated/company.js:867
#: templates/js/translated/model_renderers.js:192
-#: templates/js/translated/part.js:581 templates/js/translated/part.js:658
+#: templates/js/translated/part.js:625 templates/js/translated/part.js:702
msgid "Inactive"
msgstr ""
@@ -5120,13 +5167,13 @@ msgstr ""
msgid "Allocated to Sales Orders"
msgstr ""
-#: part/templates/part/part_base.html:232 templates/js/translated/bom.js:1009
+#: part/templates/part/part_base.html:232 templates/js/translated/bom.js:1003
msgid "Can Build"
msgstr ""
-#: part/templates/part/part_base.html:238 templates/js/translated/part.js:520
-#: templates/js/translated/part.js:540 templates/js/translated/part.js:1233
-#: templates/js/translated/part.js:1405 templates/js/translated/part.js:1421
+#: part/templates/part/part_base.html:238 templates/js/translated/part.js:564
+#: templates/js/translated/part.js:584 templates/js/translated/part.js:1277
+#: templates/js/translated/part.js:1449 templates/js/translated/part.js:1465
msgid "Building"
msgstr ""
@@ -5143,7 +5190,7 @@ msgstr ""
msgid "Search for serial number"
msgstr ""
-#: part/templates/part/part_base.html:443 part/templates/part/prices.html:147
+#: part/templates/part/part_base.html:443 part/templates/part/prices.html:149
msgid "Calculate"
msgstr ""
@@ -5161,54 +5208,55 @@ msgstr ""
#: part/templates/part/part_pricing.html:26
#: part/templates/part/part_pricing.html:52
-#: part/templates/part/part_pricing.html:100
-#: part/templates/part/part_pricing.html:115 part/templates/part/prices.html:28
-#: part/templates/part/prices.html:55 part/templates/part/prices.html:106
-#: part/templates/part/prices.html:123
+#: part/templates/part/part_pricing.html:103
+#: part/templates/part/part_pricing.html:118 part/templates/part/prices.html:28
+#: part/templates/part/prices.html:55 part/templates/part/prices.html:108
+#: part/templates/part/prices.html:125
msgid "Unit Cost"
msgstr ""
#: part/templates/part/part_pricing.html:32
#: part/templates/part/part_pricing.html:58
-#: part/templates/part/part_pricing.html:104
-#: part/templates/part/part_pricing.html:119 part/templates/part/prices.html:35
-#: part/templates/part/prices.html:62 part/templates/part/prices.html:111
-#: part/templates/part/prices.html:128
+#: part/templates/part/part_pricing.html:107
+#: part/templates/part/part_pricing.html:122 part/templates/part/prices.html:35
+#: part/templates/part/prices.html:62 part/templates/part/prices.html:113
+#: part/templates/part/prices.html:130
msgid "Total Cost"
msgstr ""
#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:43
-#: templates/js/translated/bom.js:963
+#: templates/js/translated/bom.js:957
msgid "No supplier pricing available"
msgstr ""
#: part/templates/part/part_pricing.html:48 part/templates/part/prices.html:52
-#: part/templates/part/prices.html:246
+#: part/templates/part/prices.html:248
msgid "BOM Pricing"
msgstr ""
-#: part/templates/part/part_pricing.html:65 part/templates/part/prices.html:72
+#: part/templates/part/part_pricing.html:66 part/templates/part/prices.html:72
msgid "Unit Purchase Price"
msgstr ""
-#: part/templates/part/part_pricing.html:71 part/templates/part/prices.html:79
+#: part/templates/part/part_pricing.html:72 part/templates/part/prices.html:79
msgid "Total Purchase Price"
msgstr ""
-#: part/templates/part/part_pricing.html:81 part/templates/part/prices.html:89
+#: part/templates/part/part_pricing.html:82 part/templates/part/prices.html:89
msgid "Note: BOM pricing is incomplete for this part"
msgstr ""
-#: part/templates/part/part_pricing.html:88 part/templates/part/prices.html:96
+#: part/templates/part/part_pricing.html:91 part/templates/part/prices.html:98
msgid "No BOM pricing available"
msgstr ""
-#: part/templates/part/part_pricing.html:97 part/templates/part/prices.html:105
+#: part/templates/part/part_pricing.html:100
+#: part/templates/part/prices.html:107
msgid "Internal Price"
msgstr ""
-#: part/templates/part/part_pricing.html:128
-#: part/templates/part/prices.html:137
+#: part/templates/part/part_pricing.html:131
+#: part/templates/part/prices.html:139
msgid "No pricing information is available for this part."
msgstr ""
@@ -5232,43 +5280,6 @@ msgstr ""
msgid "Select from existing images"
msgstr ""
-#: part/templates/part/partial_delete.html:9
-#, python-format
-msgid "Part '%(full_name)s' cannot be deleted as it is still marked as active.\n"
-"
Disable the \"Active\" part attribute and re-try.\n"
-" "
-msgstr ""
-
-#: part/templates/part/partial_delete.html:17
-#, python-format
-msgid "Are you sure you want to delete part '%(full_name)s'?"
-msgstr ""
-
-#: part/templates/part/partial_delete.html:22
-#, python-format
-msgid "This part is used in BOMs for %(count)s other parts. If you delete this part, the BOMs for the following parts will be updated"
-msgstr ""
-
-#: part/templates/part/partial_delete.html:32
-#, python-format
-msgid "There are %(count)s stock entries defined for this part. If you delete this part, the following stock entries will also be deleted:"
-msgstr ""
-
-#: part/templates/part/partial_delete.html:43
-#, python-format
-msgid "There are %(count)s manufacturers defined for this part. If you delete this part, the following manufacturer parts will also be deleted:"
-msgstr ""
-
-#: part/templates/part/partial_delete.html:54
-#, python-format
-msgid "There are %(count)s suppliers defined for this part. If you delete this part, the following supplier parts will also be deleted:"
-msgstr ""
-
-#: part/templates/part/partial_delete.html:67
-#, python-format
-msgid "There are %(count)s unique parts tracked for '%(full_name)s'. Deleting this part will permanently remove this tracking information."
-msgstr ""
-
#: part/templates/part/prices.html:19
msgid "Pricing ranges"
msgstr ""
@@ -5285,66 +5296,58 @@ msgstr ""
msgid "Show BOM cost"
msgstr ""
-#: part/templates/part/prices.html:120
+#: part/templates/part/prices.html:122
msgid "Show sale cost"
msgstr ""
-#: part/templates/part/prices.html:121
+#: part/templates/part/prices.html:123
msgid "Show sale price"
msgstr ""
-#: part/templates/part/prices.html:143
+#: part/templates/part/prices.html:145
msgid "Calculation parameters"
msgstr ""
-#: part/templates/part/prices.html:158 templates/js/translated/bom.js:957
+#: part/templates/part/prices.html:160 templates/js/translated/bom.js:951
msgid "Supplier Cost"
msgstr ""
-#: part/templates/part/prices.html:159 part/templates/part/prices.html:180
-#: part/templates/part/prices.html:204 part/templates/part/prices.html:234
-#: part/templates/part/prices.html:260 part/templates/part/prices.html:289
+#: part/templates/part/prices.html:161 part/templates/part/prices.html:182
+#: part/templates/part/prices.html:206 part/templates/part/prices.html:236
+#: part/templates/part/prices.html:262 part/templates/part/prices.html:291
msgid "Jump to overview"
msgstr ""
-#: part/templates/part/prices.html:184
+#: part/templates/part/prices.html:186
msgid "Stock Pricing"
msgstr ""
-#: part/templates/part/prices.html:193
+#: part/templates/part/prices.html:195
msgid "No stock pricing history is available for this part."
msgstr ""
-#: part/templates/part/prices.html:203
+#: part/templates/part/prices.html:205
msgid "Internal Cost"
msgstr ""
-#: part/templates/part/prices.html:218
+#: part/templates/part/prices.html:220
msgid "Add Internal Price Break"
msgstr ""
-#: part/templates/part/prices.html:233
+#: part/templates/part/prices.html:235
msgid "BOM Cost"
msgstr ""
-#: part/templates/part/prices.html:259
+#: part/templates/part/prices.html:261
msgid "Sale Cost"
msgstr ""
-#: part/templates/part/prices.html:300
+#: part/templates/part/prices.html:302
msgid "No sale pice history available for this part."
msgstr ""
-#: part/templates/part/set_category.html:9
-msgid "Set category for the following parts"
-msgstr ""
-
-#: part/templates/part/set_category.html:32
-msgid "Remove part"
-msgstr ""
-
-#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:543
-#: templates/js/translated/part.js:1221 templates/js/translated/part.js:1425
+#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:587
+#: templates/js/translated/part.js:1265 templates/js/translated/part.js:1469
msgid "No Stock"
msgstr ""
@@ -5407,56 +5410,39 @@ msgstr ""
msgid "{title} v{version}"
msgstr ""
-#: part/views.py:74
-msgid "Set Part Category"
-msgstr ""
-
-#: part/views.py:122
-#, python-brace-format
-msgid "Set category for {n} parts"
-msgstr ""
-
-#: part/views.py:193
+#: part/views.py:118
msgid "Match References"
msgstr ""
-#: part/views.py:494
+#: part/views.py:419
msgid "None"
msgstr ""
-#: part/views.py:556
+#: part/views.py:481
msgid "Part QR Code"
msgstr ""
-#: part/views.py:650
+#: part/views.py:575
msgid "Select Part Image"
msgstr ""
-#: part/views.py:676
+#: part/views.py:601
msgid "Updated part image"
msgstr ""
-#: part/views.py:679
+#: part/views.py:604
msgid "Part image not found"
msgstr ""
-#: part/views.py:768
-msgid "Confirm Part Deletion"
-msgstr ""
-
-#: part/views.py:776
-msgid "Part was deleted"
-msgstr ""
-
-#: part/views.py:785
+#: part/views.py:693
msgid "Part Pricing"
msgstr ""
-#: part/views.py:976
+#: part/views.py:884
msgid "Delete Part Category"
msgstr ""
-#: part/views.py:983
+#: part/views.py:891
msgid "Part category was deleted"
msgstr ""
@@ -5516,21 +5502,21 @@ msgstr ""
msgid "Label printing failed"
msgstr ""
-#: plugin/builtin/integration/core_notifications.py:28
+#: plugin/builtin/integration/core_notifications.py:29
msgid "InvenTree contributors"
msgstr ""
-#: plugin/builtin/integration/core_notifications.py:29
+#: plugin/builtin/integration/core_notifications.py:30
msgid "Integrated outgoing notificaton methods"
msgstr ""
-#: plugin/builtin/integration/core_notifications.py:33
-#: plugin/builtin/integration/core_notifications.py:52
-msgid "Enable email notifications"
-msgstr ""
-
#: plugin/builtin/integration/core_notifications.py:34
#: plugin/builtin/integration/core_notifications.py:53
+msgid "Enable email notifications"
+msgstr ""
+
+#: plugin/builtin/integration/core_notifications.py:35
+#: plugin/builtin/integration/core_notifications.py:54
msgid "Allow sending of emails for event notifications"
msgstr ""
@@ -5646,15 +5632,19 @@ msgstr ""
msgid "Either packagename of URL must be provided"
msgstr ""
-#: report/api.py:166
+#: report/api.py:179
msgid "No valid objects provided to template"
msgstr ""
-#: report/api.py:198 report/api.py:239
+#: report/api.py:215 report/api.py:256
#, python-brace-format
msgid "Template file '{template}' is missing or does not exist"
msgstr ""
+#: report/api.py:359
+msgid "Test report"
+msgstr ""
+
#: report/models.py:152
msgid "Template name"
msgstr ""
@@ -5757,7 +5747,7 @@ msgstr ""
#: templates/js/translated/build.js:1173 templates/js/translated/build.js:1671
#: templates/js/translated/model_renderers.js:106
#: templates/js/translated/order.js:115 templates/js/translated/order.js:3229
-#: templates/js/translated/order.js:3318 templates/js/translated/stock.js:435
+#: templates/js/translated/order.js:3318 templates/js/translated/stock.js:434
msgid "Serial Number"
msgstr ""
@@ -5766,19 +5756,19 @@ msgid "Test Results"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:93
-#: stock/models.py:2068
+#: stock/models.py:2072
msgid "Test"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:94
-#: stock/models.py:2074
+#: stock/models.py:2078
msgid "Result"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:97
#: templates/InvenTree/settings/plugin.html:51
#: templates/InvenTree/settings/plugin_settings.html:38
-#: templates/js/translated/order.js:1669 templates/js/translated/stock.js:2340
+#: templates/js/translated/order.js:1669 templates/js/translated/stock.js:2350
msgid "Date"
msgstr ""
@@ -5796,20 +5786,20 @@ msgid "Installed Items"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:137
-#: templates/js/translated/stock.js:555 templates/js/translated/stock.js:725
-#: templates/js/translated/stock.js:2589
+#: templates/js/translated/stock.js:554 templates/js/translated/stock.js:724
+#: templates/js/translated/stock.js:2599
msgid "Serial"
msgstr ""
-#: stock/api.py:504
+#: stock/api.py:505
msgid "Quantity is required"
msgstr ""
-#: stock/api.py:511
+#: stock/api.py:512
msgid "Valid part must be supplied"
msgstr ""
-#: stock/api.py:536
+#: stock/api.py:537
msgid "Serial numbers cannot be supplied for a non-trackable part"
msgstr ""
@@ -5917,7 +5907,7 @@ msgid "Destination Sales Order"
msgstr ""
#: stock/models.py:690 stock/templates/stock/item_base.html:429
-#: templates/js/translated/stock.js:1816
+#: templates/js/translated/stock.js:1826
msgid "Expiry Date"
msgstr ""
@@ -5971,79 +5961,79 @@ msgstr ""
msgid "Serial numbers already exist: {exists}"
msgstr ""
-#: stock/models.py:1321
+#: stock/models.py:1325
msgid "Stock item has been assigned to a sales order"
msgstr ""
-#: stock/models.py:1324
+#: stock/models.py:1328
msgid "Stock item is installed in another item"
msgstr ""
-#: stock/models.py:1327
+#: stock/models.py:1331
msgid "Stock item contains other items"
msgstr ""
-#: stock/models.py:1330
+#: stock/models.py:1334
msgid "Stock item has been assigned to a customer"
msgstr ""
-#: stock/models.py:1333
+#: stock/models.py:1337
msgid "Stock item is currently in production"
msgstr ""
-#: stock/models.py:1336
+#: stock/models.py:1340
msgid "Serialized stock cannot be merged"
msgstr ""
-#: stock/models.py:1343 stock/serializers.py:908
+#: stock/models.py:1347 stock/serializers.py:895
msgid "Duplicate stock items"
msgstr ""
-#: stock/models.py:1347
+#: stock/models.py:1351
msgid "Stock items must refer to the same part"
msgstr ""
-#: stock/models.py:1351
+#: stock/models.py:1355
msgid "Stock items must refer to the same supplier part"
msgstr ""
-#: stock/models.py:1355
+#: stock/models.py:1359
msgid "Stock status codes must match"
msgstr ""
-#: stock/models.py:1524
+#: stock/models.py:1528
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:1986
+#: stock/models.py:1990
msgid "Entry notes"
msgstr ""
-#: stock/models.py:2044
+#: stock/models.py:2048
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:2050
+#: stock/models.py:2054
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:2069
+#: stock/models.py:2073
msgid "Test name"
msgstr ""
-#: stock/models.py:2075
+#: stock/models.py:2079
msgid "Test result"
msgstr ""
-#: stock/models.py:2081
+#: stock/models.py:2085
msgid "Test output value"
msgstr ""
-#: stock/models.py:2088
+#: stock/models.py:2092
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:2094
+#: stock/models.py:2098
msgid "Test notes"
msgstr ""
@@ -6064,7 +6054,7 @@ msgstr ""
msgid "Enter serial numbers for new items"
msgstr ""
-#: stock/serializers.py:309 stock/serializers.py:865 stock/serializers.py:1098
+#: stock/serializers.py:309 stock/serializers.py:852 stock/serializers.py:1085
msgid "Destination stock location"
msgstr ""
@@ -6104,63 +6094,63 @@ msgstr ""
msgid "Destination location for returned item"
msgstr ""
-#: stock/serializers.py:720
+#: stock/serializers.py:707
msgid "Part must be salable"
msgstr ""
-#: stock/serializers.py:724
+#: stock/serializers.py:711
msgid "Item is allocated to a sales order"
msgstr ""
-#: stock/serializers.py:728
+#: stock/serializers.py:715
msgid "Item is allocated to a build order"
msgstr ""
-#: stock/serializers.py:759
+#: stock/serializers.py:746
msgid "Customer to assign stock items"
msgstr ""
-#: stock/serializers.py:765
+#: stock/serializers.py:752
msgid "Selected company is not a customer"
msgstr ""
-#: stock/serializers.py:773
+#: stock/serializers.py:760
msgid "Stock assignment notes"
msgstr ""
-#: stock/serializers.py:783 stock/serializers.py:1014
+#: stock/serializers.py:770 stock/serializers.py:1001
msgid "A list of stock items must be provided"
msgstr ""
-#: stock/serializers.py:872
+#: stock/serializers.py:859
msgid "Stock merging notes"
msgstr ""
-#: stock/serializers.py:877
+#: stock/serializers.py:864
msgid "Allow mismatched suppliers"
msgstr ""
-#: stock/serializers.py:878
+#: stock/serializers.py:865
msgid "Allow stock items with different supplier parts to be merged"
msgstr ""
-#: stock/serializers.py:883
+#: stock/serializers.py:870
msgid "Allow mismatched status"
msgstr ""
-#: stock/serializers.py:884
+#: stock/serializers.py:871
msgid "Allow stock items with different status codes to be merged"
msgstr ""
-#: stock/serializers.py:894
+#: stock/serializers.py:881
msgid "At least two stock items must be provided"
msgstr ""
-#: stock/serializers.py:976
+#: stock/serializers.py:963
msgid "StockItem primary key value"
msgstr ""
-#: stock/serializers.py:1004
+#: stock/serializers.py:991
msgid "Stock transaction notes"
msgstr ""
@@ -6185,7 +6175,7 @@ msgstr ""
msgid "Test Report"
msgstr ""
-#: stock/templates/stock/item.html:94
+#: stock/templates/stock/item.html:94 stock/templates/stock/item.html:298
msgid "Delete Test Data"
msgstr ""
@@ -6197,11 +6187,15 @@ msgstr ""
msgid "Installed Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:151 templates/js/translated/stock.js:2733
+#: stock/templates/stock/item.html:151 templates/js/translated/stock.js:2743
msgid "Install Stock Item"
msgstr ""
-#: stock/templates/stock/item.html:292 templates/js/translated/stock.js:1455
+#: stock/templates/stock/item.html:290
+msgid "Delete all test results for this stock item"
+msgstr ""
+
+#: stock/templates/stock/item.html:323 templates/js/translated/stock.js:1465
msgid "Add Test Result"
msgstr ""
@@ -6388,7 +6382,7 @@ msgid "Stale"
msgstr ""
#: stock/templates/stock/item_base.html:442
-#: templates/js/translated/stock.js:1832
+#: templates/js/translated/stock.js:1842
msgid "Last Updated"
msgstr ""
@@ -6529,7 +6523,7 @@ msgstr ""
msgid "Child Items"
msgstr ""
-#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:182
+#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:144
msgid "Convert Stock Item"
msgstr ""
@@ -6550,31 +6544,19 @@ msgstr ""
msgid "This action cannot be easily undone"
msgstr ""
-#: stock/views.py:113
+#: stock/views.py:111
msgid "Stock Location QR code"
msgstr ""
-#: stock/views.py:131
-msgid "Delete All Test Data"
-msgstr ""
-
-#: stock/views.py:149
-msgid "Confirm test data deletion"
-msgstr ""
-
-#: stock/views.py:150
-msgid "Check the confirmation box"
-msgstr ""
-
-#: stock/views.py:165
+#: stock/views.py:127
msgid "Stock Item QR Code"
msgstr ""
-#: stock/views.py:216
+#: stock/views.py:178
msgid "Delete Stock Location"
msgstr ""
-#: stock/views.py:229
+#: stock/views.py:191
msgid "Delete Stock Item"
msgstr ""
@@ -7317,8 +7299,8 @@ msgstr ""
#: templates/about.html:11 templates/about.html:105
#: templates/js/translated/bom.js:133 templates/js/translated/bom.js:621
-#: templates/js/translated/modals.js:56 templates/js/translated/modals.js:595
-#: templates/js/translated/modals.js:689 templates/js/translated/modals.js:997
+#: templates/js/translated/modals.js:56 templates/js/translated/modals.js:601
+#: templates/js/translated/modals.js:695 templates/js/translated/modals.js:1003
#: templates/js/translated/order.js:928 templates/modals.html:15
#: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50
msgid "Close"
@@ -7390,6 +7372,10 @@ msgstr ""
msgid "Please confirm that %(email)s is an email address for user %(user_display)s."
msgstr ""
+#: templates/account/email_confirm.html:20 templates/js/translated/forms.js:630
+msgid "Confirm"
+msgstr "Konfirmasi"
+
#: templates/account/email_confirm.html:27
#, python-format
msgid "This email confirmation link expired or is invalid. Please issue a new email confirmation request."
@@ -7562,7 +7548,7 @@ msgstr ""
msgid "Delete selected attachments"
msgstr ""
-#: templates/attachment_table.html:12 templates/js/translated/attachment.js:110
+#: templates/attachment_table.html:12 templates/js/translated/attachment.js:112
msgid "Delete Attachments"
msgstr ""
@@ -7596,15 +7582,15 @@ msgid "The following parts are low on required stock"
msgstr ""
#: templates/email/build_order_required_stock.html:18
-#: templates/js/translated/bom.js:1425
+#: templates/js/translated/bom.js:1419
msgid "Required Quantity"
msgstr ""
#: templates/email/build_order_required_stock.html:19
#: templates/email/low_stock_notification.html:18
-#: templates/js/translated/bom.js:890 templates/js/translated/build.js:1787
-#: templates/js/translated/build.js:2650 templates/js/translated/part.js:527
-#: templates/js/translated/part.js:530
+#: templates/js/translated/bom.js:884 templates/js/translated/build.js:1787
+#: templates/js/translated/build.js:2650 templates/js/translated/part.js:571
+#: templates/js/translated/part.js:574
#: templates/js/translated/table_filters.js:178
msgid "Available"
msgstr ""
@@ -7622,6 +7608,13 @@ msgstr ""
msgid "Minimum Quantity"
msgstr ""
+#: templates/email/new_order_assigned.html:9
+#: templates/email/overdue_build_order.html:9
+#: templates/email/overdue_purchase_order.html:9
+#: templates/email/overdue_sales_order.html:9
+msgid "Click on the following link to view this order"
+msgstr ""
+
#: templates/image_download.html:8
msgid "Specify URL for downloading image"
msgstr ""
@@ -7638,91 +7631,91 @@ msgstr ""
msgid "Remote image must not exceed maximum allowable file size"
msgstr ""
-#: templates/js/translated/api.js:235 templates/js/translated/modals.js:1067
+#: templates/js/translated/api.js:195 templates/js/translated/modals.js:1073
msgid "No Response"
msgstr ""
-#: templates/js/translated/api.js:236 templates/js/translated/modals.js:1068
+#: templates/js/translated/api.js:196 templates/js/translated/modals.js:1074
msgid "No response from the InvenTree server"
msgstr ""
-#: templates/js/translated/api.js:242
+#: templates/js/translated/api.js:202
msgid "Error 400: Bad request"
msgstr ""
-#: templates/js/translated/api.js:243
+#: templates/js/translated/api.js:203
msgid "API request returned error code 400"
msgstr ""
-#: templates/js/translated/api.js:247 templates/js/translated/modals.js:1077
+#: templates/js/translated/api.js:207 templates/js/translated/modals.js:1083
msgid "Error 401: Not Authenticated"
msgstr ""
-#: templates/js/translated/api.js:248 templates/js/translated/modals.js:1078
+#: templates/js/translated/api.js:208 templates/js/translated/modals.js:1084
msgid "Authentication credentials not supplied"
msgstr ""
-#: templates/js/translated/api.js:252 templates/js/translated/modals.js:1082
+#: templates/js/translated/api.js:212 templates/js/translated/modals.js:1088
msgid "Error 403: Permission Denied"
msgstr ""
-#: templates/js/translated/api.js:253 templates/js/translated/modals.js:1083
+#: templates/js/translated/api.js:213 templates/js/translated/modals.js:1089
msgid "You do not have the required permissions to access this function"
msgstr ""
-#: templates/js/translated/api.js:257 templates/js/translated/modals.js:1087
+#: templates/js/translated/api.js:217 templates/js/translated/modals.js:1093
msgid "Error 404: Resource Not Found"
msgstr ""
-#: templates/js/translated/api.js:258 templates/js/translated/modals.js:1088
+#: templates/js/translated/api.js:218 templates/js/translated/modals.js:1094
msgid "The requested resource could not be located on the server"
msgstr ""
-#: templates/js/translated/api.js:262
+#: templates/js/translated/api.js:222
msgid "Error 405: Method Not Allowed"
msgstr ""
-#: templates/js/translated/api.js:263
+#: templates/js/translated/api.js:223
msgid "HTTP method not allowed at URL"
msgstr ""
-#: templates/js/translated/api.js:267 templates/js/translated/modals.js:1092
+#: templates/js/translated/api.js:227 templates/js/translated/modals.js:1098
msgid "Error 408: Timeout"
msgstr ""
-#: templates/js/translated/api.js:268 templates/js/translated/modals.js:1093
+#: templates/js/translated/api.js:228 templates/js/translated/modals.js:1099
msgid "Connection timeout while requesting data from server"
msgstr ""
-#: templates/js/translated/api.js:271
+#: templates/js/translated/api.js:231
msgid "Unhandled Error Code"
msgstr ""
-#: templates/js/translated/api.js:272
+#: templates/js/translated/api.js:232
msgid "Error code"
msgstr ""
-#: templates/js/translated/attachment.js:96
+#: templates/js/translated/attachment.js:98
msgid "All selected attachments will be deleted"
msgstr ""
-#: templates/js/translated/attachment.js:156
+#: templates/js/translated/attachment.js:152
msgid "No attachments found"
msgstr ""
-#: templates/js/translated/attachment.js:180
+#: templates/js/translated/attachment.js:176
msgid "Edit Attachment"
msgstr ""
-#: templates/js/translated/attachment.js:246
+#: templates/js/translated/attachment.js:242
msgid "Upload Date"
msgstr ""
-#: templates/js/translated/attachment.js:262
+#: templates/js/translated/attachment.js:264
msgid "Edit attachment"
msgstr ""
-#: templates/js/translated/attachment.js:269
+#: templates/js/translated/attachment.js:271
msgid "Delete attachment"
msgstr ""
@@ -7755,7 +7748,7 @@ msgid "Unknown response from server"
msgstr ""
#: templates/js/translated/barcode.js:182
-#: templates/js/translated/modals.js:1057
+#: templates/js/translated/modals.js:1063
msgid "Invalid server response"
msgstr ""
@@ -7783,7 +7776,7 @@ msgstr ""
msgid "Unlink"
msgstr ""
-#: templates/js/translated/barcode.js:456 templates/js/translated/stock.js:999
+#: templates/js/translated/barcode.js:456 templates/js/translated/stock.js:998
msgid "Remove stock item"
msgstr ""
@@ -7918,89 +7911,89 @@ msgstr ""
msgid "Edit BOM Item Substitutes"
msgstr ""
-#: templates/js/translated/bom.js:682
+#: templates/js/translated/bom.js:684
msgid "All selected BOM items will be deleted"
msgstr ""
-#: templates/js/translated/bom.js:697
+#: templates/js/translated/bom.js:699
msgid "Delete selected BOM items?"
msgstr ""
-#: templates/js/translated/bom.js:824
+#: templates/js/translated/bom.js:818
msgid "Load BOM for subassembly"
msgstr ""
-#: templates/js/translated/bom.js:834
+#: templates/js/translated/bom.js:828
msgid "Substitutes Available"
msgstr ""
-#: templates/js/translated/bom.js:838 templates/js/translated/build.js:1769
+#: templates/js/translated/bom.js:832 templates/js/translated/build.js:1769
msgid "Variant stock allowed"
msgstr ""
-#: templates/js/translated/bom.js:906 templates/js/translated/build.js:1814
+#: templates/js/translated/bom.js:900 templates/js/translated/build.js:1814
#: templates/js/translated/order.js:3562
msgid "No Stock Available"
msgstr ""
-#: templates/js/translated/bom.js:910 templates/js/translated/build.js:1818
+#: templates/js/translated/bom.js:904 templates/js/translated/build.js:1818
msgid "Includes variant and substitute stock"
msgstr ""
-#: templates/js/translated/bom.js:912 templates/js/translated/build.js:1820
-#: templates/js/translated/part.js:690
+#: templates/js/translated/bom.js:906 templates/js/translated/build.js:1820
+#: templates/js/translated/part.js:734
msgid "Includes variant stock"
msgstr ""
-#: templates/js/translated/bom.js:914 templates/js/translated/build.js:1822
+#: templates/js/translated/bom.js:908 templates/js/translated/build.js:1822
msgid "Includes substitute stock"
msgstr ""
-#: templates/js/translated/bom.js:928
+#: templates/js/translated/bom.js:922
msgid "Substitutes"
msgstr ""
-#: templates/js/translated/bom.js:943
+#: templates/js/translated/bom.js:937
msgid "Purchase Price Range"
msgstr ""
-#: templates/js/translated/bom.js:950
+#: templates/js/translated/bom.js:944
msgid "Purchase Price Average"
msgstr ""
-#: templates/js/translated/bom.js:999 templates/js/translated/bom.js:1090
+#: templates/js/translated/bom.js:993 templates/js/translated/bom.js:1084
msgid "View BOM"
msgstr ""
-#: templates/js/translated/bom.js:1061
+#: templates/js/translated/bom.js:1055
msgid "Validate BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:1063
+#: templates/js/translated/bom.js:1057
msgid "This line has been validated"
msgstr ""
-#: templates/js/translated/bom.js:1065
+#: templates/js/translated/bom.js:1059
msgid "Edit substitute parts"
msgstr ""
-#: templates/js/translated/bom.js:1067 templates/js/translated/bom.js:1228
+#: templates/js/translated/bom.js:1061 templates/js/translated/bom.js:1222
msgid "Edit BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:1069
+#: templates/js/translated/bom.js:1063
msgid "Delete BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:1164 templates/js/translated/build.js:1615
+#: templates/js/translated/bom.js:1158 templates/js/translated/build.js:1615
msgid "No BOM items found"
msgstr ""
-#: templates/js/translated/bom.js:1408 templates/js/translated/build.js:1753
+#: templates/js/translated/bom.js:1402 templates/js/translated/build.js:1753
msgid "Required Part"
msgstr ""
-#: templates/js/translated/bom.js:1430
+#: templates/js/translated/bom.js:1424
msgid "Inherited from parent BOM"
msgstr ""
@@ -8040,13 +8033,13 @@ msgstr ""
msgid "Complete Build Order"
msgstr ""
-#: templates/js/translated/build.js:259 templates/js/translated/stock.js:91
-#: templates/js/translated/stock.js:181
+#: templates/js/translated/build.js:259 templates/js/translated/stock.js:90
+#: templates/js/translated/stock.js:180
msgid "Next available serial number"
msgstr ""
-#: templates/js/translated/build.js:261 templates/js/translated/stock.js:93
-#: templates/js/translated/stock.js:183
+#: templates/js/translated/build.js:261 templates/js/translated/stock.js:92
+#: templates/js/translated/stock.js:182
msgid "Latest serial number"
msgstr ""
@@ -8259,9 +8252,9 @@ msgstr ""
msgid "No builds matching query"
msgstr ""
-#: templates/js/translated/build.js:2448 templates/js/translated/part.js:1314
-#: templates/js/translated/part.js:1729 templates/js/translated/stock.js:1619
-#: templates/js/translated/stock.js:2277
+#: templates/js/translated/build.js:2448 templates/js/translated/part.js:1358
+#: templates/js/translated/part.js:1825 templates/js/translated/stock.js:1629
+#: templates/js/translated/stock.js:2287
msgid "Select"
msgstr ""
@@ -8273,7 +8266,7 @@ msgstr ""
msgid "Progress"
msgstr ""
-#: templates/js/translated/build.js:2532 templates/js/translated/stock.js:2519
+#: templates/js/translated/build.js:2532 templates/js/translated/stock.js:2529
msgid "No user information"
msgstr ""
@@ -8285,107 +8278,107 @@ msgstr ""
msgid "No parts allocated for"
msgstr ""
-#: templates/js/translated/company.js:66
+#: templates/js/translated/company.js:65
msgid "Add Manufacturer"
msgstr ""
-#: templates/js/translated/company.js:79 templates/js/translated/company.js:169
+#: templates/js/translated/company.js:78 templates/js/translated/company.js:168
msgid "Add Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:100
+#: templates/js/translated/company.js:99
msgid "Edit Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:157 templates/js/translated/order.js:506
+#: templates/js/translated/company.js:156 templates/js/translated/order.js:506
msgid "Add Supplier"
msgstr ""
-#: templates/js/translated/company.js:185
+#: templates/js/translated/company.js:184
msgid "Add Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:200
+#: templates/js/translated/company.js:199
msgid "Edit Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:248
+#: templates/js/translated/company.js:249
msgid "All selected supplier parts will be deleted"
msgstr ""
-#: templates/js/translated/company.js:263
+#: templates/js/translated/company.js:264
msgid "Delete Supplier Parts"
msgstr ""
-#: templates/js/translated/company.js:342
+#: templates/js/translated/company.js:336
msgid "Add new Company"
msgstr ""
-#: templates/js/translated/company.js:419
+#: templates/js/translated/company.js:413
msgid "Parts Supplied"
msgstr ""
-#: templates/js/translated/company.js:428
+#: templates/js/translated/company.js:422
msgid "Parts Manufactured"
msgstr ""
-#: templates/js/translated/company.js:443
+#: templates/js/translated/company.js:437
msgid "No company information found"
msgstr ""
-#: templates/js/translated/company.js:482
+#: templates/js/translated/company.js:478
msgid "All selected manufacturer parts will be deleted"
msgstr ""
-#: templates/js/translated/company.js:496
+#: templates/js/translated/company.js:492
msgid "Delete Manufacturer Parts"
msgstr ""
-#: templates/js/translated/company.js:535
+#: templates/js/translated/company.js:526
msgid "All selected parameters will be deleted"
msgstr ""
-#: templates/js/translated/company.js:548
+#: templates/js/translated/company.js:539
msgid "Delete Parameters"
msgstr ""
-#: templates/js/translated/company.js:595
+#: templates/js/translated/company.js:580
msgid "No manufacturer parts found"
msgstr ""
-#: templates/js/translated/company.js:615
-#: templates/js/translated/company.js:874 templates/js/translated/part.js:565
-#: templates/js/translated/part.js:650
+#: templates/js/translated/company.js:600
+#: templates/js/translated/company.js:859 templates/js/translated/part.js:609
+#: templates/js/translated/part.js:694
msgid "Template part"
msgstr ""
-#: templates/js/translated/company.js:619
-#: templates/js/translated/company.js:878 templates/js/translated/part.js:569
-#: templates/js/translated/part.js:654
+#: templates/js/translated/company.js:604
+#: templates/js/translated/company.js:863 templates/js/translated/part.js:613
+#: templates/js/translated/part.js:698
msgid "Assembled part"
msgstr ""
-#: templates/js/translated/company.js:747 templates/js/translated/part.js:757
+#: templates/js/translated/company.js:732 templates/js/translated/part.js:801
msgid "No parameters found"
msgstr ""
-#: templates/js/translated/company.js:784 templates/js/translated/part.js:799
+#: templates/js/translated/company.js:769 templates/js/translated/part.js:843
msgid "Edit parameter"
msgstr ""
-#: templates/js/translated/company.js:785 templates/js/translated/part.js:800
+#: templates/js/translated/company.js:770 templates/js/translated/part.js:844
msgid "Delete parameter"
msgstr ""
-#: templates/js/translated/company.js:804 templates/js/translated/part.js:817
+#: templates/js/translated/company.js:789 templates/js/translated/part.js:861
msgid "Edit Parameter"
msgstr ""
-#: templates/js/translated/company.js:815 templates/js/translated/part.js:829
+#: templates/js/translated/company.js:800 templates/js/translated/part.js:873
msgid "Delete Parameter"
msgstr ""
-#: templates/js/translated/company.js:854
+#: templates/js/translated/company.js:839
msgid "No supplier parts found"
msgstr ""
@@ -8448,36 +8441,36 @@ msgstr ""
msgid "Keep this form open"
msgstr ""
-#: templates/js/translated/forms.js:756
+#: templates/js/translated/forms.js:757
msgid "Enter a valid number"
msgstr ""
-#: templates/js/translated/forms.js:1248 templates/modals.html:19
+#: templates/js/translated/forms.js:1249 templates/modals.html:19
#: templates/modals.html:43
msgid "Form errors exist"
msgstr ""
-#: templates/js/translated/forms.js:1681
+#: templates/js/translated/forms.js:1682
msgid "No results found"
msgstr ""
-#: templates/js/translated/forms.js:1896 templates/search.html:29
+#: templates/js/translated/forms.js:1897 templates/search.html:29
msgid "Searching"
msgstr ""
-#: templates/js/translated/forms.js:2149
+#: templates/js/translated/forms.js:2150
msgid "Clear input"
msgstr ""
-#: templates/js/translated/forms.js:2615
+#: templates/js/translated/forms.js:2616
msgid "File Column"
msgstr ""
-#: templates/js/translated/forms.js:2615
+#: templates/js/translated/forms.js:2616
msgid "Field Name"
msgstr ""
-#: templates/js/translated/forms.js:2627
+#: templates/js/translated/forms.js:2628
msgid "Select Columns"
msgstr ""
@@ -8498,7 +8491,7 @@ msgid "Labels sent to printer"
msgstr ""
#: templates/js/translated/label.js:60 templates/js/translated/report.js:118
-#: templates/js/translated/stock.js:1023
+#: templates/js/translated/stock.js:1022
msgid "Select Stock Items"
msgstr ""
@@ -8552,12 +8545,12 @@ msgid "Select Label Template"
msgstr ""
#: templates/js/translated/modals.js:82 templates/js/translated/modals.js:142
-#: templates/js/translated/modals.js:621
+#: templates/js/translated/modals.js:627
msgid "Cancel"
msgstr ""
#: templates/js/translated/modals.js:83 templates/js/translated/modals.js:141
-#: templates/js/translated/modals.js:688 templates/js/translated/modals.js:996
+#: templates/js/translated/modals.js:694 templates/js/translated/modals.js:1002
#: templates/modals.html:28 templates/modals.html:51
msgid "Submit"
msgstr ""
@@ -8566,47 +8559,47 @@ msgstr ""
msgid "Form Title"
msgstr ""
-#: templates/js/translated/modals.js:403
+#: templates/js/translated/modals.js:421
msgid "Waiting for server..."
msgstr ""
-#: templates/js/translated/modals.js:562
+#: templates/js/translated/modals.js:568
msgid "Show Error Information"
msgstr ""
-#: templates/js/translated/modals.js:620
+#: templates/js/translated/modals.js:626
msgid "Accept"
msgstr ""
-#: templates/js/translated/modals.js:677
+#: templates/js/translated/modals.js:683
msgid "Loading Data"
msgstr ""
-#: templates/js/translated/modals.js:948
+#: templates/js/translated/modals.js:954
msgid "Invalid response from server"
msgstr ""
-#: templates/js/translated/modals.js:948
+#: templates/js/translated/modals.js:954
msgid "Form data missing from server response"
msgstr ""
-#: templates/js/translated/modals.js:960
+#: templates/js/translated/modals.js:966
msgid "Error posting form data"
msgstr ""
-#: templates/js/translated/modals.js:1057
+#: templates/js/translated/modals.js:1063
msgid "JSON response missing form data"
msgstr ""
-#: templates/js/translated/modals.js:1072
+#: templates/js/translated/modals.js:1078
msgid "Error 400: Bad Request"
msgstr ""
-#: templates/js/translated/modals.js:1073
+#: templates/js/translated/modals.js:1079
msgid "Server returned error code 400"
msgstr ""
-#: templates/js/translated/modals.js:1096
+#: templates/js/translated/modals.js:1102
msgid "Error requesting form data"
msgstr ""
@@ -8656,11 +8649,11 @@ msgstr ""
msgid "Mark as read"
msgstr ""
-#: templates/js/translated/notification.js:259
+#: templates/js/translated/notification.js:260
msgid "No unread notifications"
msgstr ""
-#: templates/js/translated/notification.js:300 templates/notifications.html:10
+#: templates/js/translated/notification.js:302 templates/notifications.html:10
msgid "Notifications will load here"
msgstr ""
@@ -8804,7 +8797,7 @@ msgstr ""
msgid "Quantity to receive"
msgstr ""
-#: templates/js/translated/order.js:1225 templates/js/translated/stock.js:2080
+#: templates/js/translated/order.js:1225 templates/js/translated/stock.js:2090
msgid "Stock Status"
msgstr ""
@@ -8828,7 +8821,7 @@ msgstr ""
msgid "Receive Purchase Order Items"
msgstr ""
-#: templates/js/translated/order.js:1602 templates/js/translated/part.js:870
+#: templates/js/translated/order.js:1602 templates/js/translated/part.js:914
msgid "No purchase orders found"
msgstr ""
@@ -8863,7 +8856,7 @@ msgstr ""
#: templates/js/translated/order.js:1937 templates/js/translated/order.js:2139
#: templates/js/translated/order.js:3467 templates/js/translated/order.js:3978
-#: templates/js/translated/part.js:1948 templates/js/translated/part.js:2301
+#: templates/js/translated/part.js:2044 templates/js/translated/part.js:2397
msgid "Unit Price"
msgstr ""
@@ -8873,11 +8866,11 @@ msgid "Total Price"
msgstr ""
#: templates/js/translated/order.js:1993 templates/js/translated/order.js:3525
-#: templates/js/translated/part.js:979
+#: templates/js/translated/part.js:1023
msgid "This line item is overdue"
msgstr ""
-#: templates/js/translated/order.js:2052 templates/js/translated/part.js:1025
+#: templates/js/translated/order.js:2052 templates/js/translated/part.js:1069
msgid "Receive line item"
msgstr ""
@@ -8998,7 +8991,7 @@ msgid "Delete Stock Allocation"
msgstr ""
#: templates/js/translated/order.js:3243 templates/js/translated/order.js:3332
-#: templates/js/translated/stock.js:1535
+#: templates/js/translated/stock.js:1545
msgid "Shipped to customer"
msgstr ""
@@ -9138,165 +9131,209 @@ msgstr ""
msgid "Create Part Variant"
msgstr ""
+#: templates/js/translated/part.js:405
+msgid "Active Part"
+msgstr ""
+
+#: templates/js/translated/part.js:406
+msgid "Part cannot be deleted as it is currently active"
+msgstr ""
+
+#: templates/js/translated/part.js:420
+msgid "Deleting this part cannot be reversed"
+msgstr ""
+
+#: templates/js/translated/part.js:422
+msgid "Any stock items for this part will be deleted"
+msgstr ""
+
#: templates/js/translated/part.js:423
+msgid "This part will be removed from any Bills of Material"
+msgstr ""
+
+#: templates/js/translated/part.js:424
+msgid "All manufacturer and supplier information for this part will be deleted"
+msgstr ""
+
+#: templates/js/translated/part.js:431
+msgid "Delete Part"
+msgstr ""
+
+#: templates/js/translated/part.js:467
msgid "You are subscribed to notifications for this item"
msgstr ""
-#: templates/js/translated/part.js:425
+#: templates/js/translated/part.js:469
msgid "You have subscribed to notifications for this item"
msgstr ""
-#: templates/js/translated/part.js:430
+#: templates/js/translated/part.js:474
msgid "Subscribe to notifications for this item"
msgstr ""
-#: templates/js/translated/part.js:432
+#: templates/js/translated/part.js:476
msgid "You have unsubscribed to notifications for this item"
msgstr ""
-#: templates/js/translated/part.js:449
+#: templates/js/translated/part.js:493
msgid "Validating the BOM will mark each line item as valid"
msgstr ""
-#: templates/js/translated/part.js:459
+#: templates/js/translated/part.js:503
msgid "Validate Bill of Materials"
msgstr ""
-#: templates/js/translated/part.js:462
+#: templates/js/translated/part.js:506
msgid "Validated Bill of Materials"
msgstr ""
-#: templates/js/translated/part.js:487
+#: templates/js/translated/part.js:531
msgid "Copy Bill of Materials"
msgstr ""
-#: templates/js/translated/part.js:513 templates/js/translated/part.js:1397
+#: templates/js/translated/part.js:557 templates/js/translated/part.js:1441
#: templates/js/translated/table_filters.js:452
msgid "Low stock"
msgstr ""
-#: templates/js/translated/part.js:523 templates/js/translated/part.js:1409
+#: templates/js/translated/part.js:567 templates/js/translated/part.js:1453
msgid "No stock available"
msgstr ""
-#: templates/js/translated/part.js:557 templates/js/translated/part.js:642
+#: templates/js/translated/part.js:601 templates/js/translated/part.js:686
msgid "Trackable part"
msgstr ""
-#: templates/js/translated/part.js:561 templates/js/translated/part.js:646
+#: templates/js/translated/part.js:605 templates/js/translated/part.js:690
msgid "Virtual part"
msgstr ""
-#: templates/js/translated/part.js:573
+#: templates/js/translated/part.js:617
msgid "Subscribed part"
msgstr ""
-#: templates/js/translated/part.js:577
+#: templates/js/translated/part.js:621
msgid "Salable part"
msgstr ""
-#: templates/js/translated/part.js:705
+#: templates/js/translated/part.js:749
msgid "No variants found"
msgstr ""
-#: templates/js/translated/part.js:1095
+#: templates/js/translated/part.js:1139
msgid "Delete part relationship"
msgstr ""
-#: templates/js/translated/part.js:1119
+#: templates/js/translated/part.js:1163
msgid "Delete Part Relationship"
msgstr ""
-#: templates/js/translated/part.js:1184 templates/js/translated/part.js:1480
+#: templates/js/translated/part.js:1228 templates/js/translated/part.js:1524
msgid "No parts found"
msgstr ""
-#: templates/js/translated/part.js:1223
+#: templates/js/translated/part.js:1267
msgid "Not available"
msgstr ""
-#: templates/js/translated/part.js:1374
+#: templates/js/translated/part.js:1418
msgid "No category"
msgstr ""
-#: templates/js/translated/part.js:1504 templates/js/translated/part.js:1664
-#: templates/js/translated/stock.js:2238
+#: templates/js/translated/part.js:1548 templates/js/translated/part.js:1760
+#: templates/js/translated/stock.js:2248
msgid "Display as list"
msgstr ""
-#: templates/js/translated/part.js:1520
+#: templates/js/translated/part.js:1564
msgid "Display as grid"
msgstr ""
-#: templates/js/translated/part.js:1683 templates/js/translated/stock.js:2257
+#: templates/js/translated/part.js:1630
+msgid "Set the part category for the selected parts"
+msgstr ""
+
+#: templates/js/translated/part.js:1635
+msgid "Set Part Category"
+msgstr ""
+
+#: templates/js/translated/part.js:1640
+msgid "Select Part Category"
+msgstr ""
+
+#: templates/js/translated/part.js:1653
+msgid "Category is required"
+msgstr ""
+
+#: templates/js/translated/part.js:1779 templates/js/translated/stock.js:2267
msgid "Display as tree"
msgstr ""
-#: templates/js/translated/part.js:1747
+#: templates/js/translated/part.js:1843
msgid "Subscribed category"
msgstr ""
-#: templates/js/translated/part.js:1761 templates/js/translated/stock.js:2301
+#: templates/js/translated/part.js:1857 templates/js/translated/stock.js:2311
msgid "Path"
msgstr ""
-#: templates/js/translated/part.js:1805
+#: templates/js/translated/part.js:1901
msgid "No test templates matching query"
msgstr ""
-#: templates/js/translated/part.js:1856 templates/js/translated/stock.js:1233
+#: templates/js/translated/part.js:1952 templates/js/translated/stock.js:1243
msgid "Edit test result"
msgstr ""
-#: templates/js/translated/part.js:1857 templates/js/translated/stock.js:1234
-#: templates/js/translated/stock.js:1493
+#: templates/js/translated/part.js:1953 templates/js/translated/stock.js:1244
+#: templates/js/translated/stock.js:1503
msgid "Delete test result"
msgstr ""
-#: templates/js/translated/part.js:1863
+#: templates/js/translated/part.js:1959
msgid "This test is defined for a parent part"
msgstr ""
-#: templates/js/translated/part.js:1885
+#: templates/js/translated/part.js:1981
msgid "Edit Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:1899
+#: templates/js/translated/part.js:1995
msgid "Delete Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:1924
+#: templates/js/translated/part.js:2020
#, python-brace-format
msgid "No ${human_name} information found"
msgstr ""
-#: templates/js/translated/part.js:1981
+#: templates/js/translated/part.js:2077
#, python-brace-format
msgid "Edit ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:1982
+#: templates/js/translated/part.js:2078
#, python-brace-format
msgid "Delete ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:2096
+#: templates/js/translated/part.js:2192
msgid "Current Stock"
msgstr ""
-#: templates/js/translated/part.js:2129
+#: templates/js/translated/part.js:2225
msgid "No scheduling information available for this part"
msgstr ""
-#: templates/js/translated/part.js:2155
+#: templates/js/translated/part.js:2251
msgid "Scheduled Stock Quantities"
msgstr ""
-#: templates/js/translated/part.js:2225
+#: templates/js/translated/part.js:2321
msgid "Single Price"
msgstr ""
-#: templates/js/translated/part.js:2244
+#: templates/js/translated/part.js:2340
msgid "Single Price Difference"
msgstr ""
@@ -9378,360 +9415,360 @@ msgstr ""
msgid "Remove results"
msgstr ""
-#: templates/js/translated/stock.js:73
+#: templates/js/translated/stock.js:72
msgid "Serialize Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:101
+#: templates/js/translated/stock.js:100
msgid "Confirm Stock Serialization"
msgstr ""
-#: templates/js/translated/stock.js:110
+#: templates/js/translated/stock.js:109
msgid "Parent stock location"
msgstr ""
-#: templates/js/translated/stock.js:139
+#: templates/js/translated/stock.js:138
msgid "Edit Stock Location"
msgstr ""
-#: templates/js/translated/stock.js:154
+#: templates/js/translated/stock.js:153
msgid "New Stock Location"
msgstr ""
-#: templates/js/translated/stock.js:194
+#: templates/js/translated/stock.js:193
msgid "This part cannot be serialized"
msgstr ""
-#: templates/js/translated/stock.js:233
+#: templates/js/translated/stock.js:232
msgid "Enter initial quantity for this stock item"
msgstr ""
-#: templates/js/translated/stock.js:239
+#: templates/js/translated/stock.js:238
msgid "Enter serial numbers for new stock (or leave blank)"
msgstr ""
-#: templates/js/translated/stock.js:304
+#: templates/js/translated/stock.js:303
msgid "Stock item duplicated"
msgstr ""
-#: templates/js/translated/stock.js:324
+#: templates/js/translated/stock.js:323
msgid "Duplicate Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:344
+#: templates/js/translated/stock.js:343
msgid "Edit Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:394
+#: templates/js/translated/stock.js:393
msgid "Created new stock item"
msgstr ""
-#: templates/js/translated/stock.js:407
+#: templates/js/translated/stock.js:406
msgid "Created multiple stock items"
msgstr ""
-#: templates/js/translated/stock.js:432
+#: templates/js/translated/stock.js:431
msgid "Find Serial Number"
msgstr ""
-#: templates/js/translated/stock.js:436 templates/js/translated/stock.js:437
+#: templates/js/translated/stock.js:435 templates/js/translated/stock.js:436
msgid "Enter serial number"
msgstr ""
-#: templates/js/translated/stock.js:453
+#: templates/js/translated/stock.js:452
msgid "Enter a serial number"
msgstr ""
-#: templates/js/translated/stock.js:473
+#: templates/js/translated/stock.js:472
msgid "No matching serial number"
msgstr ""
-#: templates/js/translated/stock.js:482
+#: templates/js/translated/stock.js:481
msgid "More than one matching result found"
msgstr ""
-#: templates/js/translated/stock.js:605
+#: templates/js/translated/stock.js:604
msgid "Confirm stock assignment"
msgstr ""
-#: templates/js/translated/stock.js:606
+#: templates/js/translated/stock.js:605
msgid "Assign Stock to Customer"
msgstr ""
-#: templates/js/translated/stock.js:683
+#: templates/js/translated/stock.js:682
msgid "Warning: Merge operation cannot be reversed"
msgstr ""
-#: templates/js/translated/stock.js:684
+#: templates/js/translated/stock.js:683
msgid "Some information will be lost when merging stock items"
msgstr ""
-#: templates/js/translated/stock.js:686
+#: templates/js/translated/stock.js:685
msgid "Stock transaction history will be deleted for merged items"
msgstr ""
-#: templates/js/translated/stock.js:687
+#: templates/js/translated/stock.js:686
msgid "Supplier part information will be deleted for merged items"
msgstr ""
-#: templates/js/translated/stock.js:773
+#: templates/js/translated/stock.js:772
msgid "Confirm stock item merge"
msgstr ""
-#: templates/js/translated/stock.js:774
+#: templates/js/translated/stock.js:773
msgid "Merge Stock Items"
msgstr ""
-#: templates/js/translated/stock.js:869
+#: templates/js/translated/stock.js:868
msgid "Transfer Stock"
msgstr ""
-#: templates/js/translated/stock.js:870
+#: templates/js/translated/stock.js:869
msgid "Move"
msgstr ""
-#: templates/js/translated/stock.js:876
+#: templates/js/translated/stock.js:875
msgid "Count Stock"
msgstr ""
-#: templates/js/translated/stock.js:877
+#: templates/js/translated/stock.js:876
msgid "Count"
msgstr ""
-#: templates/js/translated/stock.js:881
+#: templates/js/translated/stock.js:880
msgid "Remove Stock"
msgstr ""
-#: templates/js/translated/stock.js:882
+#: templates/js/translated/stock.js:881
msgid "Take"
msgstr ""
-#: templates/js/translated/stock.js:886
+#: templates/js/translated/stock.js:885
msgid "Add Stock"
msgstr ""
-#: templates/js/translated/stock.js:887 users/models.py:215
+#: templates/js/translated/stock.js:886 users/models.py:215
msgid "Add"
msgstr ""
-#: templates/js/translated/stock.js:891
+#: templates/js/translated/stock.js:890
msgid "Delete Stock"
msgstr ""
-#: templates/js/translated/stock.js:984
+#: templates/js/translated/stock.js:983
msgid "Quantity cannot be adjusted for serialized stock"
msgstr ""
-#: templates/js/translated/stock.js:984
+#: templates/js/translated/stock.js:983
msgid "Specify stock quantity"
msgstr ""
-#: templates/js/translated/stock.js:1024
+#: templates/js/translated/stock.js:1023
msgid "You must select at least one available stock item"
msgstr ""
-#: templates/js/translated/stock.js:1047
+#: templates/js/translated/stock.js:1046
msgid "Confirm stock adjustment"
msgstr ""
-#: templates/js/translated/stock.js:1172
+#: templates/js/translated/stock.js:1182
msgid "PASS"
msgstr ""
-#: templates/js/translated/stock.js:1174
+#: templates/js/translated/stock.js:1184
msgid "FAIL"
msgstr ""
-#: templates/js/translated/stock.js:1179
+#: templates/js/translated/stock.js:1189
msgid "NO RESULT"
msgstr ""
-#: templates/js/translated/stock.js:1226
+#: templates/js/translated/stock.js:1236
msgid "Pass test"
msgstr ""
-#: templates/js/translated/stock.js:1229
+#: templates/js/translated/stock.js:1239
msgid "Add test result"
msgstr ""
-#: templates/js/translated/stock.js:1255
+#: templates/js/translated/stock.js:1265
msgid "No test results found"
msgstr ""
-#: templates/js/translated/stock.js:1311
+#: templates/js/translated/stock.js:1321
msgid "Test Date"
msgstr ""
-#: templates/js/translated/stock.js:1476
+#: templates/js/translated/stock.js:1486
msgid "Edit Test Result"
msgstr ""
-#: templates/js/translated/stock.js:1498
+#: templates/js/translated/stock.js:1508
msgid "Delete Test Result"
msgstr ""
-#: templates/js/translated/stock.js:1527
+#: templates/js/translated/stock.js:1537
msgid "In production"
msgstr ""
-#: templates/js/translated/stock.js:1531
+#: templates/js/translated/stock.js:1541
msgid "Installed in Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:1539
+#: templates/js/translated/stock.js:1549
msgid "Assigned to Sales Order"
msgstr ""
-#: templates/js/translated/stock.js:1545
+#: templates/js/translated/stock.js:1555
msgid "No stock location set"
msgstr ""
-#: templates/js/translated/stock.js:1712
+#: templates/js/translated/stock.js:1722
msgid "Stock item is in production"
msgstr ""
-#: templates/js/translated/stock.js:1717
+#: templates/js/translated/stock.js:1727
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:1720
+#: templates/js/translated/stock.js:1730
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:1723
+#: templates/js/translated/stock.js:1733
msgid "Serialized stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:1725
+#: templates/js/translated/stock.js:1735
msgid "Stock item has been fully allocated"
msgstr ""
-#: templates/js/translated/stock.js:1727
+#: templates/js/translated/stock.js:1737
msgid "Stock item has been partially allocated"
msgstr ""
-#: templates/js/translated/stock.js:1730
+#: templates/js/translated/stock.js:1740
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:1734
+#: templates/js/translated/stock.js:1744
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:1736
+#: templates/js/translated/stock.js:1746
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:1743
+#: templates/js/translated/stock.js:1753
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:1745
+#: templates/js/translated/stock.js:1755
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:1747
+#: templates/js/translated/stock.js:1757
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:1751
+#: templates/js/translated/stock.js:1761
#: templates/js/translated/table_filters.js:188
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:1802
+#: templates/js/translated/stock.js:1812
msgid "Stocktake"
msgstr ""
-#: templates/js/translated/stock.js:1884
+#: templates/js/translated/stock.js:1894
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:1922
+#: templates/js/translated/stock.js:1932
msgid "No stock items matching query"
msgstr ""
-#: templates/js/translated/stock.js:2095
+#: templates/js/translated/stock.js:2105
msgid "Set Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:2109
+#: templates/js/translated/stock.js:2119
msgid "Select Status Code"
msgstr ""
-#: templates/js/translated/stock.js:2110
+#: templates/js/translated/stock.js:2120
msgid "Status code must be selected"
msgstr ""
-#: templates/js/translated/stock.js:2365
+#: templates/js/translated/stock.js:2375
msgid "Details"
msgstr ""
-#: templates/js/translated/stock.js:2381
+#: templates/js/translated/stock.js:2391
msgid "Part information unavailable"
msgstr ""
-#: templates/js/translated/stock.js:2403
+#: templates/js/translated/stock.js:2413
msgid "Location no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2422
+#: templates/js/translated/stock.js:2432
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2441
+#: templates/js/translated/stock.js:2451
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2459
+#: templates/js/translated/stock.js:2469
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2482
+#: templates/js/translated/stock.js:2492
msgid "Added"
msgstr ""
-#: templates/js/translated/stock.js:2490
+#: templates/js/translated/stock.js:2500
msgid "Removed"
msgstr ""
-#: templates/js/translated/stock.js:2566
+#: templates/js/translated/stock.js:2576
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:2617 templates/js/translated/stock.js:2653
+#: templates/js/translated/stock.js:2627 templates/js/translated/stock.js:2663
msgid "Uninstall Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:2666
+#: templates/js/translated/stock.js:2676
msgid "Select stock item to uninstall"
msgstr ""
-#: templates/js/translated/stock.js:2687
+#: templates/js/translated/stock.js:2697
msgid "Install another stock item into this item"
msgstr ""
-#: templates/js/translated/stock.js:2688
+#: templates/js/translated/stock.js:2698
msgid "Stock items can only be installed if they meet the following criteria"
msgstr ""
-#: templates/js/translated/stock.js:2690
+#: templates/js/translated/stock.js:2700
msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:2691
+#: templates/js/translated/stock.js:2701
msgid "The Stock Item is currently available in stock"
msgstr ""
-#: templates/js/translated/stock.js:2692
+#: templates/js/translated/stock.js:2702
msgid "The Stock Item is not already installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:2693
+#: templates/js/translated/stock.js:2703
msgid "The Stock Item is tracked by either a batch code or serial number"
msgstr ""
-#: templates/js/translated/stock.js:2706
+#: templates/js/translated/stock.js:2716
msgid "Select part to install"
msgstr ""
diff --git a/InvenTree/locale/it/LC_MESSAGES/django.po b/InvenTree/locale/it/LC_MESSAGES/django.po
index 5cce51c3ae..1c5f1349d4 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: 2022-06-05 14:26+0000\n"
-"PO-Revision-Date: 2022-06-05 14:34\n"
+"POT-Creation-Date: 2022-06-06 22:59+0000\n"
+"PO-Revision-Date: 2022-06-07 14:34\n"
"Last-Translator: \n"
"Language-Team: Italian\n"
"Language: it_IT\n"
@@ -17,7 +17,7 @@ msgstr ""
"X-Crowdin-File: /[inventree.InvenTree] l10/InvenTree/locale/en/LC_MESSAGES/django.po\n"
"X-Crowdin-File-ID: 154\n"
-#: InvenTree/api.py:46
+#: InvenTree/api.py:49
msgid "API endpoint not found"
msgstr "Endpoint API non trovato"
@@ -29,275 +29,273 @@ msgstr ""
msgid "Enter date"
msgstr "Inserisci la data"
-#: InvenTree/forms.py:117 templates/account/email_confirm.html:20
-#: templates/js/translated/forms.js:630
-msgid "Confirm"
-msgstr "Conferma"
-
-#: InvenTree/forms.py:134
+#: InvenTree/forms.py:117
msgid "Confirm delete"
msgstr "Conferma eliminazione"
-#: InvenTree/forms.py:135
+#: InvenTree/forms.py:118
msgid "Confirm item deletion"
msgstr "Conferma eliminazione elementi"
-#: InvenTree/forms.py:167
+#: InvenTree/forms.py:150
msgid "Enter password"
msgstr "Inserire la password"
-#: InvenTree/forms.py:168
+#: InvenTree/forms.py:151
msgid "Enter new password"
msgstr "Inserire una nuova password"
-#: InvenTree/forms.py:175
+#: InvenTree/forms.py:158
msgid "Confirm password"
msgstr "Conferma la password"
-#: InvenTree/forms.py:176
+#: InvenTree/forms.py:159
msgid "Confirm new password"
msgstr "Conferma la nuova password"
-#: InvenTree/forms.py:213
-msgid "Select Category"
-msgstr "Selezione una categoria"
-
-#: InvenTree/forms.py:234
+#: InvenTree/forms.py:184
msgid "Email (again)"
msgstr "Email (ancora)"
-#: InvenTree/forms.py:238
+#: InvenTree/forms.py:188
msgid "Email address confirmation"
msgstr "Conferma indirizzo email"
-#: InvenTree/forms.py:259
+#: InvenTree/forms.py:209
msgid "You must type the same email each time."
msgstr "È necessario digitare la stessa e-mail ogni volta."
-#: InvenTree/helpers.py:402
+#: InvenTree/helpers.py:404
#, python-brace-format
msgid "Duplicate serial: {sn}"
msgstr "Seriale duplicato: {sn}"
-#: InvenTree/helpers.py:409 order/models.py:365 order/models.py:517
+#: InvenTree/helpers.py:411 order/models.py:370 order/models.py:522
msgid "Invalid quantity provided"
msgstr "Quantità inserita non valida"
-#: InvenTree/helpers.py:412
+#: InvenTree/helpers.py:414
msgid "Empty serial number string"
msgstr "Numero seriale vuoto"
-#: InvenTree/helpers.py:444
+#: InvenTree/helpers.py:446
#, python-brace-format
msgid "Invalid group range: {g}"
msgstr ""
-#: InvenTree/helpers.py:447
+#: InvenTree/helpers.py:449
#, python-brace-format
msgid "Invalid group: {g}"
msgstr "Gruppo non valido: {g}"
-#: InvenTree/helpers.py:475
+#: InvenTree/helpers.py:477
#, python-brace-format
msgid "Invalid group sequence: {g}"
msgstr ""
-#: InvenTree/helpers.py:483
+#: InvenTree/helpers.py:485
#, python-brace-format
msgid "Invalid/no group {group}"
msgstr "Gruppo {group} invalido o inesistente"
-#: InvenTree/helpers.py:489
+#: InvenTree/helpers.py:491
msgid "No serial numbers found"
msgstr "Nessun numero di serie trovato"
-#: InvenTree/helpers.py:493
+#: InvenTree/helpers.py:495
#, python-brace-format
msgid "Number of unique serial numbers ({s}) must match quantity ({q})"
msgstr "Il numero dei numeri seriali univoci ({s}) deve essere uguale alla quantità ({q})"
-#: InvenTree/models.py:174
+#: InvenTree/models.py:178
msgid "Missing file"
msgstr "File mancante"
-#: InvenTree/models.py:175
+#: InvenTree/models.py:179
msgid "Missing external link"
msgstr "Link esterno mancante"
-#: InvenTree/models.py:187 stock/models.py:2087
-#: templates/js/translated/attachment.js:101
-#: templates/js/translated/attachment.js:198
+#: InvenTree/models.py:191 stock/models.py:2091
+#: templates/js/translated/attachment.js:103
+#: templates/js/translated/attachment.js:194
msgid "Attachment"
msgstr "Allegato"
-#: InvenTree/models.py:188
+#: InvenTree/models.py:192
msgid "Select file to attach"
msgstr "Seleziona file da allegare"
-#: InvenTree/models.py:194 company/models.py:123 company/models.py:272
-#: company/models.py:506 order/models.py:135 order/models.py:1235
+#: InvenTree/models.py:198 company/models.py:123 company/models.py:272
+#: company/models.py:506 order/models.py:136 order/models.py:1251
#: part/models.py:795
#: report/templates/report/inventree_build_order_base.html:165
-#: templates/js/translated/company.js:655
-#: templates/js/translated/company.js:946 templates/js/translated/order.js:2676
-#: templates/js/translated/part.js:1441
+#: templates/js/translated/company.js:640
+#: templates/js/translated/company.js:931 templates/js/translated/order.js:2676
+#: templates/js/translated/part.js:1485
msgid "Link"
msgstr "Collegamento"
-#: InvenTree/models.py:195 build/models.py:320 part/models.py:796
+#: InvenTree/models.py:199 build/models.py:320 part/models.py:796
#: stock/models.py:642
msgid "Link to external URL"
msgstr "Link a URL esterno"
-#: InvenTree/models.py:198 templates/js/translated/attachment.js:102
-#: templates/js/translated/attachment.js:242
+#: InvenTree/models.py:202 templates/js/translated/attachment.js:104
+#: templates/js/translated/attachment.js:238
msgid "Comment"
msgstr "Commento"
-#: InvenTree/models.py:198
+#: InvenTree/models.py:202
msgid "File comment"
msgstr "Commento del file"
-#: InvenTree/models.py:204 InvenTree/models.py:205 common/models.py:1499
-#: common/models.py:1500 common/models.py:1728 common/models.py:1729
-#: common/models.py:1991 common/models.py:1992 part/models.py:2153
-#: part/models.py:2173 plugin/models.py:238 plugin/models.py:239
+#: InvenTree/models.py:208 InvenTree/models.py:209 common/models.py:1506
+#: common/models.py:1507 common/models.py:1735 common/models.py:1736
+#: common/models.py:1998 common/models.py:1999 part/models.py:2141
+#: part/models.py:2161 plugin/models.py:238 plugin/models.py:239
#: report/templates/report/inventree_test_report_base.html:96
-#: templates/js/translated/stock.js:2513
+#: templates/js/translated/stock.js:2523
msgid "User"
msgstr "Utente"
-#: InvenTree/models.py:208
+#: InvenTree/models.py:212
msgid "upload date"
msgstr "data caricamento"
-#: InvenTree/models.py:230
+#: InvenTree/models.py:234
msgid "Filename must not be empty"
msgstr "Il nome del file non deve essere vuoto"
-#: InvenTree/models.py:253
+#: InvenTree/models.py:257
msgid "Invalid attachment directory"
msgstr "Directory allegati non valida"
-#: InvenTree/models.py:263
+#: InvenTree/models.py:267
#, python-brace-format
msgid "Filename contains illegal character '{c}'"
msgstr "Il nome del file contiene caratteri non validi '{c}'"
-#: InvenTree/models.py:266
+#: InvenTree/models.py:270
msgid "Filename missing extension"
msgstr "Nome file estensione mancante"
-#: InvenTree/models.py:273
+#: InvenTree/models.py:277
msgid "Attachment with this filename already exists"
msgstr "Esiste già un allegato con questo nome di file"
-#: InvenTree/models.py:280
+#: InvenTree/models.py:284
msgid "Error renaming file"
msgstr "Errore nella rinominazione del file"
-#: InvenTree/models.py:314
+#: InvenTree/models.py:318
msgid "Invalid choice"
msgstr "Scelta non valida"
-#: InvenTree/models.py:333 InvenTree/models.py:334 common/models.py:1714
+#: InvenTree/models.py:337 InvenTree/models.py:338 common/models.py:1721
#: company/models.py:354 label/models.py:101 part/models.py:739
-#: part/models.py:2331 plugin/models.py:93 report/models.py:151
+#: part/models.py:2319 plugin/models.py:93 report/models.py:151
#: templates/InvenTree/notifications/notifications.html:84
#: templates/InvenTree/settings/mixins/urls.html:13
#: templates/InvenTree/settings/plugin.html:49
#: templates/InvenTree/settings/plugin.html:132
#: templates/InvenTree/settings/plugin_settings.html:23
#: templates/InvenTree/settings/settings.html:346
-#: templates/js/translated/company.js:539
-#: templates/js/translated/company.js:757 templates/js/translated/part.js:615
-#: templates/js/translated/part.js:767 templates/js/translated/part.js:1736
-#: templates/js/translated/stock.js:2283
+#: templates/js/translated/company.js:530
+#: templates/js/translated/company.js:742 templates/js/translated/part.js:659
+#: templates/js/translated/part.js:811 templates/js/translated/part.js:1832
+#: templates/js/translated/stock.js:2293
msgid "Name"
msgstr "Nome"
-#: InvenTree/models.py:340 build/models.py:197
+#: InvenTree/models.py:344 build/models.py:197
#: build/templates/build/detail.html:24 company/models.py:278
#: company/models.py:512 company/templates/company/company_base.html:71
#: company/templates/company/manufacturer_part.html:75
#: company/templates/company/supplier_part.html:73 label/models.py:108
-#: order/models.py:133 part/models.py:762 part/templates/part/category.html:74
-#: part/templates/part/part_base.html:167
-#: part/templates/part/set_category.html:14 report/models.py:164
+#: order/models.py:134 part/models.py:762 part/templates/part/category.html:74
+#: part/templates/part/part_base.html:167 report/models.py:164
#: report/models.py:509 report/models.py:550
#: report/templates/report/inventree_build_order_base.html:118
#: stock/templates/stock/location.html:103
#: templates/InvenTree/settings/plugin_settings.html:33
-#: templates/js/translated/bom.js:553 templates/js/translated/bom.js:851
-#: templates/js/translated/build.js:2476 templates/js/translated/company.js:401
-#: templates/js/translated/company.js:666
-#: templates/js/translated/company.js:957 templates/js/translated/order.js:1656
+#: templates/js/translated/bom.js:553 templates/js/translated/bom.js:845
+#: templates/js/translated/build.js:2476 templates/js/translated/company.js:395
+#: templates/js/translated/company.js:651
+#: templates/js/translated/company.js:942 templates/js/translated/order.js:1656
#: templates/js/translated/order.js:1888 templates/js/translated/order.js:2476
-#: templates/js/translated/part.js:674 templates/js/translated/part.js:1082
-#: templates/js/translated/part.js:1355 templates/js/translated/part.js:1755
-#: templates/js/translated/part.js:1824 templates/js/translated/stock.js:1676
-#: templates/js/translated/stock.js:2295 templates/js/translated/stock.js:2350
+#: templates/js/translated/part.js:718 templates/js/translated/part.js:1126
+#: templates/js/translated/part.js:1399 templates/js/translated/part.js:1851
+#: templates/js/translated/part.js:1920 templates/js/translated/stock.js:1686
+#: templates/js/translated/stock.js:2305 templates/js/translated/stock.js:2360
msgid "Description"
msgstr "Descrizione"
-#: InvenTree/models.py:341
+#: InvenTree/models.py:345
msgid "Description (optional)"
msgstr "Descrizione (opzionale)"
-#: InvenTree/models.py:349
+#: InvenTree/models.py:353
msgid "parent"
msgstr "genitore"
-#: InvenTree/serializers.py:52 part/models.py:2652
+#: InvenTree/models.py:466
+msgid "Server Error"
+msgstr ""
+
+#: InvenTree/models.py:467
+msgid "An error has been logged by the server."
+msgstr ""
+
+#: InvenTree/serializers.py:52 part/models.py:2640
msgid "Must be a valid number"
msgstr "Deve essere un numero valido"
-#: InvenTree/serializers.py:271
+#: InvenTree/serializers.py:263
msgid "Filename"
msgstr "Nome del file"
-#: InvenTree/serializers.py:306
+#: InvenTree/serializers.py:298
msgid "Invalid value"
msgstr "Valore non valido"
-#: InvenTree/serializers.py:328
+#: InvenTree/serializers.py:320
msgid "Data File"
msgstr "File dati"
-#: InvenTree/serializers.py:329
+#: InvenTree/serializers.py:321
msgid "Select data file for upload"
msgstr "Seleziona un file per il caricamento"
-#: InvenTree/serializers.py:350
+#: InvenTree/serializers.py:342
msgid "Unsupported file type"
msgstr "Formato file non supportato"
-#: InvenTree/serializers.py:356
+#: InvenTree/serializers.py:348
msgid "File is too large"
msgstr "File troppo grande"
-#: InvenTree/serializers.py:377
+#: InvenTree/serializers.py:369
msgid "No columns found in file"
msgstr "Nessun colonna trovata nel file"
-#: InvenTree/serializers.py:380
+#: InvenTree/serializers.py:372
msgid "No data rows found in file"
msgstr ""
-#: InvenTree/serializers.py:503
+#: InvenTree/serializers.py:495
msgid "No data rows provided"
msgstr ""
-#: InvenTree/serializers.py:506
+#: InvenTree/serializers.py:498
msgid "No data columns supplied"
msgstr ""
-#: InvenTree/serializers.py:583
+#: InvenTree/serializers.py:575
#, python-brace-format
msgid "Missing required column: '{name}'"
msgstr "Colonna richiesta mancante: '{name}'"
-#: InvenTree/serializers.py:592
+#: InvenTree/serializers.py:584
#, python-brace-format
msgid "Duplicate column: '{col}'"
msgstr "Colonna duplicata: '{col}'"
@@ -440,7 +438,7 @@ msgstr "Perso"
msgid "Returned"
msgstr "Reso"
-#: InvenTree/status_codes.py:141 order/models.py:1114
+#: InvenTree/status_codes.py:141 order/models.py:1130
#: templates/js/translated/order.js:3264 templates/js/translated/order.js:3607
msgid "Shipped"
msgstr "Spedito"
@@ -525,7 +523,7 @@ msgstr "Diviso dall'elemento genitore"
msgid "Split child item"
msgstr "Dividi elemento figlio"
-#: InvenTree/status_codes.py:281 templates/js/translated/stock.js:2020
+#: InvenTree/status_codes.py:281 templates/js/translated/stock.js:2030
msgid "Merged stock items"
msgstr "Elemento stock raggruppato"
@@ -597,27 +595,27 @@ msgstr "L'eccesso non deve superare il 100%"
msgid "Invalid value for overage"
msgstr ""
-#: InvenTree/views.py:522
+#: InvenTree/views.py:521
msgid "Delete Item"
msgstr "Cancella elemento"
-#: InvenTree/views.py:571
+#: InvenTree/views.py:570
msgid "Check box to confirm item deletion"
msgstr "Spunta la casella per confermare l'eliminazione dell'elemento"
-#: InvenTree/views.py:586 templates/InvenTree/settings/user.html:22
+#: InvenTree/views.py:585 templates/InvenTree/settings/user.html:22
msgid "Edit User Information"
msgstr "Modifica informazioni utente"
-#: InvenTree/views.py:598 templates/InvenTree/settings/user.html:19
+#: InvenTree/views.py:597 templates/InvenTree/settings/user.html:19
msgid "Set Password"
msgstr "Imposta Password"
-#: InvenTree/views.py:618
+#: InvenTree/views.py:617
msgid "Password fields must match"
msgstr "Le password devono coincidere"
-#: InvenTree/views.py:842 templates/navbar.html:152
+#: InvenTree/views.py:807 templates/navbar.html:152
msgid "System Information"
msgstr "Informazioni sistema"
@@ -628,6 +626,7 @@ msgstr ""
#: build/models.py:131 build/templates/build/build_base.html:9
#: build/templates/build/build_base.html:27
#: report/templates/report/inventree_build_order_base.html:106
+#: templates/email/overdue_build_order.html:15
#: templates/js/translated/build.js:727
msgid "Build Order"
msgstr "Ordine di Produzione"
@@ -646,12 +645,12 @@ msgstr "Ordini di Produzione"
msgid "Build Order Reference"
msgstr ""
-#: build/models.py:189 order/models.py:288 order/models.py:638
-#: order/models.py:916 part/models.py:2570
+#: build/models.py:189 order/models.py:293 order/models.py:654
+#: order/models.py:932 part/models.py:2558
#: part/templates/part/upload_bom.html:54
#: report/templates/report/inventree_po_report.html:91
#: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:688 templates/js/translated/bom.js:858
+#: templates/js/translated/bom.js:690 templates/js/translated/bom.js:852
#: templates/js/translated/build.js:1777 templates/js/translated/order.js:1919
#: templates/js/translated/order.js:2120 templates/js/translated/order.js:3448
#: templates/js/translated/order.js:3959
@@ -673,13 +672,12 @@ msgstr ""
#: build/models.py:215 build/templates/build/build_base.html:77
#: build/templates/build/detail.html:29 company/models.py:647
-#: order/models.py:1012 order/models.py:1103 part/models.py:336
-#: part/models.py:2099 part/models.py:2114 part/models.py:2133
-#: part/models.py:2151 part/models.py:2250 part/models.py:2370
-#: part/models.py:2460 part/models.py:2545 part/models.py:2821
-#: part/serializers.py:793 part/templates/part/part_app_base.html:8
+#: order/models.py:1028 order/models.py:1119 part/models.py:336
+#: part/models.py:2087 part/models.py:2102 part/models.py:2121
+#: part/models.py:2139 part/models.py:2238 part/models.py:2358
+#: part/models.py:2448 part/models.py:2533 part/models.py:2809
+#: part/serializers.py:795 part/templates/part/part_app_base.html:8
#: part/templates/part/part_pricing.html:12
-#: part/templates/part/set_category.html:13
#: part/templates/part/upload_bom.html:52
#: report/templates/report/inventree_build_order_base.html:110
#: report/templates/report/inventree_po_report.html:89
@@ -687,22 +685,23 @@ msgstr ""
#: templates/InvenTree/search.html:80
#: templates/email/build_order_required_stock.html:17
#: templates/email/low_stock_notification.html:16
+#: templates/email/overdue_build_order.html:16
#: templates/js/translated/barcode.js:435 templates/js/translated/bom.js:552
-#: templates/js/translated/bom.js:687 templates/js/translated/bom.js:805
+#: templates/js/translated/bom.js:689 templates/js/translated/bom.js:799
#: templates/js/translated/build.js:1153 templates/js/translated/build.js:1647
#: templates/js/translated/build.js:2083 templates/js/translated/build.js:2481
-#: templates/js/translated/company.js:252
-#: templates/js/translated/company.js:486
-#: templates/js/translated/company.js:607
-#: templates/js/translated/company.js:866 templates/js/translated/order.js:100
+#: templates/js/translated/company.js:253
+#: templates/js/translated/company.js:482
+#: templates/js/translated/company.js:592
+#: templates/js/translated/company.js:851 templates/js/translated/order.js:100
#: templates/js/translated/order.js:883 templates/js/translated/order.js:1315
#: templates/js/translated/order.js:1873 templates/js/translated/order.js:2819
#: templates/js/translated/order.js:3217 templates/js/translated/order.js:3432
-#: templates/js/translated/part.js:1067 templates/js/translated/part.js:1137
-#: templates/js/translated/part.js:1333 templates/js/translated/stock.js:531
-#: templates/js/translated/stock.js:696 templates/js/translated/stock.js:903
-#: templates/js/translated/stock.js:1633 templates/js/translated/stock.js:2376
-#: templates/js/translated/stock.js:2571 templates/js/translated/stock.js:2705
+#: templates/js/translated/part.js:1111 templates/js/translated/part.js:1181
+#: templates/js/translated/part.js:1377 templates/js/translated/stock.js:530
+#: templates/js/translated/stock.js:695 templates/js/translated/stock.js:902
+#: templates/js/translated/stock.js:1643 templates/js/translated/stock.js:2386
+#: templates/js/translated/stock.js:2581 templates/js/translated/stock.js:2715
msgid "Part"
msgstr "Articolo"
@@ -768,12 +767,12 @@ msgstr "Codice Lotto"
msgid "Batch code for this build output"
msgstr ""
-#: build/models.py:282 order/models.py:137 part/models.py:932
+#: build/models.py:282 order/models.py:138 part/models.py:932
#: part/templates/part/part_base.html:305 templates/js/translated/order.js:2489
msgid "Creation Date"
msgstr "Data di creazione"
-#: build/models.py:286 order/models.py:660
+#: build/models.py:286 order/models.py:676
msgid "Target completion date"
msgstr "Data completamento obiettivo"
@@ -781,7 +780,7 @@ msgstr "Data completamento obiettivo"
msgid "Target date for build completion. Build will be overdue after this date."
msgstr ""
-#: build/models.py:290 order/models.py:331
+#: build/models.py:290 order/models.py:336
#: templates/js/translated/build.js:2558
msgid "Completion Date"
msgstr "Data di completamento"
@@ -799,7 +798,7 @@ msgid "User who issued this build order"
msgstr ""
#: build/models.py:313 build/templates/build/build_base.html:190
-#: build/templates/build/detail.html:115 order/models.py:151
+#: build/templates/build/detail.html:115 order/models.py:152
#: order/templates/order/order_base.html:176
#: order/templates/order/sales_order_base.html:183 part/models.py:936
#: report/templates/report/inventree_build_order_base.html:159
@@ -822,20 +821,20 @@ msgstr "Collegamento esterno"
#: build/models.py:324 build/serializers.py:374
#: build/templates/build/sidebar.html:21 company/models.py:134
#: company/models.py:519 company/templates/company/sidebar.html:25
-#: order/models.py:155 order/models.py:918 order/models.py:1213
+#: order/models.py:156 order/models.py:934 order/models.py:1229
#: order/templates/order/po_sidebar.html:11
#: order/templates/order/so_sidebar.html:17 part/models.py:921
#: part/templates/part/part_sidebar.html:59
#: report/templates/report/inventree_build_order_base.html:173
-#: stock/models.py:713 stock/models.py:1985 stock/models.py:2093
+#: stock/models.py:713 stock/models.py:1989 stock/models.py:2097
#: stock/serializers.py:315 stock/serializers.py:444 stock/serializers.py:486
-#: stock/serializers.py:772 stock/serializers.py:871 stock/serializers.py:1003
+#: stock/serializers.py:759 stock/serializers.py:858 stock/serializers.py:990
#: stock/templates/stock/stock_sidebar.html:25
-#: templates/js/translated/barcode.js:100 templates/js/translated/bom.js:1044
-#: templates/js/translated/company.js:962 templates/js/translated/order.js:2040
+#: templates/js/translated/barcode.js:100 templates/js/translated/bom.js:1038
+#: templates/js/translated/company.js:947 templates/js/translated/order.js:2040
#: templates/js/translated/order.js:2191 templates/js/translated/order.js:2687
#: templates/js/translated/order.js:3632 templates/js/translated/order.js:4030
-#: templates/js/translated/stock.js:1307 templates/js/translated/stock.js:1916
+#: templates/js/translated/stock.js:1317 templates/js/translated/stock.js:1926
msgid "Notes"
msgstr "Note"
@@ -855,44 +854,44 @@ msgstr ""
msgid "Build output does not match Build Order"
msgstr ""
-#: build/models.py:1108
+#: build/models.py:1111
msgid "Build item must specify a build output, as master part is marked as trackable"
msgstr ""
-#: build/models.py:1117
+#: build/models.py:1120
#, python-brace-format
msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})"
msgstr "La quantità assegnata ({q}) non deve essere maggiore della quantità disponibile ({a})"
-#: build/models.py:1127
+#: build/models.py:1130
msgid "Stock item is over-allocated"
msgstr "L'articolo in giacenza è sovrallocato"
-#: build/models.py:1133 order/models.py:1372
+#: build/models.py:1136 order/models.py:1388
msgid "Allocation quantity must be greater than zero"
msgstr "La quantità di assegnazione deve essere maggiore di zero"
-#: build/models.py:1139
+#: build/models.py:1142
msgid "Quantity must be 1 for serialized stock"
msgstr "La quantità deve essere 1 per lo stock serializzato"
-#: build/models.py:1196
+#: build/models.py:1199
msgid "Selected stock item not found in BOM"
msgstr "Articolo in giacenza selezionato non trovato nel BOM"
-#: build/models.py:1265 stock/templates/stock/item_base.html:177
+#: build/models.py:1268 stock/templates/stock/item_base.html:177
#: templates/InvenTree/search.html:137 templates/js/translated/build.js:2454
#: templates/navbar.html:38
msgid "Build"
msgstr "Produzione"
-#: build/models.py:1266
+#: build/models.py:1269
msgid "Build to allocate parts"
msgstr ""
-#: build/models.py:1282 build/serializers.py:603 order/serializers.py:994
-#: order/serializers.py:1015 stock/serializers.py:382 stock/serializers.py:703
-#: stock/serializers.py:829 stock/templates/stock/item_base.html:10
+#: build/models.py:1285 build/serializers.py:603 order/serializers.py:996
+#: order/serializers.py:1017 stock/serializers.py:382 stock/serializers.py:690
+#: stock/serializers.py:816 stock/templates/stock/item_base.html:10
#: stock/templates/stock/item_base.html:23
#: stock/templates/stock/item_base.html:199
#: templates/js/translated/build.js:738 templates/js/translated/build.js:743
@@ -900,22 +899,22 @@ msgstr ""
#: templates/js/translated/order.js:101 templates/js/translated/order.js:2820
#: templates/js/translated/order.js:3124 templates/js/translated/order.js:3129
#: templates/js/translated/order.js:3224 templates/js/translated/order.js:3314
-#: templates/js/translated/stock.js:532 templates/js/translated/stock.js:697
-#: templates/js/translated/stock.js:2449
+#: templates/js/translated/stock.js:531 templates/js/translated/stock.js:696
+#: templates/js/translated/stock.js:2459
msgid "Stock Item"
msgstr "Articoli in magazzino"
-#: build/models.py:1283
+#: build/models.py:1286
msgid "Source stock item"
msgstr "Origine giacenza articolo"
-#: build/models.py:1295 build/serializers.py:183
+#: build/models.py:1298 build/serializers.py:183
#: build/templates/build/build_base.html:82
-#: build/templates/build/detail.html:34 common/models.py:1536
+#: build/templates/build/detail.html:34 common/models.py:1543
#: company/forms.py:36 company/templates/company/supplier_part.html:258
-#: order/models.py:909 order/models.py:1412 order/serializers.py:1134
-#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:68
-#: part/forms.py:83 part/forms.py:98 part/models.py:2561
+#: order/models.py:925 order/models.py:1428 order/serializers.py:1136
+#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:59
+#: part/forms.py:74 part/forms.py:89 part/models.py:2549
#: part/templates/part/detail.html:935 part/templates/part/detail.html:1021
#: part/templates/part/part_pricing.html:16
#: part/templates/part/upload_bom.html:53
@@ -926,8 +925,8 @@ msgstr "Origine giacenza articolo"
#: report/templates/report/inventree_test_report_base.html:139
#: stock/serializers.py:279 stock/templates/stock/item_base.html:292
#: stock/templates/stock/item_base.html:300
-#: templates/js/translated/barcode.js:437 templates/js/translated/bom.js:689
-#: templates/js/translated/bom.js:866 templates/js/translated/build.js:422
+#: templates/js/translated/barcode.js:437 templates/js/translated/bom.js:691
+#: templates/js/translated/bom.js:860 templates/js/translated/build.js:422
#: templates/js/translated/build.js:574 templates/js/translated/build.js:765
#: templates/js/translated/build.js:1175 templates/js/translated/build.js:1673
#: templates/js/translated/build.js:2086
@@ -937,23 +936,23 @@ msgstr "Origine giacenza articolo"
#: templates/js/translated/order.js:2821 templates/js/translated/order.js:3143
#: templates/js/translated/order.js:3231 templates/js/translated/order.js:3320
#: templates/js/translated/order.js:3454 templates/js/translated/order.js:3965
-#: templates/js/translated/part.js:967 templates/js/translated/part.js:1969
-#: templates/js/translated/part.js:2200 templates/js/translated/part.js:2234
-#: templates/js/translated/part.js:2312 templates/js/translated/stock.js:403
-#: templates/js/translated/stock.js:557 templates/js/translated/stock.js:727
-#: templates/js/translated/stock.js:2498 templates/js/translated/stock.js:2583
+#: templates/js/translated/part.js:1011 templates/js/translated/part.js:2065
+#: templates/js/translated/part.js:2296 templates/js/translated/part.js:2330
+#: templates/js/translated/part.js:2408 templates/js/translated/stock.js:402
+#: templates/js/translated/stock.js:556 templates/js/translated/stock.js:726
+#: templates/js/translated/stock.js:2508 templates/js/translated/stock.js:2593
msgid "Quantity"
msgstr "Quantità"
-#: build/models.py:1296
+#: build/models.py:1299
msgid "Stock quantity to allocate to build"
msgstr ""
-#: build/models.py:1304
+#: build/models.py:1307
msgid "Install into"
msgstr "Installa in"
-#: build/models.py:1305
+#: build/models.py:1308
msgid "Destination stock item"
msgstr "Destinazione articolo in giacenza"
@@ -982,9 +981,9 @@ msgstr ""
msgid "Enter quantity for build output"
msgstr "Inserisci la quantità per l'output di compilazione"
-#: build/serializers.py:198 build/serializers.py:623 order/models.py:363
-#: order/serializers.py:280 order/serializers.py:435 part/serializers.py:512
-#: part/serializers.py:956 stock/models.py:470 stock/models.py:1239
+#: build/serializers.py:198 build/serializers.py:623 order/models.py:368
+#: order/serializers.py:280 order/serializers.py:435 part/serializers.py:514
+#: part/serializers.py:958 stock/models.py:470 stock/models.py:1239
#: stock/serializers.py:288
msgid "Quantity must be greater than zero"
msgstr "La quantità deve essere maggiore di zero"
@@ -997,9 +996,9 @@ msgstr ""
msgid "Integer quantity required, as the bill of materials contains trackable parts"
msgstr ""
-#: build/serializers.py:222 order/serializers.py:448 order/serializers.py:1138
+#: build/serializers.py:222 order/serializers.py:448 order/serializers.py:1140
#: stock/serializers.py:297 templates/js/translated/order.js:1186
-#: templates/js/translated/stock.js:238 templates/js/translated/stock.js:404
+#: templates/js/translated/stock.js:237 templates/js/translated/stock.js:403
msgid "Serial Numbers"
msgstr "Codice Seriale"
@@ -1015,7 +1014,7 @@ msgstr ""
msgid "Automatically allocate required items with matching serial numbers"
msgstr ""
-#: build/serializers.py:268 stock/api.py:552
+#: build/serializers.py:268 stock/api.py:553
msgid "The following serial numbers already exist"
msgstr "I seguenti numeri di serie sono già esistenti"
@@ -1025,16 +1024,16 @@ msgstr ""
#: build/serializers.py:356 order/serializers.py:421 order/serializers.py:525
#: stock/serializers.py:308 stock/serializers.py:439 stock/serializers.py:481
-#: stock/serializers.py:864 stock/serializers.py:1097
+#: stock/serializers.py:851 stock/serializers.py:1084
#: stock/templates/stock/item_base.html:390
#: templates/js/translated/barcode.js:436
#: templates/js/translated/barcode.js:618 templates/js/translated/build.js:750
#: templates/js/translated/build.js:1685 templates/js/translated/order.js:1213
#: templates/js/translated/order.js:3136 templates/js/translated/order.js:3239
#: templates/js/translated/order.js:3247 templates/js/translated/order.js:3328
-#: templates/js/translated/part.js:180 templates/js/translated/stock.js:533
-#: templates/js/translated/stock.js:698 templates/js/translated/stock.js:905
-#: templates/js/translated/stock.js:1787 templates/js/translated/stock.js:2390
+#: templates/js/translated/part.js:180 templates/js/translated/stock.js:532
+#: templates/js/translated/stock.js:697 templates/js/translated/stock.js:904
+#: templates/js/translated/stock.js:1797 templates/js/translated/stock.js:2400
msgid "Location"
msgstr "Posizione"
@@ -1043,12 +1042,12 @@ msgid "Location for completed build outputs"
msgstr "Posizione per gli output di build completati"
#: build/serializers.py:363 build/templates/build/build_base.html:142
-#: build/templates/build/detail.html:62 order/models.py:654
+#: build/templates/build/detail.html:62 order/models.py:670
#: order/serializers.py:458 stock/templates/stock/item_base.html:423
#: templates/js/translated/barcode.js:182 templates/js/translated/build.js:2510
#: templates/js/translated/order.js:1320 templates/js/translated/order.js:1660
-#: templates/js/translated/order.js:2481 templates/js/translated/stock.js:1762
-#: templates/js/translated/stock.js:2467 templates/js/translated/stock.js:2599
+#: templates/js/translated/order.js:2481 templates/js/translated/stock.js:1772
+#: templates/js/translated/stock.js:2477 templates/js/translated/stock.js:2609
msgid "Status"
msgstr "Stato"
@@ -1108,8 +1107,8 @@ msgstr ""
msgid "No build outputs have been created for this build order"
msgstr ""
-#: build/serializers.py:535 build/serializers.py:580 part/models.py:2679
-#: part/models.py:2813
+#: build/serializers.py:535 build/serializers.py:580 part/models.py:2667
+#: part/models.py:2801
msgid "BOM Item"
msgstr "Distinta base (Bom)"
@@ -1125,11 +1124,11 @@ msgstr ""
msgid "bom_item.part must point to the same part as the build order"
msgstr ""
-#: build/serializers.py:609 stock/serializers.py:716
+#: build/serializers.py:609 stock/serializers.py:703
msgid "Item must be in stock"
msgstr "L'articolo deve essere disponibile"
-#: build/serializers.py:667 order/serializers.py:1052
+#: build/serializers.py:667 order/serializers.py:1054
#, python-brace-format
msgid "Available quantity ({q}) exceeded"
msgstr "Quantità disponibile ({q}) superata"
@@ -1146,7 +1145,7 @@ msgstr ""
msgid "This stock item has already been allocated to this build output"
msgstr ""
-#: build/serializers.py:708 order/serializers.py:1298
+#: build/serializers.py:708 order/serializers.py:1300
msgid "Allocation items must be provided"
msgstr "Deve essere indicata l'allocazione dell'articolo"
@@ -1178,10 +1177,19 @@ msgstr ""
msgid "Allow allocation of substitute parts"
msgstr ""
-#: build/tasks.py:96
+#: build/tasks.py:100
msgid "Stock required for build order"
msgstr ""
+#: build/tasks.py:118
+msgid "Overdue Build Order"
+msgstr ""
+
+#: build/tasks.py:123
+#, python-brace-format
+msgid "Build order {bo} is now overdue"
+msgstr ""
+
#: build/templates/build/build_base.html:39
#: order/templates/order/order_base.html:28
#: order/templates/order/sales_order_base.html:38
@@ -1244,13 +1252,13 @@ msgid "Stock has not been fully allocated to this Build Order"
msgstr ""
#: build/templates/build/build_base.html:151
-#: build/templates/build/detail.html:131 order/models.py:922
+#: build/templates/build/detail.html:131 order/models.py:938
#: order/templates/order/order_base.html:162
#: order/templates/order/sales_order_base.html:164
#: report/templates/report/inventree_build_order_base.html:126
#: templates/js/translated/build.js:2550 templates/js/translated/order.js:1677
#: templates/js/translated/order.js:1987 templates/js/translated/order.js:2497
-#: templates/js/translated/order.js:3517 templates/js/translated/part.js:971
+#: templates/js/translated/order.js:3517 templates/js/translated/part.js:1015
msgid "Target Date"
msgstr "Data scadenza"
@@ -1277,13 +1285,14 @@ msgid "Completed"
msgstr "Completato"
#: build/templates/build/build_base.html:176
-#: build/templates/build/detail.html:94 order/models.py:1100
-#: order/models.py:1185 order/models.py:1320
+#: build/templates/build/detail.html:94 order/models.py:1116
+#: order/models.py:1201 order/models.py:1336
#: order/templates/order/sales_order_base.html:9
#: order/templates/order/sales_order_base.html:28
#: report/templates/report/inventree_build_order_base.html:136
#: report/templates/report/inventree_so_report.html:77
#: stock/templates/stock/item_base.html:370
+#: templates/email/overdue_sales_order.html:15
#: templates/js/translated/order.js:2436
msgid "Sales Order"
msgstr "Ordini di Vendita"
@@ -1319,7 +1328,7 @@ msgstr ""
msgid "Stock can be taken from any available location."
msgstr "Lo stock può essere prelevato da qualsiasi posizione disponibile."
-#: build/templates/build/detail.html:49 order/models.py:1034
+#: build/templates/build/detail.html:49 order/models.py:1050
#: templates/js/translated/order.js:1321 templates/js/translated/order.js:2029
msgid "Destination"
msgstr "Destinazione"
@@ -1336,8 +1345,8 @@ msgstr ""
#: stock/templates/stock/item_base.html:170
#: templates/js/translated/build.js:1179
#: templates/js/translated/model_renderers.js:112
-#: templates/js/translated/stock.js:971 templates/js/translated/stock.js:1776
-#: templates/js/translated/stock.js:2606
+#: templates/js/translated/stock.js:970 templates/js/translated/stock.js:1786
+#: templates/js/translated/stock.js:2616
#: templates/js/translated/table_filters.js:151
#: templates/js/translated/table_filters.js:242
msgid "Batch"
@@ -1716,7 +1725,7 @@ msgstr "Copia Template Parametri Categoria"
msgid "Copy category parameter templates when creating a part"
msgstr "Copia i modelli dei parametri categoria quando si crea un articolo"
-#: common/models.py:820 part/models.py:2372 report/models.py:157
+#: common/models.py:820 part/models.py:2360 report/models.py:157
#: templates/js/translated/table_filters.js:38
#: templates/js/translated/table_filters.js:444
msgid "Template"
@@ -1726,7 +1735,7 @@ msgstr ""
msgid "Parts are templates by default"
msgstr "Gli articoli sono modelli per impostazione predefinita"
-#: common/models.py:827 part/models.py:884 templates/js/translated/bom.js:1390
+#: common/models.py:827 part/models.py:884 templates/js/translated/bom.js:1384
#: templates/js/translated/table_filters.js:168
#: templates/js/translated/table_filters.js:460
msgid "Assembly"
@@ -1880,576 +1889,584 @@ msgid "Default page size for PDF reports"
msgstr "Dimensione predefinita della pagina per i report PDF"
#: common/models.py:968
-msgid "Test Reports"
-msgstr "Stampa di prova"
+msgid "Enable Test Reports"
+msgstr ""
#: common/models.py:969
msgid "Enable generation of test reports"
msgstr "Abilita generazione di stampe di prova"
#: common/models.py:975
-msgid "Batch Code Template"
+msgid "Attach Test Reports"
msgstr ""
#: common/models.py:976
+msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item"
+msgstr ""
+
+#: common/models.py:982
+msgid "Batch Code Template"
+msgstr ""
+
+#: common/models.py:983
msgid "Template for generating default batch codes for stock items"
msgstr ""
-#: common/models.py:981
+#: common/models.py:988
msgid "Stock Expiry"
msgstr "Scadenza giacenza"
-#: common/models.py:982
+#: common/models.py:989
msgid "Enable stock expiry functionality"
msgstr "Abilita funzionalità di scadenza della giacenza"
-#: common/models.py:988
+#: common/models.py:995
msgid "Sell Expired Stock"
msgstr "Vendi giacenza scaduta"
-#: common/models.py:989
+#: common/models.py:996
msgid "Allow sale of expired stock"
msgstr "Consenti la vendita di stock scaduti"
-#: common/models.py:995
+#: common/models.py:1002
msgid "Stock Stale Time"
msgstr ""
-#: common/models.py:996
+#: common/models.py:1003
msgid "Number of days stock items are considered stale before expiring"
msgstr "Numero di giorni in cui gli articoli in magazzino sono considerati obsoleti prima della scadenza"
-#: common/models.py:998
+#: common/models.py:1005
msgid "days"
msgstr "giorni"
-#: common/models.py:1003
+#: common/models.py:1010
msgid "Build Expired Stock"
msgstr ""
-#: common/models.py:1004
+#: common/models.py:1011
msgid "Allow building with expired stock"
msgstr ""
-#: common/models.py:1010
+#: common/models.py:1017
msgid "Stock Ownership Control"
msgstr "Controllo della proprietà della giacenza"
-#: common/models.py:1011
+#: common/models.py:1018
msgid "Enable ownership control over stock locations and items"
msgstr "Abilita il controllo della proprietà sulle posizioni e gli oggetti in giacenza"
-#: common/models.py:1017
+#: common/models.py:1024
msgid "Build Order Reference Prefix"
msgstr ""
-#: common/models.py:1018
+#: common/models.py:1025
msgid "Prefix value for build order reference"
msgstr ""
-#: common/models.py:1023
+#: common/models.py:1030
msgid "Build Order Reference Regex"
msgstr ""
-#: common/models.py:1024
+#: common/models.py:1031
msgid "Regular expression pattern for matching build order reference"
msgstr ""
-#: common/models.py:1028
+#: common/models.py:1035
msgid "Sales Order Reference Prefix"
msgstr ""
-#: common/models.py:1029
+#: common/models.py:1036
msgid "Prefix value for sales order reference"
msgstr ""
-#: common/models.py:1034
+#: common/models.py:1041
msgid "Sales Order Default Shipment"
msgstr ""
-#: common/models.py:1035
+#: common/models.py:1042
msgid "Enable creation of default shipment with sales orders"
msgstr ""
-#: common/models.py:1041
+#: common/models.py:1048
msgid "Purchase Order Reference Prefix"
msgstr "Referenza ordine d'acquisto"
-#: common/models.py:1042
+#: common/models.py:1049
msgid "Prefix value for purchase order reference"
msgstr ""
-#: common/models.py:1048
+#: common/models.py:1055
msgid "Enable password forgot"
msgstr "Abilita password dimenticata"
-#: common/models.py:1049
+#: common/models.py:1056
msgid "Enable password forgot function on the login pages"
msgstr "Abilita la funzione password dimenticata nelle pagine di accesso"
-#: common/models.py:1055
+#: common/models.py:1062
msgid "Enable registration"
msgstr "Abilita registrazione"
-#: common/models.py:1056
+#: common/models.py:1063
msgid "Enable self-registration for users on the login pages"
msgstr "Abilita auto-registrazione per gli utenti nelle pagine di accesso"
-#: common/models.py:1062
+#: common/models.py:1069
msgid "Enable SSO"
msgstr "SSO abilitato"
-#: common/models.py:1063
+#: common/models.py:1070
msgid "Enable SSO on the login pages"
msgstr "Abilita SSO nelle pagine di accesso"
-#: common/models.py:1069
+#: common/models.py:1076
msgid "Email required"
msgstr "Email richiesta"
-#: common/models.py:1070
+#: common/models.py:1077
msgid "Require user to supply mail on signup"
msgstr "Richiedi all'utente di fornire una email al momento dell'iscrizione"
-#: common/models.py:1076
+#: common/models.py:1083
msgid "Auto-fill SSO users"
msgstr "Riempimento automatico degli utenti SSO"
-#: common/models.py:1077
+#: common/models.py:1084
msgid "Automatically fill out user-details from SSO account-data"
msgstr "Compila automaticamente i dettagli dell'utente dai dati dell'account SSO"
-#: common/models.py:1083
+#: common/models.py:1090
msgid "Mail twice"
msgstr ""
-#: common/models.py:1084
+#: common/models.py:1091
msgid "On signup ask users twice for their mail"
msgstr ""
-#: common/models.py:1090
+#: common/models.py:1097
msgid "Password twice"
msgstr ""
-#: common/models.py:1091
+#: common/models.py:1098
msgid "On signup ask users twice for their password"
msgstr ""
-#: common/models.py:1097
+#: common/models.py:1104
msgid "Group on signup"
msgstr ""
-#: common/models.py:1098
+#: common/models.py:1105
msgid "Group to which new users are assigned on registration"
msgstr ""
-#: common/models.py:1104
+#: common/models.py:1111
msgid "Enforce MFA"
msgstr ""
-#: common/models.py:1105
+#: common/models.py:1112
msgid "Users must use multifactor security."
msgstr ""
-#: common/models.py:1111
+#: common/models.py:1118
msgid "Check plugins on startup"
msgstr ""
-#: common/models.py:1112
+#: common/models.py:1119
msgid "Check that all plugins are installed on startup - enable in container enviroments"
msgstr ""
-#: common/models.py:1120
+#: common/models.py:1127
msgid "Enable URL integration"
msgstr ""
-#: common/models.py:1121
+#: common/models.py:1128
msgid "Enable plugins to add URL routes"
msgstr ""
-#: common/models.py:1128
+#: common/models.py:1135
msgid "Enable navigation integration"
msgstr ""
-#: common/models.py:1129
+#: common/models.py:1136
msgid "Enable plugins to integrate into navigation"
msgstr ""
-#: common/models.py:1136
+#: common/models.py:1143
msgid "Enable app integration"
msgstr ""
-#: common/models.py:1137
+#: common/models.py:1144
msgid "Enable plugins to add apps"
msgstr ""
-#: common/models.py:1144
+#: common/models.py:1151
msgid "Enable schedule integration"
msgstr ""
-#: common/models.py:1145
+#: common/models.py:1152
msgid "Enable plugins to run scheduled tasks"
msgstr ""
-#: common/models.py:1152
+#: common/models.py:1159
msgid "Enable event integration"
msgstr ""
-#: common/models.py:1153
+#: common/models.py:1160
msgid "Enable plugins to respond to internal events"
msgstr ""
-#: common/models.py:1170 common/models.py:1492
+#: common/models.py:1177 common/models.py:1499
msgid "Settings key (must be unique - case insensitive"
msgstr "Tasto impostazioni (deve essere univoco - maiuscole e minuscole"
-#: common/models.py:1192
+#: common/models.py:1199
msgid "Show subscribed parts"
msgstr ""
-#: common/models.py:1193
+#: common/models.py:1200
msgid "Show subscribed parts on the homepage"
msgstr ""
-#: common/models.py:1199
+#: common/models.py:1206
msgid "Show subscribed categories"
msgstr "Mostra le categorie sottoscritte"
-#: common/models.py:1200
+#: common/models.py:1207
msgid "Show subscribed part categories on the homepage"
msgstr "Mostra le categorie dei componenti sottoscritti nella homepage"
-#: common/models.py:1206
+#: common/models.py:1213
msgid "Show latest parts"
msgstr "Mostra ultimi articoli"
-#: common/models.py:1207
+#: common/models.py:1214
msgid "Show latest parts on the homepage"
msgstr ""
-#: common/models.py:1213
+#: common/models.py:1220
msgid "Recent Part Count"
msgstr ""
-#: common/models.py:1214
+#: common/models.py:1221
msgid "Number of recent parts to display on index page"
msgstr ""
-#: common/models.py:1220
+#: common/models.py:1227
msgid "Show unvalidated BOMs"
msgstr ""
-#: common/models.py:1221
+#: common/models.py:1228
msgid "Show BOMs that await validation on the homepage"
msgstr ""
-#: common/models.py:1227
+#: common/models.py:1234
msgid "Show recent stock changes"
msgstr ""
-#: common/models.py:1228
+#: common/models.py:1235
msgid "Show recently changed stock items on the homepage"
msgstr ""
-#: common/models.py:1234
+#: common/models.py:1241
msgid "Recent Stock Count"
msgstr ""
-#: common/models.py:1235
+#: common/models.py:1242
msgid "Number of recent stock items to display on index page"
msgstr ""
-#: common/models.py:1241
+#: common/models.py:1248
msgid "Show low stock"
msgstr ""
-#: common/models.py:1242
+#: common/models.py:1249
msgid "Show low stock items on the homepage"
msgstr ""
-#: common/models.py:1248
+#: common/models.py:1255
msgid "Show depleted stock"
msgstr ""
-#: common/models.py:1249
+#: common/models.py:1256
msgid "Show depleted stock items on the homepage"
msgstr ""
-#: common/models.py:1255
+#: common/models.py:1262
msgid "Show needed stock"
msgstr ""
-#: common/models.py:1256
+#: common/models.py:1263
msgid "Show stock items needed for builds on the homepage"
msgstr ""
-#: common/models.py:1262
+#: common/models.py:1269
msgid "Show expired stock"
msgstr ""
-#: common/models.py:1263
+#: common/models.py:1270
msgid "Show expired stock items on the homepage"
msgstr ""
-#: common/models.py:1269
+#: common/models.py:1276
msgid "Show stale stock"
msgstr ""
-#: common/models.py:1270
+#: common/models.py:1277
msgid "Show stale stock items on the homepage"
msgstr ""
-#: common/models.py:1276
+#: common/models.py:1283
msgid "Show pending builds"
msgstr ""
-#: common/models.py:1277
+#: common/models.py:1284
msgid "Show pending builds on the homepage"
msgstr ""
-#: common/models.py:1283
+#: common/models.py:1290
msgid "Show overdue builds"
msgstr ""
-#: common/models.py:1284
+#: common/models.py:1291
msgid "Show overdue builds on the homepage"
msgstr ""
-#: common/models.py:1290
+#: common/models.py:1297
msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:1291
+#: common/models.py:1298
msgid "Show outstanding POs on the homepage"
msgstr ""
-#: common/models.py:1297
+#: common/models.py:1304
msgid "Show overdue POs"
msgstr ""
-#: common/models.py:1298
+#: common/models.py:1305
msgid "Show overdue POs on the homepage"
msgstr ""
-#: common/models.py:1304
+#: common/models.py:1311
msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:1305
+#: common/models.py:1312
msgid "Show outstanding SOs on the homepage"
msgstr ""
-#: common/models.py:1311
+#: common/models.py:1318
msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:1312
+#: common/models.py:1319
msgid "Show overdue SOs on the homepage"
msgstr ""
-#: common/models.py:1317
+#: common/models.py:1324
msgid "Enable label printing"
msgstr ""
-#: common/models.py:1318
+#: common/models.py:1325
msgid "Enable label printing from the web interface"
msgstr ""
-#: common/models.py:1324
+#: common/models.py:1331
msgid "Inline label display"
msgstr "Visualizzazione dell'etichetta in linea"
-#: common/models.py:1325
+#: common/models.py:1332
msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr "Visualizza le etichette PDF nel browser, invece di scaricare come file"
-#: common/models.py:1331
+#: common/models.py:1338
msgid "Inline report display"
msgstr "Visualizzazione dell'etichetta in linea"
-#: common/models.py:1332
+#: common/models.py:1339
msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr "Visualizza le etichette PDF nel browser, invece di scaricare come file"
-#: common/models.py:1338
+#: common/models.py:1345
msgid "Search Parts"
msgstr ""
-#: common/models.py:1339
+#: common/models.py:1346
msgid "Display parts in search preview window"
msgstr ""
-#: common/models.py:1345
+#: common/models.py:1352
msgid "Seach Supplier Parts"
msgstr ""
-#: common/models.py:1346
+#: common/models.py:1353
msgid "Display supplier parts in search preview window"
msgstr ""
-#: common/models.py:1352
+#: common/models.py:1359
msgid "Search Manufacturer Parts"
msgstr ""
-#: common/models.py:1353
+#: common/models.py:1360
msgid "Display manufacturer parts in search preview window"
msgstr ""
-#: common/models.py:1359
+#: common/models.py:1366
msgid "Hide Inactive Parts"
msgstr ""
-#: common/models.py:1360
+#: common/models.py:1367
msgid "Excluded inactive parts from search preview window"
msgstr ""
-#: common/models.py:1366
+#: common/models.py:1373
msgid "Search Categories"
msgstr ""
-#: common/models.py:1367
+#: common/models.py:1374
msgid "Display part categories in search preview window"
msgstr ""
-#: common/models.py:1373
+#: common/models.py:1380
msgid "Search Stock"
msgstr ""
-#: common/models.py:1374
+#: common/models.py:1381
msgid "Display stock items in search preview window"
msgstr ""
-#: common/models.py:1380
+#: common/models.py:1387
msgid "Hide Unavailable Stock Items"
msgstr ""
-#: common/models.py:1381
+#: common/models.py:1388
msgid "Exclude stock items which are not available from the search preview window"
msgstr ""
-#: common/models.py:1387
+#: common/models.py:1394
msgid "Search Locations"
msgstr ""
-#: common/models.py:1388
+#: common/models.py:1395
msgid "Display stock locations in search preview window"
msgstr ""
-#: common/models.py:1394
+#: common/models.py:1401
msgid "Search Companies"
msgstr ""
-#: common/models.py:1395
+#: common/models.py:1402
msgid "Display companies in search preview window"
msgstr ""
-#: common/models.py:1401
+#: common/models.py:1408
msgid "Search Purchase Orders"
msgstr ""
-#: common/models.py:1402
+#: common/models.py:1409
msgid "Display purchase orders in search preview window"
msgstr ""
-#: common/models.py:1408
+#: common/models.py:1415
msgid "Exclude Inactive Purchase Orders"
msgstr ""
-#: common/models.py:1409
+#: common/models.py:1416
msgid "Exclude inactive purchase orders from search preview window"
msgstr ""
-#: common/models.py:1415
+#: common/models.py:1422
msgid "Search Sales Orders"
msgstr ""
-#: common/models.py:1416
+#: common/models.py:1423
msgid "Display sales orders in search preview window"
msgstr ""
-#: common/models.py:1422
+#: common/models.py:1429
msgid "Exclude Inactive Sales Orders"
msgstr ""
-#: common/models.py:1423
+#: common/models.py:1430
msgid "Exclude inactive sales orders from search preview window"
msgstr ""
-#: common/models.py:1429
+#: common/models.py:1436
msgid "Search Preview Results"
msgstr "Risultati Dell'Anteprima Di Ricerca"
-#: common/models.py:1430
+#: common/models.py:1437
msgid "Number of results to show in each section of the search preview window"
msgstr ""
-#: common/models.py:1436
+#: common/models.py:1443
msgid "Show Quantity in Forms"
msgstr ""
-#: common/models.py:1437
+#: common/models.py:1444
msgid "Display available part quantity in some forms"
msgstr ""
-#: common/models.py:1443
+#: common/models.py:1450
msgid "Escape Key Closes Forms"
msgstr ""
-#: common/models.py:1444
+#: common/models.py:1451
msgid "Use the escape key to close modal forms"
msgstr ""
-#: common/models.py:1450
+#: common/models.py:1457
msgid "Fixed Navbar"
msgstr ""
-#: common/models.py:1451
+#: common/models.py:1458
msgid "The navbar position is fixed to the top of the screen"
msgstr ""
-#: common/models.py:1457
+#: common/models.py:1464
msgid "Date Format"
msgstr ""
-#: common/models.py:1458
+#: common/models.py:1465
msgid "Preferred format for displaying dates"
msgstr ""
-#: common/models.py:1472 part/templates/part/detail.html:39
+#: common/models.py:1479 part/templates/part/detail.html:39
msgid "Part Scheduling"
msgstr ""
-#: common/models.py:1473
+#: common/models.py:1480
msgid "Display part scheduling information"
msgstr ""
-#: common/models.py:1537 company/forms.py:37
+#: common/models.py:1544 company/forms.py:37
msgid "Price break quantity"
msgstr ""
-#: common/models.py:1544 company/serializers.py:288
-#: company/templates/company/supplier_part.html:263 order/models.py:949
-#: templates/js/translated/part.js:998 templates/js/translated/part.js:1974
+#: common/models.py:1551 company/serializers.py:290
+#: company/templates/company/supplier_part.html:263 order/models.py:965
+#: templates/js/translated/part.js:1042 templates/js/translated/part.js:2070
msgid "Price"
msgstr "Prezzo"
-#: common/models.py:1545
+#: common/models.py:1552
msgid "Unit price at specified quantity"
msgstr ""
-#: common/models.py:1705 common/models.py:1883
+#: common/models.py:1712 common/models.py:1890
msgid "Endpoint"
msgstr ""
-#: common/models.py:1706
+#: common/models.py:1713
msgid "Endpoint at which this webhook is received"
msgstr ""
-#: common/models.py:1715
+#: common/models.py:1722
msgid "Name for this webhook"
msgstr ""
-#: common/models.py:1720 part/models.py:911 plugin/models.py:99
+#: common/models.py:1727 part/models.py:911 plugin/models.py:99
#: templates/js/translated/table_filters.js:34
#: templates/js/translated/table_filters.js:96
#: templates/js/translated/table_filters.js:308
@@ -2457,79 +2474,89 @@ msgstr ""
msgid "Active"
msgstr "Attivo"
-#: common/models.py:1721
+#: common/models.py:1728
msgid "Is this webhook active"
msgstr ""
-#: common/models.py:1735
+#: common/models.py:1742
msgid "Token"
msgstr ""
-#: common/models.py:1736
+#: common/models.py:1743
msgid "Token for access"
msgstr ""
-#: common/models.py:1743
+#: common/models.py:1750
msgid "Secret"
msgstr ""
-#: common/models.py:1744
+#: common/models.py:1751
msgid "Shared secret for HMAC"
msgstr ""
-#: common/models.py:1850
+#: common/models.py:1857
msgid "Message ID"
msgstr ""
-#: common/models.py:1851
+#: common/models.py:1858
msgid "Unique identifier for this message"
msgstr ""
-#: common/models.py:1859
+#: common/models.py:1866
msgid "Host"
msgstr ""
-#: common/models.py:1860
+#: common/models.py:1867
msgid "Host from which this message was received"
msgstr ""
-#: common/models.py:1867
+#: common/models.py:1874
msgid "Header"
msgstr ""
-#: common/models.py:1868
+#: common/models.py:1875
msgid "Header of this message"
msgstr ""
-#: common/models.py:1874
+#: common/models.py:1881
msgid "Body"
msgstr ""
-#: common/models.py:1875
+#: common/models.py:1882
msgid "Body of this message"
msgstr ""
-#: common/models.py:1884
+#: common/models.py:1891
msgid "Endpoint on which this message was received"
msgstr ""
-#: common/models.py:1889
+#: common/models.py:1896
msgid "Worked on"
msgstr ""
-#: common/models.py:1890
+#: common/models.py:1897
msgid "Was the work on this message finished?"
msgstr ""
+#: common/notifications.py:292
+#, python-brace-format
+msgid "New {verbose_name}"
+msgstr ""
+
+#: common/notifications.py:294
+#, python-brace-format
+msgid "A new {verbose_name} has been created and ,assigned to you"
+msgstr ""
+
#: common/views.py:87 order/templates/order/purchase_order_detail.html:23
-#: order/views.py:102 part/views.py:191
+#: order/views.py:102 part/views.py:116
#: templates/patterns/wizard/upload.html:37
msgid "Upload File"
msgstr "Carica file"
#: common/views.py:88 order/views.py:103
#: part/templates/part/import_wizard/ajax_match_fields.html:45
-#: part/views.py:192 templates/patterns/wizard/match_fields.html:51
+#: part/views.py:117 templates/patterns/wizard/match_fields.html:51
msgid "Match Fields"
msgstr "Abbina Campi"
@@ -2545,19 +2572,19 @@ msgstr "Corrispondenza campi non riuscita"
msgid "Parts imported"
msgstr "Articoli importati"
-#: common/views.py:507 order/templates/order/order_wizard/match_parts.html:19
+#: common/views.py:511 order/templates/order/order_wizard/match_parts.html:19
#: part/templates/part/import_wizard/match_references.html:19
#: templates/patterns/wizard/match_fields.html:26
#: templates/patterns/wizard/upload.html:35
msgid "Previous Step"
msgstr "Passaggio Precedente"
-#: company/forms.py:16 part/forms.py:21
+#: company/forms.py:16 part/forms.py:18
#: templates/InvenTree/settings/mixins/urls.html:14
msgid "URL"
msgstr ""
-#: company/forms.py:17 part/forms.py:22
+#: company/forms.py:17 part/forms.py:19
msgid "Image URL"
msgstr "URL Immagine"
@@ -2571,7 +2598,7 @@ msgstr "Descrizione dell'azienda"
#: company/models.py:104 company/templates/company/company_base.html:100
#: templates/InvenTree/settings/plugin_settings.html:55
-#: templates/js/translated/company.js:405
+#: templates/js/translated/company.js:399
msgid "Website"
msgstr "Sito Web"
@@ -2644,9 +2671,9 @@ msgstr "è un produttore"
msgid "Does this company manufacture parts?"
msgstr ""
-#: company/models.py:144 company/serializers.py:294
-#: company/templates/company/company_base.html:106 part/serializers.py:137
-#: part/serializers.py:168 stock/serializers.py:162
+#: company/models.py:144 company/serializers.py:296
+#: company/templates/company/company_base.html:106 part/serializers.py:139
+#: part/serializers.py:170 stock/serializers.py:162
msgid "Currency"
msgstr "Valuta"
@@ -2667,10 +2694,10 @@ msgstr "Seleziona articolo"
#: company/templates/company/manufacturer_part.html:90
#: company/templates/company/supplier_part.html:103
#: stock/templates/stock/item_base.html:212
-#: templates/js/translated/company.js:389
-#: templates/js/translated/company.js:488
-#: templates/js/translated/company.js:632
-#: templates/js/translated/company.js:917 templates/js/translated/part.js:235
+#: templates/js/translated/company.js:383
+#: templates/js/translated/company.js:484
+#: templates/js/translated/company.js:617
+#: templates/js/translated/company.js:902 templates/js/translated/part.js:235
#: templates/js/translated/table_filters.js:411
msgid "Manufacturer"
msgstr "Produttore"
@@ -2681,11 +2708,11 @@ msgstr "Seleziona Produttore"
#: company/models.py:266 company/templates/company/manufacturer_part.html:101
#: company/templates/company/supplier_part.html:111
-#: templates/js/translated/company.js:255
-#: templates/js/translated/company.js:487
-#: templates/js/translated/company.js:648
-#: templates/js/translated/company.js:935 templates/js/translated/order.js:1907
-#: templates/js/translated/part.js:246 templates/js/translated/part.js:956
+#: templates/js/translated/company.js:256
+#: templates/js/translated/company.js:483
+#: templates/js/translated/company.js:633
+#: templates/js/translated/company.js:920 templates/js/translated/order.js:1907
+#: templates/js/translated/part.js:246 templates/js/translated/part.js:1000
msgid "MPN"
msgstr "Codice articolo produttore (MPN)"
@@ -2714,9 +2741,9 @@ msgstr "Nome parametro"
#: company/models.py:361
#: report/templates/report/inventree_test_report_base.html:95
-#: stock/models.py:2080 templates/js/translated/company.js:540
-#: templates/js/translated/company.js:763 templates/js/translated/part.js:776
-#: templates/js/translated/stock.js:1294
+#: stock/models.py:2084 templates/js/translated/company.js:531
+#: templates/js/translated/company.js:748 templates/js/translated/part.js:820
+#: templates/js/translated/stock.js:1304
msgid "Value"
msgstr "Valore"
@@ -2724,10 +2751,10 @@ msgstr "Valore"
msgid "Parameter value"
msgstr "Valore del parametro"
-#: company/models.py:368 part/models.py:878 part/models.py:2339
+#: company/models.py:368 part/models.py:878 part/models.py:2327
#: part/templates/part/part_base.html:280
#: templates/InvenTree/settings/settings.html:351
-#: templates/js/translated/company.js:769 templates/js/translated/part.js:782
+#: templates/js/translated/company.js:754 templates/js/translated/part.js:826
msgid "Units"
msgstr "Unità"
@@ -2740,13 +2767,14 @@ msgid "Linked manufacturer part must reference the same base part"
msgstr "L'articolo del costruttore collegato deve riferirsi alla stesso articolo"
#: company/models.py:487 company/templates/company/company_base.html:81
-#: company/templates/company/supplier_part.html:87 order/models.py:303
+#: company/templates/company/supplier_part.html:87 order/models.py:308
#: order/templates/order/order_base.html:112 part/bom.py:237 part/bom.py:265
#: stock/templates/stock/item_base.html:229
-#: templates/js/translated/company.js:254
-#: templates/js/translated/company.js:393
-#: templates/js/translated/company.js:891 templates/js/translated/order.js:1643
-#: templates/js/translated/part.js:216 templates/js/translated/part.js:924
+#: templates/email/overdue_purchase_order.html:16
+#: templates/js/translated/company.js:255
+#: templates/js/translated/company.js:387
+#: templates/js/translated/company.js:876 templates/js/translated/order.js:1643
+#: templates/js/translated/part.js:216 templates/js/translated/part.js:968
#: templates/js/translated/table_filters.js:415
msgid "Supplier"
msgstr "Fornitore"
@@ -2756,9 +2784,9 @@ msgid "Select supplier"
msgstr "Seleziona fornitore"
#: company/models.py:493 company/templates/company/supplier_part.html:97
-#: part/bom.py:238 part/bom.py:266 templates/js/translated/company.js:253
+#: part/bom.py:238 part/bom.py:266 templates/js/translated/company.js:254
#: templates/js/translated/order.js:1894 templates/js/translated/part.js:227
-#: templates/js/translated/part.js:942
+#: templates/js/translated/part.js:986
msgid "SKU"
msgstr ""
@@ -2779,23 +2807,23 @@ msgid "Supplier part description"
msgstr "Descrizione articolo fornitore"
#: company/models.py:518 company/templates/company/supplier_part.html:125
-#: part/models.py:2573 part/templates/part/upload_bom.html:59
+#: part/models.py:2561 part/templates/part/upload_bom.html:59
#: report/templates/report/inventree_po_report.html:92
#: report/templates/report/inventree_so_report.html:93 stock/serializers.py:387
msgid "Note"
msgstr "Nota"
-#: company/models.py:522 part/models.py:1688
+#: company/models.py:522 part/models.py:1683
msgid "base cost"
msgstr "costo base"
-#: company/models.py:522 part/models.py:1688
+#: company/models.py:522 part/models.py:1683
msgid "Minimum charge (e.g. stocking fee)"
msgstr "Onere minimo (ad esempio tassa di stoccaggio)"
#: company/models.py:524 company/templates/company/supplier_part.html:118
#: stock/models.py:608 stock/templates/stock/item_base.html:245
-#: templates/js/translated/company.js:967 templates/js/translated/stock.js:1912
+#: templates/js/translated/company.js:952 templates/js/translated/stock.js:1922
msgid "Packaging"
msgstr "Confezionamento"
@@ -2803,7 +2831,7 @@ msgstr "Confezionamento"
msgid "Part packaging"
msgstr "Imballaggio del pezzo"
-#: company/models.py:526 part/models.py:1690
+#: company/models.py:526 part/models.py:1685
msgid "multiple"
msgstr "multiplo"
@@ -2825,7 +2853,7 @@ msgstr "Codice valuta"
#: company/templates/company/company_base.html:8
#: company/templates/company/company_base.html:12
-#: templates/InvenTree/search.html:177 templates/js/translated/company.js:378
+#: templates/InvenTree/search.html:177 templates/js/translated/company.js:372
msgid "Company"
msgstr "Azienda"
@@ -2843,7 +2871,7 @@ msgid "Edit company information"
msgstr "Modifica le informazioni dell'azienda"
#: company/templates/company/company_base.html:34
-#: templates/js/translated/company.js:321
+#: templates/js/translated/company.js:315
msgid "Edit Company"
msgstr "Modifica azienda"
@@ -2866,12 +2894,13 @@ msgstr "Carica nuova immagine"
msgid "Download image from URL"
msgstr "Scarica immagine dall'URL"
-#: company/templates/company/company_base.html:86 order/models.py:649
+#: company/templates/company/company_base.html:86 order/models.py:665
#: order/templates/order/sales_order_base.html:116 stock/models.py:627
-#: stock/models.py:628 stock/serializers.py:758
+#: stock/models.py:628 stock/serializers.py:745
#: stock/templates/stock/item_base.html:401
-#: templates/js/translated/company.js:385 templates/js/translated/order.js:2458
-#: templates/js/translated/stock.js:2431
+#: templates/email/overdue_sales_order.html:16
+#: templates/js/translated/company.js:379 templates/js/translated/order.js:2458
+#: templates/js/translated/stock.js:2441
#: templates/js/translated/table_filters.js:419
msgid "Customer"
msgstr "Cliente"
@@ -2999,7 +3028,7 @@ msgid "Supplier List"
msgstr "Elenco dei fornitori"
#: company/templates/company/manufacturer_part.html:15 company/views.py:45
-#: part/templates/part/prices.html:170 templates/InvenTree/search.html:179
+#: part/templates/part/prices.html:172 templates/InvenTree/search.html:179
#: templates/navbar.html:49
msgid "Manufacturers"
msgstr "Produttori"
@@ -3012,12 +3041,12 @@ msgid "Order part"
msgstr "Articoli ordinati"
#: company/templates/company/manufacturer_part.html:39
-#: templates/js/translated/company.js:680
+#: templates/js/translated/company.js:665
msgid "Edit manufacturer part"
msgstr ""
#: company/templates/company/manufacturer_part.html:43
-#: templates/js/translated/company.js:681
+#: templates/js/translated/company.js:666
msgid "Delete manufacturer part"
msgstr ""
@@ -3032,7 +3061,7 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:119
#: company/templates/company/supplier_part.html:15 company/views.py:39
-#: part/templates/part/part_sidebar.html:35 part/templates/part/prices.html:166
+#: part/templates/part/part_sidebar.html:35 part/templates/part/prices.html:168
#: templates/InvenTree/search.html:189 templates/navbar.html:48
msgid "Suppliers"
msgstr "Fornitori"
@@ -3092,18 +3121,18 @@ msgstr ""
#: company/templates/company/supplier_part.html:7
#: company/templates/company/supplier_part.html:24 stock/models.py:592
#: stock/templates/stock/item_base.html:238
-#: templates/js/translated/company.js:907 templates/js/translated/order.js:884
-#: templates/js/translated/stock.js:1869
+#: templates/js/translated/company.js:892 templates/js/translated/order.js:884
+#: templates/js/translated/stock.js:1879
msgid "Supplier Part"
msgstr "Articolo Fornitore"
#: company/templates/company/supplier_part.html:38
-#: templates/js/translated/company.js:980
+#: templates/js/translated/company.js:965
msgid "Edit supplier part"
msgstr "Modifica articolo fornitore"
#: company/templates/company/supplier_part.html:42
-#: templates/js/translated/company.js:981
+#: templates/js/translated/company.js:966
msgid "Delete supplier part"
msgstr "Elimina articolo fornitore"
@@ -3123,7 +3152,7 @@ msgstr "Crea nuova allocazione magazzino"
#: company/templates/company/supplier_part.html:148
#: part/templates/part/detail.html:24 stock/templates/stock/location.html:177
-#: templates/js/translated/stock.js:380
+#: templates/js/translated/stock.js:379
msgid "New Stock Item"
msgstr "Nuovo Elemento in giacenza"
@@ -3144,7 +3173,7 @@ msgstr "Informazioni Prezzi"
#: company/templates/company/supplier_part.html:191
#: company/templates/company/supplier_part.html:305
-#: part/templates/part/prices.html:274 templates/js/translated/part.js:2046
+#: part/templates/part/prices.html:276 templates/js/translated/part.js:2142
msgid "Add Price Break"
msgstr "Aggiungi riduzione prezzo"
@@ -3153,12 +3182,12 @@ msgid "No price break information found"
msgstr "Nessuna informazione di riduzione di prezzo trovata"
#: company/templates/company/supplier_part.html:231
-#: templates/js/translated/part.js:2056
+#: templates/js/translated/part.js:2152
msgid "Delete Price Break"
msgstr "Elimina riduzione di prezzo"
#: company/templates/company/supplier_part.html:245
-#: templates/js/translated/part.js:2070
+#: templates/js/translated/part.js:2166
msgid "Edit Price Break"
msgstr ""
@@ -3180,9 +3209,9 @@ msgstr ""
#: stock/templates/stock/stock_app_base.html:10
#: templates/InvenTree/search.html:151
#: templates/InvenTree/settings/sidebar.html:43
-#: templates/js/translated/bom.js:554 templates/js/translated/part.js:678
-#: templates/js/translated/part.js:1226 templates/js/translated/part.js:1387
-#: templates/js/translated/stock.js:904 templates/js/translated/stock.js:1687
+#: templates/js/translated/bom.js:554 templates/js/translated/part.js:722
+#: templates/js/translated/part.js:1270 templates/js/translated/part.js:1431
+#: templates/js/translated/stock.js:903 templates/js/translated/stock.js:1697
#: templates/navbar.html:31
msgid "Stock"
msgstr "Magazzino"
@@ -3209,7 +3238,7 @@ msgstr "Prezzi"
#: stock/templates/stock/location.html:173
#: stock/templates/stock/location_sidebar.html:7
#: templates/InvenTree/search.html:153 templates/js/translated/search.js:223
-#: templates/js/translated/stock.js:2307 users/models.py:39
+#: templates/js/translated/stock.js:2317 users/models.py:39
msgid "Stock Items"
msgstr "Articoli in magazzino"
@@ -3238,20 +3267,20 @@ msgstr "Aziende"
msgid "New Company"
msgstr "Nuova Azienda"
-#: company/views.py:112 part/views.py:576
+#: company/views.py:112 part/views.py:501
msgid "Download Image"
msgstr "Download Immagine"
-#: company/views.py:139 part/views.py:606
+#: company/views.py:139 part/views.py:531
msgid "Image size exceeds maximum allowable size for download"
msgstr "La dimensione dell'immagine supera la dimensione massima consentita per il download"
-#: company/views.py:146 part/views.py:613
+#: company/views.py:146 part/views.py:538
#, python-brace-format
msgid "Invalid response: {code}"
msgstr "Risposta non valida: {code}"
-#: company/views.py:155 part/views.py:622
+#: company/views.py:155 part/views.py:547
msgid "Supplied URL is not a valid image file"
msgstr "L'URL fornito non è un file immagine valido"
@@ -3320,313 +3349,314 @@ msgstr ""
msgid "Part query filters (comma-separated value of key=value pairs)"
msgstr ""
-#: order/models.py:133
+#: order/models.py:134
msgid "Order description"
msgstr "Descrizione ordine"
-#: order/models.py:135 order/models.py:1236
+#: order/models.py:136 order/models.py:1252
msgid "Link to external page"
msgstr ""
-#: order/models.py:143
+#: order/models.py:144
msgid "Created By"
msgstr "Creato Da"
-#: order/models.py:150
+#: order/models.py:151
msgid "User or group responsible for this order"
msgstr "Utente o gruppo responsabile di questo ordine"
-#: order/models.py:155
+#: order/models.py:156
msgid "Order notes"
msgstr "Note ordine"
-#: order/models.py:289 order/models.py:639
+#: order/models.py:294 order/models.py:655
msgid "Order reference"
msgstr "Riferimento ordine"
-#: order/models.py:294 order/models.py:654
+#: order/models.py:299 order/models.py:670
msgid "Purchase order status"
msgstr "Stato ordine d'acquisto"
-#: order/models.py:304
+#: order/models.py:309
msgid "Company from which the items are being ordered"
msgstr "Azienda da cui sono stati ordinati gli articoli"
-#: order/models.py:307 order/templates/order/order_base.html:124
+#: order/models.py:312 order/templates/order/order_base.html:124
#: templates/js/translated/order.js:1652
msgid "Supplier Reference"
msgstr "Riferimento fornitore"
-#: order/models.py:307
+#: order/models.py:312
msgid "Supplier order reference code"
msgstr "Codice di riferimento ordine fornitore"
-#: order/models.py:314
+#: order/models.py:319
msgid "received by"
msgstr "ricevuto da"
-#: order/models.py:319
+#: order/models.py:324
msgid "Issue Date"
msgstr "Data di emissione"
-#: order/models.py:320
+#: order/models.py:325
msgid "Date order was issued"
msgstr "Data di emissione ordine"
-#: order/models.py:325
+#: order/models.py:330
msgid "Target Delivery Date"
msgstr "Data di consegna programmata"
-#: order/models.py:326
+#: order/models.py:331
msgid "Expected date for order delivery. Order will be overdue after this date."
msgstr "Data prevista per la consegna dell'ordine. L'ordine scadrà dopo questa data."
-#: order/models.py:332
+#: order/models.py:337
msgid "Date order was completed"
msgstr "Data ordine completato"
-#: order/models.py:368
+#: order/models.py:373
msgid "Part supplier must match PO supplier"
msgstr ""
-#: order/models.py:512
+#: order/models.py:517
msgid "Quantity must be a positive number"
msgstr ""
-#: order/models.py:650
+#: order/models.py:666
msgid "Company to which the items are being sold"
msgstr ""
-#: order/models.py:656
+#: order/models.py:672
msgid "Customer Reference "
msgstr ""
-#: order/models.py:656
+#: order/models.py:672
msgid "Customer order reference code"
msgstr ""
-#: order/models.py:661
+#: order/models.py:677
msgid "Target date for order completion. Order will be overdue after this date."
msgstr ""
-#: order/models.py:664 order/models.py:1190
+#: order/models.py:680 order/models.py:1206
#: templates/js/translated/order.js:2505 templates/js/translated/order.js:2656
msgid "Shipment Date"
msgstr ""
-#: order/models.py:671
+#: order/models.py:687
msgid "shipped by"
msgstr ""
-#: order/models.py:726
+#: order/models.py:742
msgid "Order cannot be completed as no parts have been assigned"
msgstr ""
-#: order/models.py:730
+#: order/models.py:746
msgid "Only a pending order can be marked as complete"
msgstr ""
-#: order/models.py:733
+#: order/models.py:749
msgid "Order cannot be completed as there are incomplete shipments"
msgstr ""
-#: order/models.py:736
+#: order/models.py:752
msgid "Order cannot be completed as there are incomplete line items"
msgstr ""
-#: order/models.py:910
+#: order/models.py:926
msgid "Item quantity"
msgstr ""
-#: order/models.py:916
+#: order/models.py:932
msgid "Line item reference"
msgstr ""
-#: order/models.py:918
+#: order/models.py:934
msgid "Line item notes"
msgstr ""
-#: order/models.py:923
+#: order/models.py:939
msgid "Target shipping date for this line item"
msgstr ""
-#: order/models.py:941
+#: order/models.py:957
msgid "Context"
msgstr ""
-#: order/models.py:942
+#: order/models.py:958
msgid "Additional context for this line"
msgstr ""
-#: order/models.py:950
+#: order/models.py:966
msgid "Unit price"
msgstr ""
-#: order/models.py:980
+#: order/models.py:996
msgid "Supplier part must match supplier"
msgstr ""
-#: order/models.py:988
+#: order/models.py:1004
msgid "deleted"
msgstr ""
-#: order/models.py:994 order/models.py:1074 order/models.py:1099
-#: order/models.py:1184 order/models.py:1320
+#: order/models.py:1010 order/models.py:1090 order/models.py:1115
+#: order/models.py:1200 order/models.py:1336
#: templates/js/translated/order.js:3112
msgid "Order"
msgstr ""
-#: order/models.py:995 order/models.py:1074
+#: order/models.py:1011 order/models.py:1090
#: order/templates/order/order_base.html:9
#: order/templates/order/order_base.html:18
#: report/templates/report/inventree_po_report.html:76
#: stock/templates/stock/item_base.html:184
+#: templates/email/overdue_purchase_order.html:15
#: templates/js/translated/order.js:885 templates/js/translated/order.js:1621
-#: templates/js/translated/part.js:899 templates/js/translated/stock.js:1846
-#: templates/js/translated/stock.js:2412
+#: templates/js/translated/part.js:943 templates/js/translated/stock.js:1856
+#: templates/js/translated/stock.js:2422
msgid "Purchase Order"
msgstr ""
-#: order/models.py:1013
+#: order/models.py:1029
msgid "Supplier part"
msgstr "Articolo Fornitore"
-#: order/models.py:1020 order/templates/order/order_base.html:169
+#: order/models.py:1036 order/templates/order/order_base.html:169
#: templates/js/translated/order.js:1318 templates/js/translated/order.js:2009
-#: templates/js/translated/part.js:993 templates/js/translated/part.js:1020
+#: templates/js/translated/part.js:1037 templates/js/translated/part.js:1064
#: templates/js/translated/table_filters.js:330
msgid "Received"
msgstr ""
-#: order/models.py:1021
+#: order/models.py:1037
msgid "Number of items received"
msgstr ""
-#: order/models.py:1028 part/templates/part/prices.html:179 stock/models.py:722
+#: order/models.py:1044 part/templates/part/prices.html:181 stock/models.py:722
#: stock/serializers.py:153 stock/templates/stock/item_base.html:191
-#: templates/js/translated/stock.js:1900
+#: templates/js/translated/stock.js:1910
msgid "Purchase Price"
msgstr ""
-#: order/models.py:1029
+#: order/models.py:1045
msgid "Unit purchase price"
msgstr ""
-#: order/models.py:1037
+#: order/models.py:1053
msgid "Where does the Purchaser want this item to be stored?"
msgstr ""
-#: order/models.py:1109 part/templates/part/part_pricing.html:112
-#: part/templates/part/prices.html:119 part/templates/part/prices.html:288
+#: order/models.py:1125 part/templates/part/part_pricing.html:115
+#: part/templates/part/prices.html:121 part/templates/part/prices.html:290
msgid "Sale Price"
msgstr ""
-#: order/models.py:1110
+#: order/models.py:1126
msgid "Unit sale price"
msgstr ""
-#: order/models.py:1115
+#: order/models.py:1131
msgid "Shipped quantity"
msgstr ""
-#: order/models.py:1191
+#: order/models.py:1207
msgid "Date of shipment"
msgstr ""
-#: order/models.py:1198
+#: order/models.py:1214
msgid "Checked By"
msgstr ""
-#: order/models.py:1199
+#: order/models.py:1215
msgid "User who checked this shipment"
msgstr ""
-#: order/models.py:1207
+#: order/models.py:1223
msgid "Shipment number"
msgstr ""
-#: order/models.py:1214
+#: order/models.py:1230
msgid "Shipment notes"
msgstr ""
-#: order/models.py:1221
+#: order/models.py:1237
msgid "Tracking Number"
msgstr ""
-#: order/models.py:1222
+#: order/models.py:1238
msgid "Shipment tracking information"
msgstr ""
-#: order/models.py:1229
+#: order/models.py:1245
msgid "Invoice Number"
msgstr ""
-#: order/models.py:1230
+#: order/models.py:1246
msgid "Reference number for associated invoice"
msgstr ""
-#: order/models.py:1248
+#: order/models.py:1264
msgid "Shipment has already been sent"
msgstr ""
-#: order/models.py:1251
+#: order/models.py:1267
msgid "Shipment has no allocated stock items"
msgstr ""
-#: order/models.py:1354 order/models.py:1356
+#: order/models.py:1370 order/models.py:1372
msgid "Stock item has not been assigned"
msgstr ""
-#: order/models.py:1360
+#: order/models.py:1376
msgid "Cannot allocate stock item to a line with a different part"
msgstr ""
-#: order/models.py:1362
+#: order/models.py:1378
msgid "Cannot allocate stock to a line without a part"
msgstr ""
-#: order/models.py:1365
+#: order/models.py:1381
msgid "Allocation quantity cannot exceed stock quantity"
msgstr "La quantità di ripartizione non puo' superare la disponibilità della giacenza"
-#: order/models.py:1369
+#: order/models.py:1385
msgid "StockItem is over-allocated"
msgstr ""
-#: order/models.py:1375 order/serializers.py:1045
+#: order/models.py:1391 order/serializers.py:1047
msgid "Quantity must be 1 for serialized stock item"
msgstr ""
-#: order/models.py:1378
+#: order/models.py:1394
msgid "Sales order does not match shipment"
msgstr ""
-#: order/models.py:1379
+#: order/models.py:1395
msgid "Shipment does not match sales order"
msgstr ""
-#: order/models.py:1387
+#: order/models.py:1403
msgid "Line"
msgstr ""
-#: order/models.py:1395 order/serializers.py:1149 order/serializers.py:1273
+#: order/models.py:1411 order/serializers.py:1151 order/serializers.py:1275
#: templates/js/translated/model_renderers.js:301
msgid "Shipment"
msgstr ""
-#: order/models.py:1396
+#: order/models.py:1412
msgid "Sales order shipment reference"
msgstr ""
-#: order/models.py:1408 templates/InvenTree/notifications/notifications.html:70
+#: order/models.py:1424 templates/InvenTree/notifications/notifications.html:70
msgid "Item"
msgstr ""
-#: order/models.py:1409
+#: order/models.py:1425
msgid "Select stock item to allocate"
msgstr ""
-#: order/models.py:1412
+#: order/models.py:1428
msgid "Enter stock allocation quantity"
msgstr "Inserisci la quantità assegnata alla giacenza"
@@ -3662,7 +3692,7 @@ msgstr ""
msgid "Purchase order must match supplier"
msgstr ""
-#: order/serializers.py:406 order/serializers.py:1117
+#: order/serializers.py:406 order/serializers.py:1119
msgid "Line Item"
msgstr ""
@@ -3710,42 +3740,60 @@ msgstr "La destinazione deve essere specificata"
msgid "Supplied barcode values must be unique"
msgstr ""
-#: order/serializers.py:866
+#: order/serializers.py:868
msgid "Sale price currency"
msgstr ""
-#: order/serializers.py:947
+#: order/serializers.py:949
msgid "No shipment details provided"
msgstr ""
-#: order/serializers.py:1006 order/serializers.py:1126
+#: order/serializers.py:1008 order/serializers.py:1128
msgid "Line item is not associated with this order"
msgstr ""
-#: order/serializers.py:1028
+#: order/serializers.py:1030
msgid "Quantity must be positive"
msgstr ""
-#: order/serializers.py:1139
+#: order/serializers.py:1141
msgid "Enter serial numbers to allocate"
msgstr ""
-#: order/serializers.py:1161 order/serializers.py:1281
+#: order/serializers.py:1163 order/serializers.py:1283
msgid "Shipment has already been shipped"
msgstr ""
-#: order/serializers.py:1164 order/serializers.py:1284
+#: order/serializers.py:1166 order/serializers.py:1286
msgid "Shipment is not associated with this order"
msgstr ""
-#: order/serializers.py:1214
+#: order/serializers.py:1216
msgid "No match found for the following serial numbers"
msgstr ""
-#: order/serializers.py:1224
+#: order/serializers.py:1226
msgid "The following serial numbers are already allocated"
msgstr ""
+#: order/tasks.py:26
+msgid "Overdue Purchase Order"
+msgstr ""
+
+#: order/tasks.py:31
+#, python-brace-format
+msgid "Purchase order {po} is now overdue"
+msgstr ""
+
+#: order/tasks.py:88
+msgid "Overdue Sales Order"
+msgstr ""
+
+#: order/tasks.py:93
+#, python-brace-format
+msgid "Sales order {so} is now overdue"
+msgstr ""
+
#: order/templates/order/order_base.html:33
msgid "Print purchase order report"
msgstr ""
@@ -3870,8 +3918,8 @@ msgstr "Seleziona l'articolo del fornitore"
#: templates/js/translated/bom.js:77 templates/js/translated/build.js:427
#: templates/js/translated/build.js:579 templates/js/translated/build.js:1972
#: templates/js/translated/order.js:833 templates/js/translated/order.js:1265
-#: templates/js/translated/order.js:2731 templates/js/translated/stock.js:570
-#: templates/js/translated/stock.js:738
+#: templates/js/translated/order.js:2731 templates/js/translated/stock.js:569
+#: templates/js/translated/stock.js:737
#: templates/patterns/wizard/match_fields.html:70
msgid "Remove row"
msgstr "Elimina riga"
@@ -3990,7 +4038,7 @@ msgid "Pending Shipments"
msgstr ""
#: order/templates/order/sales_order_detail.html:70
-#: templates/attachment_table.html:6 templates/js/translated/bom.js:1053
+#: templates/attachment_table.html:6 templates/js/translated/bom.js:1047
#: templates/js/translated/build.js:1880
msgid "Actions"
msgstr ""
@@ -4021,47 +4069,47 @@ msgstr ""
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr ""
-#: part/api.py:481
+#: part/api.py:482
msgid "Incoming Purchase Order"
msgstr ""
-#: part/api.py:501
+#: part/api.py:502
msgid "Outgoing Sales Order"
msgstr ""
-#: part/api.py:519
+#: part/api.py:520
msgid "Stock produced by Build Order"
msgstr ""
-#: part/api.py:551
+#: part/api.py:552
msgid "Stock required for Build Order"
msgstr ""
-#: part/api.py:637
+#: part/api.py:638
msgid "Valid"
msgstr ""
-#: part/api.py:638
+#: part/api.py:639
msgid "Validate entire Bill of Materials"
msgstr ""
-#: part/api.py:644
+#: part/api.py:645
msgid "This option must be selected"
msgstr ""
-#: part/api.py:1010
+#: part/api.py:1011
msgid "Must be greater than zero"
msgstr ""
-#: part/api.py:1014
+#: part/api.py:1015
msgid "Must be a valid quantity"
msgstr ""
-#: part/api.py:1029
+#: part/api.py:1030
msgid "Specify location for initial part stock"
msgstr "Specifica la posizione per lo stock iniziale"
-#: part/api.py:1060 part/api.py:1064 part/api.py:1079 part/api.py:1083
+#: part/api.py:1061 part/api.py:1065 part/api.py:1080 part/api.py:1084
msgid "This field is required"
msgstr ""
@@ -4080,17 +4128,13 @@ msgid "Available Stock"
msgstr "Disponibilità in magazzino"
#: part/bom.py:130 part/templates/part/part_base.html:207
-#: templates/js/translated/part.js:517 templates/js/translated/part.js:537
-#: templates/js/translated/part.js:1229 templates/js/translated/part.js:1401
-#: templates/js/translated/part.js:1417
+#: templates/js/translated/part.js:561 templates/js/translated/part.js:581
+#: templates/js/translated/part.js:1273 templates/js/translated/part.js:1445
+#: templates/js/translated/part.js:1461
msgid "On Order"
msgstr "Ordinato"
-#: part/forms.py:59
-msgid "Select part category"
-msgstr "Seleziona categoria articolo"
-
-#: part/forms.py:69
+#: part/forms.py:60
msgid "Input quantity for price calculation"
msgstr "Digita la quantità per il calcolo del prezzo"
@@ -4106,7 +4150,7 @@ msgstr "Keywords predefinite"
msgid "Default keywords for parts in this category"
msgstr "Parole chiave predefinite per gli articoli in questa categoria"
-#: part/models.py:115 part/models.py:2415 part/templates/part/category.html:15
+#: part/models.py:115 part/models.py:2403 part/templates/part/category.html:15
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr "Categoria Articoli"
@@ -4123,7 +4167,7 @@ msgstr "Categorie Articolo"
#: part/templates/part/category_sidebar.html:9
#: templates/InvenTree/index.html:85 templates/InvenTree/search.html:82
#: templates/InvenTree/settings/sidebar.html:39
-#: templates/js/translated/part.js:1768 templates/js/translated/search.js:144
+#: templates/js/translated/part.js:1864 templates/js/translated/search.js:144
#: templates/navbar.html:24 users/models.py:37
msgid "Parts"
msgstr "Articoli"
@@ -4153,7 +4197,7 @@ msgstr "Il numero di serie più recente è"
msgid "Duplicate IPN not allowed in part settings"
msgstr "Non è consentito duplicare IPN nelle impostazioni dell'articolo"
-#: part/models.py:738 part/models.py:2469
+#: part/models.py:738 part/models.py:2457
msgid "Part name"
msgstr "Nome articolo"
@@ -4186,12 +4230,11 @@ msgstr "Parole Chiave"
msgid "Part keywords to improve visibility in search results"
msgstr "Parole chiave per migliorare la visibilità nei risultati di ricerca"
-#: part/models.py:776 part/models.py:2171 part/models.py:2414
+#: part/models.py:776 part/models.py:2159 part/models.py:2402
#: part/templates/part/part_base.html:257
-#: part/templates/part/set_category.html:15
#: templates/InvenTree/notifications/notifications.html:65
#: templates/InvenTree/settings/settings.html:231
-#: templates/js/translated/part.js:1369
+#: templates/js/translated/part.js:1413 templates/js/translated/part.js:1639
msgid "Category"
msgstr "Categoria"
@@ -4200,8 +4243,8 @@ msgid "Part category"
msgstr "Categoria articolo"
#: part/models.py:782 part/templates/part/part_base.html:266
-#: templates/js/translated/part.js:666 templates/js/translated/part.js:1322
-#: templates/js/translated/stock.js:1659
+#: templates/js/translated/part.js:710 templates/js/translated/part.js:1366
+#: templates/js/translated/stock.js:1669
msgid "IPN"
msgstr "IPN - Numero di riferimento interno"
@@ -4214,7 +4257,7 @@ msgid "Part revision or version number"
msgstr "Numero di revisione o di versione"
#: part/models.py:790 part/templates/part/part_base.html:273
-#: report/models.py:170 templates/js/translated/part.js:670
+#: report/models.py:170 templates/js/translated/part.js:714
msgid "Revision"
msgstr "Revisione"
@@ -4302,317 +4345,321 @@ msgstr ""
msgid "Creation User"
msgstr ""
-#: part/models.py:1690
+#: part/models.py:1685
msgid "Sell multiple"
msgstr ""
-#: part/models.py:2218
+#: part/models.py:2206
msgid "Test templates can only be created for trackable parts"
msgstr ""
-#: part/models.py:2235
+#: part/models.py:2223
msgid "Test with this name already exists for this part"
msgstr ""
-#: part/models.py:2255 templates/js/translated/part.js:1819
-#: templates/js/translated/stock.js:1274
+#: part/models.py:2243 templates/js/translated/part.js:1915
+#: templates/js/translated/stock.js:1284
msgid "Test Name"
msgstr ""
-#: part/models.py:2256
+#: part/models.py:2244
msgid "Enter a name for the test"
msgstr ""
-#: part/models.py:2261
+#: part/models.py:2249
msgid "Test Description"
msgstr "Descrizione Di Prova"
-#: part/models.py:2262
+#: part/models.py:2250
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:2267 templates/js/translated/part.js:1828
+#: part/models.py:2255 templates/js/translated/part.js:1924
#: templates/js/translated/table_filters.js:294
msgid "Required"
msgstr ""
-#: part/models.py:2268
+#: part/models.py:2256
msgid "Is this test required to pass?"
msgstr ""
-#: part/models.py:2273 templates/js/translated/part.js:1836
+#: part/models.py:2261 templates/js/translated/part.js:1932
msgid "Requires Value"
msgstr ""
-#: part/models.py:2274
+#: part/models.py:2262
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:2279 templates/js/translated/part.js:1843
+#: part/models.py:2267 templates/js/translated/part.js:1939
msgid "Requires Attachment"
msgstr ""
-#: part/models.py:2280
+#: part/models.py:2268
msgid "Does this test require a file attachment when adding a test result?"
msgstr ""
-#: part/models.py:2288
+#: part/models.py:2276
#, python-brace-format
msgid "Illegal character in template name ({c})"
msgstr ""
-#: part/models.py:2324
+#: part/models.py:2312
msgid "Parameter template name must be unique"
msgstr ""
-#: part/models.py:2332
+#: part/models.py:2320
msgid "Parameter Name"
msgstr ""
-#: part/models.py:2339
+#: part/models.py:2327
msgid "Parameter Units"
msgstr ""
-#: part/models.py:2370
+#: part/models.py:2358
msgid "Parent Part"
msgstr ""
-#: part/models.py:2372 part/models.py:2420 part/models.py:2421
+#: part/models.py:2360 part/models.py:2408 part/models.py:2409
#: templates/InvenTree/settings/settings.html:226
msgid "Parameter Template"
msgstr ""
-#: part/models.py:2374
+#: part/models.py:2362
msgid "Data"
msgstr ""
-#: part/models.py:2374
+#: part/models.py:2362
msgid "Parameter Value"
msgstr ""
-#: part/models.py:2425 templates/InvenTree/settings/settings.html:235
+#: part/models.py:2413 templates/InvenTree/settings/settings.html:235
msgid "Default Value"
msgstr ""
-#: part/models.py:2426
+#: part/models.py:2414
msgid "Default Parameter Value"
msgstr ""
-#: part/models.py:2461
+#: part/models.py:2449
msgid "Part ID or part name"
msgstr ""
-#: part/models.py:2464 templates/js/translated/model_renderers.js:200
+#: part/models.py:2452 templates/js/translated/model_renderers.js:200
msgid "Part ID"
msgstr "Codice Articolo"
-#: part/models.py:2465
+#: part/models.py:2453
msgid "Unique part ID value"
msgstr ""
-#: part/models.py:2468
+#: part/models.py:2456
msgid "Part Name"
msgstr ""
-#: part/models.py:2472
+#: part/models.py:2460
msgid "Part IPN"
msgstr ""
-#: part/models.py:2473
+#: part/models.py:2461
msgid "Part IPN value"
msgstr ""
-#: part/models.py:2476
+#: part/models.py:2464
msgid "Level"
msgstr ""
-#: part/models.py:2477
+#: part/models.py:2465
msgid "BOM level"
msgstr ""
-#: part/models.py:2546
+#: part/models.py:2534
msgid "Select parent part"
msgstr ""
-#: part/models.py:2554
+#: part/models.py:2542
msgid "Sub part"
msgstr ""
-#: part/models.py:2555
+#: part/models.py:2543
msgid "Select part to be used in BOM"
msgstr ""
-#: part/models.py:2561
+#: part/models.py:2549
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:2563 part/templates/part/upload_bom.html:58
-#: templates/js/translated/bom.js:877 templates/js/translated/bom.js:971
+#: part/models.py:2551 part/templates/part/upload_bom.html:58
+#: templates/js/translated/bom.js:871 templates/js/translated/bom.js:965
#: templates/js/translated/table_filters.js:92
msgid "Optional"
msgstr ""
-#: part/models.py:2563
+#: part/models.py:2551
msgid "This BOM item is optional"
msgstr ""
-#: part/models.py:2566 part/templates/part/upload_bom.html:55
+#: part/models.py:2554 part/templates/part/upload_bom.html:55
msgid "Overage"
msgstr ""
-#: part/models.py:2567
+#: part/models.py:2555
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr ""
-#: part/models.py:2570
+#: part/models.py:2558
msgid "BOM item reference"
msgstr ""
-#: part/models.py:2573
+#: part/models.py:2561
msgid "BOM item notes"
msgstr ""
-#: part/models.py:2575
+#: part/models.py:2563
msgid "Checksum"
msgstr ""
-#: part/models.py:2575
+#: part/models.py:2563
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:2579 part/templates/part/upload_bom.html:57
-#: templates/js/translated/bom.js:988
+#: part/models.py:2567 part/templates/part/upload_bom.html:57
+#: templates/js/translated/bom.js:982
#: templates/js/translated/table_filters.js:68
#: templates/js/translated/table_filters.js:88
msgid "Inherited"
msgstr ""
-#: part/models.py:2580
+#: part/models.py:2568
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr ""
-#: part/models.py:2585 part/templates/part/upload_bom.html:56
-#: templates/js/translated/bom.js:980
+#: part/models.py:2573 part/templates/part/upload_bom.html:56
+#: templates/js/translated/bom.js:974
msgid "Allow Variants"
msgstr "Consenti Le Varianti"
-#: part/models.py:2586
+#: part/models.py:2574
msgid "Stock items for variant parts can be used for this BOM item"
msgstr ""
-#: part/models.py:2664 stock/models.py:460
+#: part/models.py:2652 stock/models.py:460
msgid "Quantity must be integer value for trackable parts"
msgstr ""
-#: part/models.py:2673 part/models.py:2675
+#: part/models.py:2661 part/models.py:2663
msgid "Sub part must be specified"
msgstr ""
-#: part/models.py:2780
+#: part/models.py:2768
msgid "BOM Item Substitute"
msgstr ""
-#: part/models.py:2801
+#: part/models.py:2789
msgid "Substitute part cannot be the same as the master part"
msgstr ""
-#: part/models.py:2814
+#: part/models.py:2802
msgid "Parent BOM item"
msgstr ""
-#: part/models.py:2822
+#: part/models.py:2810
msgid "Substitute part"
msgstr ""
-#: part/models.py:2833
+#: part/models.py:2825
msgid "Part 1"
msgstr ""
-#: part/models.py:2837
+#: part/models.py:2829
msgid "Part 2"
msgstr ""
-#: part/models.py:2837
+#: part/models.py:2829
msgid "Select Related Part"
msgstr ""
-#: part/models.py:2868
-msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique"
+#: part/models.py:2847
+msgid "Part relationship cannot be created between a part and itself"
msgstr ""
-#: part/serializers.py:138 part/serializers.py:169 stock/serializers.py:163
+#: part/models.py:2851
+msgid "Duplicate relationship already exists"
+msgstr ""
+
+#: part/serializers.py:140 part/serializers.py:171 stock/serializers.py:163
msgid "Purchase currency of this stock item"
msgstr ""
-#: part/serializers.py:794
+#: part/serializers.py:796
msgid "Select part to copy BOM from"
msgstr ""
-#: part/serializers.py:802
+#: part/serializers.py:804
msgid "Remove Existing Data"
msgstr ""
-#: part/serializers.py:803
+#: part/serializers.py:805
msgid "Remove existing BOM items before copying"
msgstr ""
-#: part/serializers.py:808
+#: part/serializers.py:810
msgid "Include Inherited"
msgstr ""
-#: part/serializers.py:809
+#: part/serializers.py:811
msgid "Include BOM items which are inherited from templated parts"
msgstr ""
-#: part/serializers.py:814
+#: part/serializers.py:816
msgid "Skip Invalid Rows"
msgstr ""
-#: part/serializers.py:815
+#: part/serializers.py:817
msgid "Enable this option to skip invalid rows"
msgstr ""
-#: part/serializers.py:820
+#: part/serializers.py:822
msgid "Copy Substitute Parts"
msgstr ""
-#: part/serializers.py:821
+#: part/serializers.py:823
msgid "Copy substitute parts when duplicate BOM items"
msgstr ""
-#: part/serializers.py:861
+#: part/serializers.py:863
msgid "Clear Existing BOM"
msgstr ""
-#: part/serializers.py:862
+#: part/serializers.py:864
msgid "Delete existing BOM items before uploading"
msgstr ""
-#: part/serializers.py:892
+#: part/serializers.py:894
msgid "No part column specified"
msgstr ""
-#: part/serializers.py:935
+#: part/serializers.py:937
msgid "Multiple matching parts found"
msgstr ""
-#: part/serializers.py:938
+#: part/serializers.py:940
msgid "No matching part found"
msgstr ""
-#: part/serializers.py:941
+#: part/serializers.py:943
msgid "Part is not designated as a component"
msgstr ""
-#: part/serializers.py:950
+#: part/serializers.py:952
msgid "Quantity not provided"
msgstr ""
-#: part/serializers.py:958
+#: part/serializers.py:960
msgid "Invalid quantity"
msgstr ""
-#: part/serializers.py:979
+#: part/serializers.py:981
msgid "At least one BOM item is required"
msgstr ""
@@ -5088,10 +5135,10 @@ msgid "Part is virtual (not a physical part)"
msgstr ""
#: part/templates/part/part_base.html:143
-#: templates/js/translated/company.js:623
-#: templates/js/translated/company.js:882
+#: templates/js/translated/company.js:608
+#: templates/js/translated/company.js:867
#: templates/js/translated/model_renderers.js:192
-#: templates/js/translated/part.js:581 templates/js/translated/part.js:658
+#: templates/js/translated/part.js:625 templates/js/translated/part.js:702
msgid "Inactive"
msgstr "Inattivo"
@@ -5120,13 +5167,13 @@ msgstr ""
msgid "Allocated to Sales Orders"
msgstr ""
-#: part/templates/part/part_base.html:232 templates/js/translated/bom.js:1009
+#: part/templates/part/part_base.html:232 templates/js/translated/bom.js:1003
msgid "Can Build"
msgstr ""
-#: part/templates/part/part_base.html:238 templates/js/translated/part.js:520
-#: templates/js/translated/part.js:540 templates/js/translated/part.js:1233
-#: templates/js/translated/part.js:1405 templates/js/translated/part.js:1421
+#: part/templates/part/part_base.html:238 templates/js/translated/part.js:564
+#: templates/js/translated/part.js:584 templates/js/translated/part.js:1277
+#: templates/js/translated/part.js:1449 templates/js/translated/part.js:1465
msgid "Building"
msgstr ""
@@ -5143,7 +5190,7 @@ msgstr ""
msgid "Search for serial number"
msgstr ""
-#: part/templates/part/part_base.html:443 part/templates/part/prices.html:147
+#: part/templates/part/part_base.html:443 part/templates/part/prices.html:149
msgid "Calculate"
msgstr ""
@@ -5161,54 +5208,55 @@ msgstr ""
#: part/templates/part/part_pricing.html:26
#: part/templates/part/part_pricing.html:52
-#: part/templates/part/part_pricing.html:100
-#: part/templates/part/part_pricing.html:115 part/templates/part/prices.html:28
-#: part/templates/part/prices.html:55 part/templates/part/prices.html:106
-#: part/templates/part/prices.html:123
+#: part/templates/part/part_pricing.html:103
+#: part/templates/part/part_pricing.html:118 part/templates/part/prices.html:28
+#: part/templates/part/prices.html:55 part/templates/part/prices.html:108
+#: part/templates/part/prices.html:125
msgid "Unit Cost"
msgstr ""
#: part/templates/part/part_pricing.html:32
#: part/templates/part/part_pricing.html:58
-#: part/templates/part/part_pricing.html:104
-#: part/templates/part/part_pricing.html:119 part/templates/part/prices.html:35
-#: part/templates/part/prices.html:62 part/templates/part/prices.html:111
-#: part/templates/part/prices.html:128
+#: part/templates/part/part_pricing.html:107
+#: part/templates/part/part_pricing.html:122 part/templates/part/prices.html:35
+#: part/templates/part/prices.html:62 part/templates/part/prices.html:113
+#: part/templates/part/prices.html:130
msgid "Total Cost"
msgstr "Costo Totale"
#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:43
-#: templates/js/translated/bom.js:963
+#: templates/js/translated/bom.js:957
msgid "No supplier pricing available"
msgstr ""
#: part/templates/part/part_pricing.html:48 part/templates/part/prices.html:52
-#: part/templates/part/prices.html:246
+#: part/templates/part/prices.html:248
msgid "BOM Pricing"
msgstr ""
-#: part/templates/part/part_pricing.html:65 part/templates/part/prices.html:72
+#: part/templates/part/part_pricing.html:66 part/templates/part/prices.html:72
msgid "Unit Purchase Price"
msgstr ""
-#: part/templates/part/part_pricing.html:71 part/templates/part/prices.html:79
+#: part/templates/part/part_pricing.html:72 part/templates/part/prices.html:79
msgid "Total Purchase Price"
msgstr ""
-#: part/templates/part/part_pricing.html:81 part/templates/part/prices.html:89
+#: part/templates/part/part_pricing.html:82 part/templates/part/prices.html:89
msgid "Note: BOM pricing is incomplete for this part"
msgstr ""
-#: part/templates/part/part_pricing.html:88 part/templates/part/prices.html:96
+#: part/templates/part/part_pricing.html:91 part/templates/part/prices.html:98
msgid "No BOM pricing available"
msgstr ""
-#: part/templates/part/part_pricing.html:97 part/templates/part/prices.html:105
+#: part/templates/part/part_pricing.html:100
+#: part/templates/part/prices.html:107
msgid "Internal Price"
msgstr ""
-#: part/templates/part/part_pricing.html:128
-#: part/templates/part/prices.html:137
+#: part/templates/part/part_pricing.html:131
+#: part/templates/part/prices.html:139
msgid "No pricing information is available for this part."
msgstr ""
@@ -5232,43 +5280,6 @@ msgstr ""
msgid "Select from existing images"
msgstr ""
-#: part/templates/part/partial_delete.html:9
-#, python-format
-msgid "Part '%(full_name)s' cannot be deleted as it is still marked as active.\n"
-"
Disable the \"Active\" part attribute and re-try.\n"
-" "
-msgstr ""
-
-#: part/templates/part/partial_delete.html:17
-#, python-format
-msgid "Are you sure you want to delete part '%(full_name)s'?"
-msgstr ""
-
-#: part/templates/part/partial_delete.html:22
-#, python-format
-msgid "This part is used in BOMs for %(count)s other parts. If you delete this part, the BOMs for the following parts will be updated"
-msgstr ""
-
-#: part/templates/part/partial_delete.html:32
-#, python-format
-msgid "There are %(count)s stock entries defined for this part. If you delete this part, the following stock entries will also be deleted:"
-msgstr ""
-
-#: part/templates/part/partial_delete.html:43
-#, python-format
-msgid "There are %(count)s manufacturers defined for this part. If you delete this part, the following manufacturer parts will also be deleted:"
-msgstr "Ci sono %(count)s produttori definiti per questa parte. Se elimini questa parte, verranno eliminate anche le seguenti parti del produttore:"
-
-#: part/templates/part/partial_delete.html:54
-#, python-format
-msgid "There are %(count)s suppliers defined for this part. If you delete this part, the following supplier parts will also be deleted:"
-msgstr "Ci sono %(count)s fornitori definiti per questo articolo. Se elimini questo, verranno eliminate anche i seguenti articoli del fornitore:"
-
-#: part/templates/part/partial_delete.html:67
-#, python-format
-msgid "There are %(count)s unique parts tracked for '%(full_name)s'. Deleting this part will permanently remove this tracking information."
-msgstr ""
-
#: part/templates/part/prices.html:19
msgid "Pricing ranges"
msgstr ""
@@ -5285,66 +5296,58 @@ msgstr ""
msgid "Show BOM cost"
msgstr ""
-#: part/templates/part/prices.html:120
+#: part/templates/part/prices.html:122
msgid "Show sale cost"
msgstr ""
-#: part/templates/part/prices.html:121
+#: part/templates/part/prices.html:123
msgid "Show sale price"
msgstr ""
-#: part/templates/part/prices.html:143
+#: part/templates/part/prices.html:145
msgid "Calculation parameters"
msgstr ""
-#: part/templates/part/prices.html:158 templates/js/translated/bom.js:957
+#: part/templates/part/prices.html:160 templates/js/translated/bom.js:951
msgid "Supplier Cost"
msgstr ""
-#: part/templates/part/prices.html:159 part/templates/part/prices.html:180
-#: part/templates/part/prices.html:204 part/templates/part/prices.html:234
-#: part/templates/part/prices.html:260 part/templates/part/prices.html:289
+#: part/templates/part/prices.html:161 part/templates/part/prices.html:182
+#: part/templates/part/prices.html:206 part/templates/part/prices.html:236
+#: part/templates/part/prices.html:262 part/templates/part/prices.html:291
msgid "Jump to overview"
msgstr ""
-#: part/templates/part/prices.html:184
+#: part/templates/part/prices.html:186
msgid "Stock Pricing"
msgstr ""
-#: part/templates/part/prices.html:193
+#: part/templates/part/prices.html:195
msgid "No stock pricing history is available for this part."
msgstr ""
-#: part/templates/part/prices.html:203
+#: part/templates/part/prices.html:205
msgid "Internal Cost"
msgstr ""
-#: part/templates/part/prices.html:218
+#: part/templates/part/prices.html:220
msgid "Add Internal Price Break"
msgstr ""
-#: part/templates/part/prices.html:233
+#: part/templates/part/prices.html:235
msgid "BOM Cost"
msgstr ""
-#: part/templates/part/prices.html:259
+#: part/templates/part/prices.html:261
msgid "Sale Cost"
msgstr ""
-#: part/templates/part/prices.html:300
+#: part/templates/part/prices.html:302
msgid "No sale pice history available for this part."
msgstr ""
-#: part/templates/part/set_category.html:9
-msgid "Set category for the following parts"
-msgstr "Imposta categoria per i seguenti articoli"
-
-#: part/templates/part/set_category.html:32
-msgid "Remove part"
-msgstr "Rimuovi parte"
-
-#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:543
-#: templates/js/translated/part.js:1221 templates/js/translated/part.js:1425
+#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:587
+#: templates/js/translated/part.js:1265 templates/js/translated/part.js:1469
msgid "No Stock"
msgstr "Nessuna giacenza"
@@ -5407,56 +5410,39 @@ msgstr "Database sconosciuto"
msgid "{title} v{version}"
msgstr ""
-#: part/views.py:74
-msgid "Set Part Category"
-msgstr "Imposta categoria articolo"
-
-#: part/views.py:122
-#, python-brace-format
-msgid "Set category for {n} parts"
-msgstr "Imposta categoria per {n} articoli"
-
-#: part/views.py:193
+#: part/views.py:118
msgid "Match References"
msgstr ""
-#: part/views.py:494
+#: part/views.py:419
msgid "None"
msgstr ""
-#: part/views.py:556
+#: part/views.py:481
msgid "Part QR Code"
msgstr ""
-#: part/views.py:650
+#: part/views.py:575
msgid "Select Part Image"
msgstr ""
-#: part/views.py:676
+#: part/views.py:601
msgid "Updated part image"
msgstr ""
-#: part/views.py:679
+#: part/views.py:604
msgid "Part image not found"
msgstr ""
-#: part/views.py:768
-msgid "Confirm Part Deletion"
-msgstr ""
-
-#: part/views.py:776
-msgid "Part was deleted"
-msgstr ""
-
-#: part/views.py:785
+#: part/views.py:693
msgid "Part Pricing"
msgstr ""
-#: part/views.py:976
+#: part/views.py:884
msgid "Delete Part Category"
msgstr "Elimina categoria"
-#: part/views.py:983
+#: part/views.py:891
msgid "Part category was deleted"
msgstr "La Categoria articoli è stata eliminata"
@@ -5516,21 +5502,21 @@ msgstr ""
msgid "Label printing failed"
msgstr ""
-#: plugin/builtin/integration/core_notifications.py:28
+#: plugin/builtin/integration/core_notifications.py:29
msgid "InvenTree contributors"
msgstr ""
-#: plugin/builtin/integration/core_notifications.py:29
+#: plugin/builtin/integration/core_notifications.py:30
msgid "Integrated outgoing notificaton methods"
msgstr ""
-#: plugin/builtin/integration/core_notifications.py:33
-#: plugin/builtin/integration/core_notifications.py:52
-msgid "Enable email notifications"
-msgstr ""
-
#: plugin/builtin/integration/core_notifications.py:34
#: plugin/builtin/integration/core_notifications.py:53
+msgid "Enable email notifications"
+msgstr ""
+
+#: plugin/builtin/integration/core_notifications.py:35
+#: plugin/builtin/integration/core_notifications.py:54
msgid "Allow sending of emails for event notifications"
msgstr ""
@@ -5646,15 +5632,19 @@ msgstr ""
msgid "Either packagename of URL must be provided"
msgstr ""
-#: report/api.py:166
+#: report/api.py:179
msgid "No valid objects provided to template"
msgstr "Nessun oggetto valido fornito nel modello"
-#: report/api.py:198 report/api.py:239
+#: report/api.py:215 report/api.py:256
#, python-brace-format
msgid "Template file '{template}' is missing or does not exist"
msgstr ""
+#: report/api.py:359
+msgid "Test report"
+msgstr ""
+
#: report/models.py:152
msgid "Template name"
msgstr ""
@@ -5757,7 +5747,7 @@ msgstr ""
#: templates/js/translated/build.js:1173 templates/js/translated/build.js:1671
#: templates/js/translated/model_renderers.js:106
#: templates/js/translated/order.js:115 templates/js/translated/order.js:3229
-#: templates/js/translated/order.js:3318 templates/js/translated/stock.js:435
+#: templates/js/translated/order.js:3318 templates/js/translated/stock.js:434
msgid "Serial Number"
msgstr ""
@@ -5766,19 +5756,19 @@ msgid "Test Results"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:93
-#: stock/models.py:2068
+#: stock/models.py:2072
msgid "Test"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:94
-#: stock/models.py:2074
+#: stock/models.py:2078
msgid "Result"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:97
#: templates/InvenTree/settings/plugin.html:51
#: templates/InvenTree/settings/plugin_settings.html:38
-#: templates/js/translated/order.js:1669 templates/js/translated/stock.js:2340
+#: templates/js/translated/order.js:1669 templates/js/translated/stock.js:2350
msgid "Date"
msgstr "Data"
@@ -5796,20 +5786,20 @@ msgid "Installed Items"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:137
-#: templates/js/translated/stock.js:555 templates/js/translated/stock.js:725
-#: templates/js/translated/stock.js:2589
+#: templates/js/translated/stock.js:554 templates/js/translated/stock.js:724
+#: templates/js/translated/stock.js:2599
msgid "Serial"
msgstr "Seriale"
-#: stock/api.py:504
+#: stock/api.py:505
msgid "Quantity is required"
msgstr "La quantità è richiesta"
-#: stock/api.py:511
+#: stock/api.py:512
msgid "Valid part must be supplied"
msgstr ""
-#: stock/api.py:536
+#: stock/api.py:537
msgid "Serial numbers cannot be supplied for a non-trackable part"
msgstr ""
@@ -5917,7 +5907,7 @@ msgid "Destination Sales Order"
msgstr ""
#: stock/models.py:690 stock/templates/stock/item_base.html:429
-#: templates/js/translated/stock.js:1816
+#: templates/js/translated/stock.js:1826
msgid "Expiry Date"
msgstr "Data di Scadenza"
@@ -5971,79 +5961,79 @@ msgstr ""
msgid "Serial numbers already exist: {exists}"
msgstr ""
-#: stock/models.py:1321
+#: stock/models.py:1325
msgid "Stock item has been assigned to a sales order"
msgstr ""
-#: stock/models.py:1324
+#: stock/models.py:1328
msgid "Stock item is installed in another item"
msgstr ""
-#: stock/models.py:1327
+#: stock/models.py:1331
msgid "Stock item contains other items"
msgstr ""
-#: stock/models.py:1330
+#: stock/models.py:1334
msgid "Stock item has been assigned to a customer"
msgstr ""
-#: stock/models.py:1333
+#: stock/models.py:1337
msgid "Stock item is currently in production"
msgstr ""
-#: stock/models.py:1336
+#: stock/models.py:1340
msgid "Serialized stock cannot be merged"
msgstr ""
-#: stock/models.py:1343 stock/serializers.py:908
+#: stock/models.py:1347 stock/serializers.py:895
msgid "Duplicate stock items"
msgstr ""
-#: stock/models.py:1347
+#: stock/models.py:1351
msgid "Stock items must refer to the same part"
msgstr ""
-#: stock/models.py:1351
+#: stock/models.py:1355
msgid "Stock items must refer to the same supplier part"
msgstr ""
-#: stock/models.py:1355
+#: stock/models.py:1359
msgid "Stock status codes must match"
msgstr ""
-#: stock/models.py:1524
+#: stock/models.py:1528
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:1986
+#: stock/models.py:1990
msgid "Entry notes"
msgstr ""
-#: stock/models.py:2044
+#: stock/models.py:2048
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:2050
+#: stock/models.py:2054
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:2069
+#: stock/models.py:2073
msgid "Test name"
msgstr ""
-#: stock/models.py:2075
+#: stock/models.py:2079
msgid "Test result"
msgstr ""
-#: stock/models.py:2081
+#: stock/models.py:2085
msgid "Test output value"
msgstr ""
-#: stock/models.py:2088
+#: stock/models.py:2092
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:2094
+#: stock/models.py:2098
msgid "Test notes"
msgstr ""
@@ -6064,7 +6054,7 @@ msgstr ""
msgid "Enter serial numbers for new items"
msgstr ""
-#: stock/serializers.py:309 stock/serializers.py:865 stock/serializers.py:1098
+#: stock/serializers.py:309 stock/serializers.py:852 stock/serializers.py:1085
msgid "Destination stock location"
msgstr "Posizione magazzino di destinazione"
@@ -6104,63 +6094,63 @@ msgstr ""
msgid "Destination location for returned item"
msgstr ""
-#: stock/serializers.py:720
+#: stock/serializers.py:707
msgid "Part must be salable"
msgstr ""
-#: stock/serializers.py:724
+#: stock/serializers.py:711
msgid "Item is allocated to a sales order"
msgstr ""
-#: stock/serializers.py:728
+#: stock/serializers.py:715
msgid "Item is allocated to a build order"
msgstr ""
-#: stock/serializers.py:759
+#: stock/serializers.py:746
msgid "Customer to assign stock items"
msgstr ""
-#: stock/serializers.py:765
+#: stock/serializers.py:752
msgid "Selected company is not a customer"
msgstr ""
-#: stock/serializers.py:773
+#: stock/serializers.py:760
msgid "Stock assignment notes"
msgstr ""
-#: stock/serializers.py:783 stock/serializers.py:1014
+#: stock/serializers.py:770 stock/serializers.py:1001
msgid "A list of stock items must be provided"
msgstr ""
-#: stock/serializers.py:872
+#: stock/serializers.py:859
msgid "Stock merging notes"
msgstr ""
-#: stock/serializers.py:877
+#: stock/serializers.py:864
msgid "Allow mismatched suppliers"
msgstr ""
-#: stock/serializers.py:878
+#: stock/serializers.py:865
msgid "Allow stock items with different supplier parts to be merged"
msgstr ""
-#: stock/serializers.py:883
+#: stock/serializers.py:870
msgid "Allow mismatched status"
msgstr ""
-#: stock/serializers.py:884
+#: stock/serializers.py:871
msgid "Allow stock items with different status codes to be merged"
msgstr ""
-#: stock/serializers.py:894
+#: stock/serializers.py:881
msgid "At least two stock items must be provided"
msgstr ""
-#: stock/serializers.py:976
+#: stock/serializers.py:963
msgid "StockItem primary key value"
msgstr ""
-#: stock/serializers.py:1004
+#: stock/serializers.py:991
msgid "Stock transaction notes"
msgstr ""
@@ -6185,7 +6175,7 @@ msgstr ""
msgid "Test Report"
msgstr ""
-#: stock/templates/stock/item.html:94
+#: stock/templates/stock/item.html:94 stock/templates/stock/item.html:298
msgid "Delete Test Data"
msgstr ""
@@ -6197,11 +6187,15 @@ msgstr ""
msgid "Installed Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:151 templates/js/translated/stock.js:2733
+#: stock/templates/stock/item.html:151 templates/js/translated/stock.js:2743
msgid "Install Stock Item"
msgstr ""
-#: stock/templates/stock/item.html:292 templates/js/translated/stock.js:1455
+#: stock/templates/stock/item.html:290
+msgid "Delete all test results for this stock item"
+msgstr ""
+
+#: stock/templates/stock/item.html:323 templates/js/translated/stock.js:1465
msgid "Add Test Result"
msgstr ""
@@ -6388,7 +6382,7 @@ msgid "Stale"
msgstr ""
#: stock/templates/stock/item_base.html:442
-#: templates/js/translated/stock.js:1832
+#: templates/js/translated/stock.js:1842
msgid "Last Updated"
msgstr "Ultimo aggiornamento"
@@ -6529,7 +6523,7 @@ msgstr ""
msgid "Child Items"
msgstr ""
-#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:182
+#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:144
msgid "Convert Stock Item"
msgstr ""
@@ -6550,31 +6544,19 @@ msgstr ""
msgid "This action cannot be easily undone"
msgstr ""
-#: stock/views.py:113
+#: stock/views.py:111
msgid "Stock Location QR code"
msgstr "QR Code della posizione magazzino"
-#: stock/views.py:131
-msgid "Delete All Test Data"
-msgstr ""
-
-#: stock/views.py:149
-msgid "Confirm test data deletion"
-msgstr ""
-
-#: stock/views.py:150
-msgid "Check the confirmation box"
-msgstr ""
-
-#: stock/views.py:165
+#: stock/views.py:127
msgid "Stock Item QR Code"
msgstr ""
-#: stock/views.py:216
+#: stock/views.py:178
msgid "Delete Stock Location"
msgstr "Elimina Posizione di Giacenza"
-#: stock/views.py:229
+#: stock/views.py:191
msgid "Delete Stock Item"
msgstr ""
@@ -7317,8 +7299,8 @@ msgstr "Informazioni Versione InvenTree"
#: templates/about.html:11 templates/about.html:105
#: templates/js/translated/bom.js:133 templates/js/translated/bom.js:621
-#: templates/js/translated/modals.js:56 templates/js/translated/modals.js:595
-#: templates/js/translated/modals.js:689 templates/js/translated/modals.js:997
+#: templates/js/translated/modals.js:56 templates/js/translated/modals.js:601
+#: templates/js/translated/modals.js:695 templates/js/translated/modals.js:1003
#: templates/js/translated/order.js:928 templates/modals.html:15
#: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50
msgid "Close"
@@ -7390,6 +7372,10 @@ msgstr "Conferma l'indirizzo e-mail"
msgid "Please confirm that %(email)s is an email address for user %(user_display)s."
msgstr ""
+#: templates/account/email_confirm.html:20 templates/js/translated/forms.js:630
+msgid "Confirm"
+msgstr "Conferma"
+
#: templates/account/email_confirm.html:27
#, python-format
msgid "This email confirmation link expired or is invalid. Please issue a new email confirmation request."
@@ -7562,7 +7548,7 @@ msgstr "Aggiungi allegato"
msgid "Delete selected attachments"
msgstr ""
-#: templates/attachment_table.html:12 templates/js/translated/attachment.js:110
+#: templates/attachment_table.html:12 templates/js/translated/attachment.js:112
msgid "Delete Attachments"
msgstr ""
@@ -7596,15 +7582,15 @@ msgid "The following parts are low on required stock"
msgstr ""
#: templates/email/build_order_required_stock.html:18
-#: templates/js/translated/bom.js:1425
+#: templates/js/translated/bom.js:1419
msgid "Required Quantity"
msgstr "Quantità richiesta"
#: templates/email/build_order_required_stock.html:19
#: templates/email/low_stock_notification.html:18
-#: templates/js/translated/bom.js:890 templates/js/translated/build.js:1787
-#: templates/js/translated/build.js:2650 templates/js/translated/part.js:527
-#: templates/js/translated/part.js:530
+#: templates/js/translated/bom.js:884 templates/js/translated/build.js:1787
+#: templates/js/translated/build.js:2650 templates/js/translated/part.js:571
+#: templates/js/translated/part.js:574
#: templates/js/translated/table_filters.js:178
msgid "Available"
msgstr "Disponibile"
@@ -7622,6 +7608,13 @@ msgstr ""
msgid "Minimum Quantity"
msgstr "Quantità minima"
+#: templates/email/new_order_assigned.html:9
+#: templates/email/overdue_build_order.html:9
+#: templates/email/overdue_purchase_order.html:9
+#: templates/email/overdue_sales_order.html:9
+msgid "Click on the following link to view this order"
+msgstr ""
+
#: templates/image_download.html:8
msgid "Specify URL for downloading image"
msgstr ""
@@ -7638,91 +7631,91 @@ msgstr "Il server remoto deve essere accessibile"
msgid "Remote image must not exceed maximum allowable file size"
msgstr "L'immagine remota non deve superare la dimensione massima consentita del file"
-#: templates/js/translated/api.js:235 templates/js/translated/modals.js:1067
+#: templates/js/translated/api.js:195 templates/js/translated/modals.js:1073
msgid "No Response"
msgstr ""
-#: templates/js/translated/api.js:236 templates/js/translated/modals.js:1068
+#: templates/js/translated/api.js:196 templates/js/translated/modals.js:1074
msgid "No response from the InvenTree server"
msgstr ""
-#: templates/js/translated/api.js:242
+#: templates/js/translated/api.js:202
msgid "Error 400: Bad request"
msgstr ""
-#: templates/js/translated/api.js:243
+#: templates/js/translated/api.js:203
msgid "API request returned error code 400"
msgstr ""
-#: templates/js/translated/api.js:247 templates/js/translated/modals.js:1077
+#: templates/js/translated/api.js:207 templates/js/translated/modals.js:1083
msgid "Error 401: Not Authenticated"
msgstr ""
-#: templates/js/translated/api.js:248 templates/js/translated/modals.js:1078
+#: templates/js/translated/api.js:208 templates/js/translated/modals.js:1084
msgid "Authentication credentials not supplied"
msgstr ""
-#: templates/js/translated/api.js:252 templates/js/translated/modals.js:1082
+#: templates/js/translated/api.js:212 templates/js/translated/modals.js:1088
msgid "Error 403: Permission Denied"
msgstr ""
-#: templates/js/translated/api.js:253 templates/js/translated/modals.js:1083
+#: templates/js/translated/api.js:213 templates/js/translated/modals.js:1089
msgid "You do not have the required permissions to access this function"
msgstr ""
-#: templates/js/translated/api.js:257 templates/js/translated/modals.js:1087
+#: templates/js/translated/api.js:217 templates/js/translated/modals.js:1093
msgid "Error 404: Resource Not Found"
msgstr ""
-#: templates/js/translated/api.js:258 templates/js/translated/modals.js:1088
+#: templates/js/translated/api.js:218 templates/js/translated/modals.js:1094
msgid "The requested resource could not be located on the server"
msgstr ""
-#: templates/js/translated/api.js:262
+#: templates/js/translated/api.js:222
msgid "Error 405: Method Not Allowed"
msgstr ""
-#: templates/js/translated/api.js:263
+#: templates/js/translated/api.js:223
msgid "HTTP method not allowed at URL"
msgstr ""
-#: templates/js/translated/api.js:267 templates/js/translated/modals.js:1092
+#: templates/js/translated/api.js:227 templates/js/translated/modals.js:1098
msgid "Error 408: Timeout"
msgstr ""
-#: templates/js/translated/api.js:268 templates/js/translated/modals.js:1093
+#: templates/js/translated/api.js:228 templates/js/translated/modals.js:1099
msgid "Connection timeout while requesting data from server"
msgstr ""
-#: templates/js/translated/api.js:271
+#: templates/js/translated/api.js:231
msgid "Unhandled Error Code"
msgstr ""
-#: templates/js/translated/api.js:272
+#: templates/js/translated/api.js:232
msgid "Error code"
msgstr ""
-#: templates/js/translated/attachment.js:96
+#: templates/js/translated/attachment.js:98
msgid "All selected attachments will be deleted"
msgstr ""
-#: templates/js/translated/attachment.js:156
+#: templates/js/translated/attachment.js:152
msgid "No attachments found"
msgstr ""
-#: templates/js/translated/attachment.js:180
+#: templates/js/translated/attachment.js:176
msgid "Edit Attachment"
msgstr "Modifica allegato"
-#: templates/js/translated/attachment.js:246
+#: templates/js/translated/attachment.js:242
msgid "Upload Date"
msgstr ""
-#: templates/js/translated/attachment.js:262
+#: templates/js/translated/attachment.js:264
msgid "Edit attachment"
msgstr ""
-#: templates/js/translated/attachment.js:269
+#: templates/js/translated/attachment.js:271
msgid "Delete attachment"
msgstr ""
@@ -7755,7 +7748,7 @@ msgid "Unknown response from server"
msgstr ""
#: templates/js/translated/barcode.js:182
-#: templates/js/translated/modals.js:1057
+#: templates/js/translated/modals.js:1063
msgid "Invalid server response"
msgstr ""
@@ -7783,7 +7776,7 @@ msgstr ""
msgid "Unlink"
msgstr ""
-#: templates/js/translated/barcode.js:456 templates/js/translated/stock.js:999
+#: templates/js/translated/barcode.js:456 templates/js/translated/stock.js:998
msgid "Remove stock item"
msgstr ""
@@ -7918,89 +7911,89 @@ msgstr ""
msgid "Edit BOM Item Substitutes"
msgstr ""
-#: templates/js/translated/bom.js:682
+#: templates/js/translated/bom.js:684
msgid "All selected BOM items will be deleted"
msgstr ""
-#: templates/js/translated/bom.js:697
+#: templates/js/translated/bom.js:699
msgid "Delete selected BOM items?"
msgstr ""
-#: templates/js/translated/bom.js:824
+#: templates/js/translated/bom.js:818
msgid "Load BOM for subassembly"
msgstr ""
-#: templates/js/translated/bom.js:834
+#: templates/js/translated/bom.js:828
msgid "Substitutes Available"
msgstr ""
-#: templates/js/translated/bom.js:838 templates/js/translated/build.js:1769
+#: templates/js/translated/bom.js:832 templates/js/translated/build.js:1769
msgid "Variant stock allowed"
msgstr ""
-#: templates/js/translated/bom.js:906 templates/js/translated/build.js:1814
+#: templates/js/translated/bom.js:900 templates/js/translated/build.js:1814
#: templates/js/translated/order.js:3562
msgid "No Stock Available"
msgstr ""
-#: templates/js/translated/bom.js:910 templates/js/translated/build.js:1818
+#: templates/js/translated/bom.js:904 templates/js/translated/build.js:1818
msgid "Includes variant and substitute stock"
msgstr ""
-#: templates/js/translated/bom.js:912 templates/js/translated/build.js:1820
-#: templates/js/translated/part.js:690
+#: templates/js/translated/bom.js:906 templates/js/translated/build.js:1820
+#: templates/js/translated/part.js:734
msgid "Includes variant stock"
msgstr ""
-#: templates/js/translated/bom.js:914 templates/js/translated/build.js:1822
+#: templates/js/translated/bom.js:908 templates/js/translated/build.js:1822
msgid "Includes substitute stock"
msgstr ""
-#: templates/js/translated/bom.js:928
+#: templates/js/translated/bom.js:922
msgid "Substitutes"
msgstr ""
-#: templates/js/translated/bom.js:943
+#: templates/js/translated/bom.js:937
msgid "Purchase Price Range"
msgstr ""
-#: templates/js/translated/bom.js:950
+#: templates/js/translated/bom.js:944
msgid "Purchase Price Average"
msgstr ""
-#: templates/js/translated/bom.js:999 templates/js/translated/bom.js:1090
+#: templates/js/translated/bom.js:993 templates/js/translated/bom.js:1084
msgid "View BOM"
msgstr ""
-#: templates/js/translated/bom.js:1061
+#: templates/js/translated/bom.js:1055
msgid "Validate BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:1063
+#: templates/js/translated/bom.js:1057
msgid "This line has been validated"
msgstr ""
-#: templates/js/translated/bom.js:1065
+#: templates/js/translated/bom.js:1059
msgid "Edit substitute parts"
msgstr ""
-#: templates/js/translated/bom.js:1067 templates/js/translated/bom.js:1228
+#: templates/js/translated/bom.js:1061 templates/js/translated/bom.js:1222
msgid "Edit BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:1069
+#: templates/js/translated/bom.js:1063
msgid "Delete BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:1164 templates/js/translated/build.js:1615
+#: templates/js/translated/bom.js:1158 templates/js/translated/build.js:1615
msgid "No BOM items found"
msgstr ""
-#: templates/js/translated/bom.js:1408 templates/js/translated/build.js:1753
+#: templates/js/translated/bom.js:1402 templates/js/translated/build.js:1753
msgid "Required Part"
msgstr ""
-#: templates/js/translated/bom.js:1430
+#: templates/js/translated/bom.js:1424
msgid "Inherited from parent BOM"
msgstr ""
@@ -8040,13 +8033,13 @@ msgstr ""
msgid "Complete Build Order"
msgstr ""
-#: templates/js/translated/build.js:259 templates/js/translated/stock.js:91
-#: templates/js/translated/stock.js:181
+#: templates/js/translated/build.js:259 templates/js/translated/stock.js:90
+#: templates/js/translated/stock.js:180
msgid "Next available serial number"
msgstr ""
-#: templates/js/translated/build.js:261 templates/js/translated/stock.js:93
-#: templates/js/translated/stock.js:183
+#: templates/js/translated/build.js:261 templates/js/translated/stock.js:92
+#: templates/js/translated/stock.js:182
msgid "Latest serial number"
msgstr ""
@@ -8259,9 +8252,9 @@ msgstr ""
msgid "No builds matching query"
msgstr ""
-#: templates/js/translated/build.js:2448 templates/js/translated/part.js:1314
-#: templates/js/translated/part.js:1729 templates/js/translated/stock.js:1619
-#: templates/js/translated/stock.js:2277
+#: templates/js/translated/build.js:2448 templates/js/translated/part.js:1358
+#: templates/js/translated/part.js:1825 templates/js/translated/stock.js:1629
+#: templates/js/translated/stock.js:2287
msgid "Select"
msgstr ""
@@ -8273,7 +8266,7 @@ msgstr ""
msgid "Progress"
msgstr ""
-#: templates/js/translated/build.js:2532 templates/js/translated/stock.js:2519
+#: templates/js/translated/build.js:2532 templates/js/translated/stock.js:2529
msgid "No user information"
msgstr ""
@@ -8285,107 +8278,107 @@ msgstr ""
msgid "No parts allocated for"
msgstr ""
-#: templates/js/translated/company.js:66
+#: templates/js/translated/company.js:65
msgid "Add Manufacturer"
msgstr ""
-#: templates/js/translated/company.js:79 templates/js/translated/company.js:169
+#: templates/js/translated/company.js:78 templates/js/translated/company.js:168
msgid "Add Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:100
+#: templates/js/translated/company.js:99
msgid "Edit Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:157 templates/js/translated/order.js:506
+#: templates/js/translated/company.js:156 templates/js/translated/order.js:506
msgid "Add Supplier"
msgstr "Aggiungi fornitore"
-#: templates/js/translated/company.js:185
+#: templates/js/translated/company.js:184
msgid "Add Supplier Part"
msgstr "Aggiungi fornitore articolo"
-#: templates/js/translated/company.js:200
+#: templates/js/translated/company.js:199
msgid "Edit Supplier Part"
msgstr "Modifica fornitore articolo"
-#: templates/js/translated/company.js:248
+#: templates/js/translated/company.js:249
msgid "All selected supplier parts will be deleted"
msgstr "Tutte gli articoli del fornitore selezionati saranno eliminati"
-#: templates/js/translated/company.js:263
+#: templates/js/translated/company.js:264
msgid "Delete Supplier Parts"
msgstr ""
-#: templates/js/translated/company.js:342
+#: templates/js/translated/company.js:336
msgid "Add new Company"
msgstr ""
-#: templates/js/translated/company.js:419
+#: templates/js/translated/company.js:413
msgid "Parts Supplied"
msgstr "Fornitori articoli"
-#: templates/js/translated/company.js:428
+#: templates/js/translated/company.js:422
msgid "Parts Manufactured"
msgstr ""
-#: templates/js/translated/company.js:443
+#: templates/js/translated/company.js:437
msgid "No company information found"
msgstr ""
-#: templates/js/translated/company.js:482
+#: templates/js/translated/company.js:478
msgid "All selected manufacturer parts will be deleted"
msgstr ""
-#: templates/js/translated/company.js:496
+#: templates/js/translated/company.js:492
msgid "Delete Manufacturer Parts"
msgstr ""
-#: templates/js/translated/company.js:535
+#: templates/js/translated/company.js:526
msgid "All selected parameters will be deleted"
msgstr ""
-#: templates/js/translated/company.js:548
+#: templates/js/translated/company.js:539
msgid "Delete Parameters"
msgstr "Elimina Parametri"
-#: templates/js/translated/company.js:595
+#: templates/js/translated/company.js:580
msgid "No manufacturer parts found"
msgstr ""
-#: templates/js/translated/company.js:615
-#: templates/js/translated/company.js:874 templates/js/translated/part.js:565
-#: templates/js/translated/part.js:650
+#: templates/js/translated/company.js:600
+#: templates/js/translated/company.js:859 templates/js/translated/part.js:609
+#: templates/js/translated/part.js:694
msgid "Template part"
msgstr ""
-#: templates/js/translated/company.js:619
-#: templates/js/translated/company.js:878 templates/js/translated/part.js:569
-#: templates/js/translated/part.js:654
+#: templates/js/translated/company.js:604
+#: templates/js/translated/company.js:863 templates/js/translated/part.js:613
+#: templates/js/translated/part.js:698
msgid "Assembled part"
msgstr ""
-#: templates/js/translated/company.js:747 templates/js/translated/part.js:757
+#: templates/js/translated/company.js:732 templates/js/translated/part.js:801
msgid "No parameters found"
msgstr ""
-#: templates/js/translated/company.js:784 templates/js/translated/part.js:799
+#: templates/js/translated/company.js:769 templates/js/translated/part.js:843
msgid "Edit parameter"
msgstr "Modifica parametro"
-#: templates/js/translated/company.js:785 templates/js/translated/part.js:800
+#: templates/js/translated/company.js:770 templates/js/translated/part.js:844
msgid "Delete parameter"
msgstr "Elimina il parametro"
-#: templates/js/translated/company.js:804 templates/js/translated/part.js:817
+#: templates/js/translated/company.js:789 templates/js/translated/part.js:861
msgid "Edit Parameter"
msgstr "Modifica parametro"
-#: templates/js/translated/company.js:815 templates/js/translated/part.js:829
+#: templates/js/translated/company.js:800 templates/js/translated/part.js:873
msgid "Delete Parameter"
msgstr "Elimina Parametri"
-#: templates/js/translated/company.js:854
+#: templates/js/translated/company.js:839
msgid "No supplier parts found"
msgstr "Nessun fornitore trovato"
@@ -8448,36 +8441,36 @@ msgstr "Mostra operazione non consentita"
msgid "Keep this form open"
msgstr ""
-#: templates/js/translated/forms.js:756
+#: templates/js/translated/forms.js:757
msgid "Enter a valid number"
msgstr "Inserisci un numero valido"
-#: templates/js/translated/forms.js:1248 templates/modals.html:19
+#: templates/js/translated/forms.js:1249 templates/modals.html:19
#: templates/modals.html:43
msgid "Form errors exist"
msgstr ""
-#: templates/js/translated/forms.js:1681
+#: templates/js/translated/forms.js:1682
msgid "No results found"
msgstr "Nessun risultato trovato"
-#: templates/js/translated/forms.js:1896 templates/search.html:29
+#: templates/js/translated/forms.js:1897 templates/search.html:29
msgid "Searching"
msgstr "Ricerca"
-#: templates/js/translated/forms.js:2149
+#: templates/js/translated/forms.js:2150
msgid "Clear input"
msgstr "Cancella input"
-#: templates/js/translated/forms.js:2615
+#: templates/js/translated/forms.js:2616
msgid "File Column"
msgstr ""
-#: templates/js/translated/forms.js:2615
+#: templates/js/translated/forms.js:2616
msgid "Field Name"
msgstr ""
-#: templates/js/translated/forms.js:2627
+#: templates/js/translated/forms.js:2628
msgid "Select Columns"
msgstr ""
@@ -8498,7 +8491,7 @@ msgid "Labels sent to printer"
msgstr ""
#: templates/js/translated/label.js:60 templates/js/translated/report.js:118
-#: templates/js/translated/stock.js:1023
+#: templates/js/translated/stock.js:1022
msgid "Select Stock Items"
msgstr ""
@@ -8552,12 +8545,12 @@ msgid "Select Label Template"
msgstr "Seleziona Modello Etichetta"
#: templates/js/translated/modals.js:82 templates/js/translated/modals.js:142
-#: templates/js/translated/modals.js:621
+#: templates/js/translated/modals.js:627
msgid "Cancel"
msgstr "Annulla"
#: templates/js/translated/modals.js:83 templates/js/translated/modals.js:141
-#: templates/js/translated/modals.js:688 templates/js/translated/modals.js:996
+#: templates/js/translated/modals.js:694 templates/js/translated/modals.js:1002
#: templates/modals.html:28 templates/modals.html:51
msgid "Submit"
msgstr "Invia"
@@ -8566,47 +8559,47 @@ msgstr "Invia"
msgid "Form Title"
msgstr "Titolo modulo"
-#: templates/js/translated/modals.js:403
+#: templates/js/translated/modals.js:421
msgid "Waiting for server..."
msgstr "In attesa del server..."
-#: templates/js/translated/modals.js:562
+#: templates/js/translated/modals.js:568
msgid "Show Error Information"
msgstr "Informazioni sull'errore"
-#: templates/js/translated/modals.js:620
+#: templates/js/translated/modals.js:626
msgid "Accept"
msgstr "Accetta"
-#: templates/js/translated/modals.js:677
+#: templates/js/translated/modals.js:683
msgid "Loading Data"
msgstr ""
-#: templates/js/translated/modals.js:948
+#: templates/js/translated/modals.js:954
msgid "Invalid response from server"
msgstr "Risposta dal server non valida"
-#: templates/js/translated/modals.js:948
+#: templates/js/translated/modals.js:954
msgid "Form data missing from server response"
msgstr ""
-#: templates/js/translated/modals.js:960
+#: templates/js/translated/modals.js:966
msgid "Error posting form data"
msgstr ""
-#: templates/js/translated/modals.js:1057
+#: templates/js/translated/modals.js:1063
msgid "JSON response missing form data"
msgstr ""
-#: templates/js/translated/modals.js:1072
+#: templates/js/translated/modals.js:1078
msgid "Error 400: Bad Request"
msgstr ""
-#: templates/js/translated/modals.js:1073
+#: templates/js/translated/modals.js:1079
msgid "Server returned error code 400"
msgstr ""
-#: templates/js/translated/modals.js:1096
+#: templates/js/translated/modals.js:1102
msgid "Error requesting form data"
msgstr ""
@@ -8656,11 +8649,11 @@ msgstr ""
msgid "Mark as read"
msgstr ""
-#: templates/js/translated/notification.js:259
+#: templates/js/translated/notification.js:260
msgid "No unread notifications"
msgstr ""
-#: templates/js/translated/notification.js:300 templates/notifications.html:10
+#: templates/js/translated/notification.js:302 templates/notifications.html:10
msgid "Notifications will load here"
msgstr ""
@@ -8804,7 +8797,7 @@ msgstr ""
msgid "Quantity to receive"
msgstr "Quantità da ricevere"
-#: templates/js/translated/order.js:1225 templates/js/translated/stock.js:2080
+#: templates/js/translated/order.js:1225 templates/js/translated/stock.js:2090
msgid "Stock Status"
msgstr "Stato giacenza"
@@ -8828,7 +8821,7 @@ msgstr ""
msgid "Receive Purchase Order Items"
msgstr ""
-#: templates/js/translated/order.js:1602 templates/js/translated/part.js:870
+#: templates/js/translated/order.js:1602 templates/js/translated/part.js:914
msgid "No purchase orders found"
msgstr ""
@@ -8863,7 +8856,7 @@ msgstr "Totale"
#: templates/js/translated/order.js:1937 templates/js/translated/order.js:2139
#: templates/js/translated/order.js:3467 templates/js/translated/order.js:3978
-#: templates/js/translated/part.js:1948 templates/js/translated/part.js:2301
+#: templates/js/translated/part.js:2044 templates/js/translated/part.js:2397
msgid "Unit Price"
msgstr "Prezzo Unitario"
@@ -8873,11 +8866,11 @@ msgid "Total Price"
msgstr "Prezzo Totale"
#: templates/js/translated/order.js:1993 templates/js/translated/order.js:3525
-#: templates/js/translated/part.js:979
+#: templates/js/translated/part.js:1023
msgid "This line item is overdue"
msgstr ""
-#: templates/js/translated/order.js:2052 templates/js/translated/part.js:1025
+#: templates/js/translated/order.js:2052 templates/js/translated/part.js:1069
msgid "Receive line item"
msgstr ""
@@ -8998,7 +8991,7 @@ msgid "Delete Stock Allocation"
msgstr "Elimina posizione giacenza"
#: templates/js/translated/order.js:3243 templates/js/translated/order.js:3332
-#: templates/js/translated/stock.js:1535
+#: templates/js/translated/stock.js:1545
msgid "Shipped to customer"
msgstr "Spedito al cliente"
@@ -9138,165 +9131,209 @@ msgstr "Articolo modificato"
msgid "Create Part Variant"
msgstr ""
+#: templates/js/translated/part.js:405
+msgid "Active Part"
+msgstr ""
+
+#: templates/js/translated/part.js:406
+msgid "Part cannot be deleted as it is currently active"
+msgstr ""
+
+#: templates/js/translated/part.js:420
+msgid "Deleting this part cannot be reversed"
+msgstr ""
+
+#: templates/js/translated/part.js:422
+msgid "Any stock items for this part will be deleted"
+msgstr ""
+
#: templates/js/translated/part.js:423
+msgid "This part will be removed from any Bills of Material"
+msgstr ""
+
+#: templates/js/translated/part.js:424
+msgid "All manufacturer and supplier information for this part will be deleted"
+msgstr ""
+
+#: templates/js/translated/part.js:431
+msgid "Delete Part"
+msgstr ""
+
+#: templates/js/translated/part.js:467
msgid "You are subscribed to notifications for this item"
msgstr ""
-#: templates/js/translated/part.js:425
+#: templates/js/translated/part.js:469
msgid "You have subscribed to notifications for this item"
msgstr ""
-#: templates/js/translated/part.js:430
+#: templates/js/translated/part.js:474
msgid "Subscribe to notifications for this item"
msgstr ""
-#: templates/js/translated/part.js:432
+#: templates/js/translated/part.js:476
msgid "You have unsubscribed to notifications for this item"
msgstr ""
-#: templates/js/translated/part.js:449
+#: templates/js/translated/part.js:493
msgid "Validating the BOM will mark each line item as valid"
msgstr ""
-#: templates/js/translated/part.js:459
+#: templates/js/translated/part.js:503
msgid "Validate Bill of Materials"
msgstr "Convalida la distinta dei materiali"
-#: templates/js/translated/part.js:462
+#: templates/js/translated/part.js:506
msgid "Validated Bill of Materials"
msgstr ""
-#: templates/js/translated/part.js:487
+#: templates/js/translated/part.js:531
msgid "Copy Bill of Materials"
msgstr ""
-#: templates/js/translated/part.js:513 templates/js/translated/part.js:1397
+#: templates/js/translated/part.js:557 templates/js/translated/part.js:1441
#: templates/js/translated/table_filters.js:452
msgid "Low stock"
msgstr "In esaurimento"
-#: templates/js/translated/part.js:523 templates/js/translated/part.js:1409
+#: templates/js/translated/part.js:567 templates/js/translated/part.js:1453
msgid "No stock available"
msgstr ""
-#: templates/js/translated/part.js:557 templates/js/translated/part.js:642
+#: templates/js/translated/part.js:601 templates/js/translated/part.js:686
msgid "Trackable part"
msgstr "Parte tracciabile"
-#: templates/js/translated/part.js:561 templates/js/translated/part.js:646
+#: templates/js/translated/part.js:605 templates/js/translated/part.js:690
msgid "Virtual part"
msgstr "Parte virtuale"
-#: templates/js/translated/part.js:573
+#: templates/js/translated/part.js:617
msgid "Subscribed part"
msgstr "Parte sottoscritta"
-#: templates/js/translated/part.js:577
+#: templates/js/translated/part.js:621
msgid "Salable part"
msgstr "Parte vendibile"
-#: templates/js/translated/part.js:705
+#: templates/js/translated/part.js:749
msgid "No variants found"
msgstr "Nessuna variante trovata"
-#: templates/js/translated/part.js:1095
+#: templates/js/translated/part.js:1139
msgid "Delete part relationship"
msgstr "Elimina relazione tra i componenti"
-#: templates/js/translated/part.js:1119
+#: templates/js/translated/part.js:1163
msgid "Delete Part Relationship"
msgstr ""
-#: templates/js/translated/part.js:1184 templates/js/translated/part.js:1480
+#: templates/js/translated/part.js:1228 templates/js/translated/part.js:1524
msgid "No parts found"
msgstr "Nessun articolo trovato"
-#: templates/js/translated/part.js:1223
+#: templates/js/translated/part.js:1267
msgid "Not available"
msgstr ""
-#: templates/js/translated/part.js:1374
+#: templates/js/translated/part.js:1418
msgid "No category"
msgstr "Nessuna categoria"
-#: templates/js/translated/part.js:1504 templates/js/translated/part.js:1664
-#: templates/js/translated/stock.js:2238
+#: templates/js/translated/part.js:1548 templates/js/translated/part.js:1760
+#: templates/js/translated/stock.js:2248
msgid "Display as list"
msgstr "Visualizza come elenco"
-#: templates/js/translated/part.js:1520
+#: templates/js/translated/part.js:1564
msgid "Display as grid"
msgstr "Visualizza come griglia"
-#: templates/js/translated/part.js:1683 templates/js/translated/stock.js:2257
+#: templates/js/translated/part.js:1630
+msgid "Set the part category for the selected parts"
+msgstr ""
+
+#: templates/js/translated/part.js:1635
+msgid "Set Part Category"
+msgstr "Imposta categoria articolo"
+
+#: templates/js/translated/part.js:1640
+msgid "Select Part Category"
+msgstr ""
+
+#: templates/js/translated/part.js:1653
+msgid "Category is required"
+msgstr ""
+
+#: templates/js/translated/part.js:1779 templates/js/translated/stock.js:2267
msgid "Display as tree"
msgstr "Visualizza come struttura ad albero"
-#: templates/js/translated/part.js:1747
+#: templates/js/translated/part.js:1843
msgid "Subscribed category"
msgstr "Categoria sottoscritta"
-#: templates/js/translated/part.js:1761 templates/js/translated/stock.js:2301
+#: templates/js/translated/part.js:1857 templates/js/translated/stock.js:2311
msgid "Path"
msgstr "Percorso"
-#: templates/js/translated/part.js:1805
+#: templates/js/translated/part.js:1901
msgid "No test templates matching query"
msgstr "Nessun modello di test corrispondente"
-#: templates/js/translated/part.js:1856 templates/js/translated/stock.js:1233
+#: templates/js/translated/part.js:1952 templates/js/translated/stock.js:1243
msgid "Edit test result"
msgstr "Modificare il risultato del test"
-#: templates/js/translated/part.js:1857 templates/js/translated/stock.js:1234
-#: templates/js/translated/stock.js:1493
+#: templates/js/translated/part.js:1953 templates/js/translated/stock.js:1244
+#: templates/js/translated/stock.js:1503
msgid "Delete test result"
msgstr "Cancellare il risultato del test"
-#: templates/js/translated/part.js:1863
+#: templates/js/translated/part.js:1959
msgid "This test is defined for a parent part"
msgstr ""
-#: templates/js/translated/part.js:1885
+#: templates/js/translated/part.js:1981
msgid "Edit Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:1899
+#: templates/js/translated/part.js:1995
msgid "Delete Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:1924
+#: templates/js/translated/part.js:2020
#, python-brace-format
msgid "No ${human_name} information found"
msgstr ""
-#: templates/js/translated/part.js:1981
+#: templates/js/translated/part.js:2077
#, python-brace-format
msgid "Edit ${human_name}"
msgstr "Modifica ${human_name}"
-#: templates/js/translated/part.js:1982
+#: templates/js/translated/part.js:2078
#, python-brace-format
msgid "Delete ${human_name}"
msgstr "Elimina ${human_name}"
-#: templates/js/translated/part.js:2096
+#: templates/js/translated/part.js:2192
msgid "Current Stock"
msgstr ""
-#: templates/js/translated/part.js:2129
+#: templates/js/translated/part.js:2225
msgid "No scheduling information available for this part"
msgstr ""
-#: templates/js/translated/part.js:2155
+#: templates/js/translated/part.js:2251
msgid "Scheduled Stock Quantities"
msgstr ""
-#: templates/js/translated/part.js:2225
+#: templates/js/translated/part.js:2321
msgid "Single Price"
msgstr "Prezzo Singolo"
-#: templates/js/translated/part.js:2244
+#: templates/js/translated/part.js:2340
msgid "Single Price Difference"
msgstr ""
@@ -9378,360 +9415,360 @@ msgstr ""
msgid "Remove results"
msgstr ""
-#: templates/js/translated/stock.js:73
+#: templates/js/translated/stock.js:72
msgid "Serialize Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:101
+#: templates/js/translated/stock.js:100
msgid "Confirm Stock Serialization"
msgstr ""
-#: templates/js/translated/stock.js:110
+#: templates/js/translated/stock.js:109
msgid "Parent stock location"
msgstr "Posizione giacenza principale"
-#: templates/js/translated/stock.js:139
+#: templates/js/translated/stock.js:138
msgid "Edit Stock Location"
msgstr "Modifica Posizione Giacenza"
-#: templates/js/translated/stock.js:154
+#: templates/js/translated/stock.js:153
msgid "New Stock Location"
msgstr "Nuova posizione giacenza"
-#: templates/js/translated/stock.js:194
+#: templates/js/translated/stock.js:193
msgid "This part cannot be serialized"
msgstr ""
-#: templates/js/translated/stock.js:233
+#: templates/js/translated/stock.js:232
msgid "Enter initial quantity for this stock item"
msgstr "Inserisci quantità iniziale per questo articolo in giacenza"
-#: templates/js/translated/stock.js:239
+#: templates/js/translated/stock.js:238
msgid "Enter serial numbers for new stock (or leave blank)"
msgstr "Inserire i numeri di serie per la nuova giacenza (o lasciare vuoto)"
-#: templates/js/translated/stock.js:304
+#: templates/js/translated/stock.js:303
msgid "Stock item duplicated"
msgstr ""
-#: templates/js/translated/stock.js:324
+#: templates/js/translated/stock.js:323
msgid "Duplicate Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:344
+#: templates/js/translated/stock.js:343
msgid "Edit Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:394
+#: templates/js/translated/stock.js:393
msgid "Created new stock item"
msgstr "Crea nuova allocazione magazzino"
-#: templates/js/translated/stock.js:407
+#: templates/js/translated/stock.js:406
msgid "Created multiple stock items"
msgstr "Creato più elementi stock"
-#: templates/js/translated/stock.js:432
+#: templates/js/translated/stock.js:431
msgid "Find Serial Number"
msgstr ""
-#: templates/js/translated/stock.js:436 templates/js/translated/stock.js:437
+#: templates/js/translated/stock.js:435 templates/js/translated/stock.js:436
msgid "Enter serial number"
msgstr ""
-#: templates/js/translated/stock.js:453
+#: templates/js/translated/stock.js:452
msgid "Enter a serial number"
msgstr ""
-#: templates/js/translated/stock.js:473
+#: templates/js/translated/stock.js:472
msgid "No matching serial number"
msgstr ""
-#: templates/js/translated/stock.js:482
+#: templates/js/translated/stock.js:481
msgid "More than one matching result found"
msgstr ""
-#: templates/js/translated/stock.js:605
+#: templates/js/translated/stock.js:604
msgid "Confirm stock assignment"
msgstr ""
-#: templates/js/translated/stock.js:606
+#: templates/js/translated/stock.js:605
msgid "Assign Stock to Customer"
msgstr ""
-#: templates/js/translated/stock.js:683
+#: templates/js/translated/stock.js:682
msgid "Warning: Merge operation cannot be reversed"
msgstr ""
-#: templates/js/translated/stock.js:684
+#: templates/js/translated/stock.js:683
msgid "Some information will be lost when merging stock items"
msgstr ""
-#: templates/js/translated/stock.js:686
+#: templates/js/translated/stock.js:685
msgid "Stock transaction history will be deleted for merged items"
msgstr ""
-#: templates/js/translated/stock.js:687
+#: templates/js/translated/stock.js:686
msgid "Supplier part information will be deleted for merged items"
msgstr ""
-#: templates/js/translated/stock.js:773
+#: templates/js/translated/stock.js:772
msgid "Confirm stock item merge"
msgstr ""
-#: templates/js/translated/stock.js:774
+#: templates/js/translated/stock.js:773
msgid "Merge Stock Items"
msgstr ""
-#: templates/js/translated/stock.js:869
+#: templates/js/translated/stock.js:868
msgid "Transfer Stock"
msgstr "Trasferisci giacenza"
-#: templates/js/translated/stock.js:870
+#: templates/js/translated/stock.js:869
msgid "Move"
msgstr "Sposta"
-#: templates/js/translated/stock.js:876
+#: templates/js/translated/stock.js:875
msgid "Count Stock"
msgstr "Conta giacenza"
-#: templates/js/translated/stock.js:877
+#: templates/js/translated/stock.js:876
msgid "Count"
msgstr "Conta"
-#: templates/js/translated/stock.js:881
+#: templates/js/translated/stock.js:880
msgid "Remove Stock"
msgstr "Rimuovi giacenza"
-#: templates/js/translated/stock.js:882
+#: templates/js/translated/stock.js:881
msgid "Take"
msgstr "Prendi"
-#: templates/js/translated/stock.js:886
+#: templates/js/translated/stock.js:885
msgid "Add Stock"
msgstr "Aggiungi giacenza"
-#: templates/js/translated/stock.js:887 users/models.py:215
+#: templates/js/translated/stock.js:886 users/models.py:215
msgid "Add"
msgstr "Aggiungi"
-#: templates/js/translated/stock.js:891
+#: templates/js/translated/stock.js:890
msgid "Delete Stock"
msgstr "Elimina Stock"
-#: templates/js/translated/stock.js:984
+#: templates/js/translated/stock.js:983
msgid "Quantity cannot be adjusted for serialized stock"
msgstr ""
-#: templates/js/translated/stock.js:984
+#: templates/js/translated/stock.js:983
msgid "Specify stock quantity"
msgstr "Specificare la quantità di magazzino"
-#: templates/js/translated/stock.js:1024
+#: templates/js/translated/stock.js:1023
msgid "You must select at least one available stock item"
msgstr "Devi selezionare almeno un articolo disponibile"
-#: templates/js/translated/stock.js:1047
+#: templates/js/translated/stock.js:1046
msgid "Confirm stock adjustment"
msgstr ""
-#: templates/js/translated/stock.js:1172
+#: templates/js/translated/stock.js:1182
msgid "PASS"
msgstr ""
-#: templates/js/translated/stock.js:1174
+#: templates/js/translated/stock.js:1184
msgid "FAIL"
msgstr ""
-#: templates/js/translated/stock.js:1179
+#: templates/js/translated/stock.js:1189
msgid "NO RESULT"
msgstr "NESSUN RISULTATO"
-#: templates/js/translated/stock.js:1226
+#: templates/js/translated/stock.js:1236
msgid "Pass test"
msgstr ""
-#: templates/js/translated/stock.js:1229
+#: templates/js/translated/stock.js:1239
msgid "Add test result"
msgstr "Aggiungi risultato test"
-#: templates/js/translated/stock.js:1255
+#: templates/js/translated/stock.js:1265
msgid "No test results found"
msgstr "Nessun risultato di prova trovato"
-#: templates/js/translated/stock.js:1311
+#: templates/js/translated/stock.js:1321
msgid "Test Date"
msgstr ""
-#: templates/js/translated/stock.js:1476
+#: templates/js/translated/stock.js:1486
msgid "Edit Test Result"
msgstr ""
-#: templates/js/translated/stock.js:1498
+#: templates/js/translated/stock.js:1508
msgid "Delete Test Result"
msgstr ""
-#: templates/js/translated/stock.js:1527
+#: templates/js/translated/stock.js:1537
msgid "In production"
msgstr "In produzione"
-#: templates/js/translated/stock.js:1531
+#: templates/js/translated/stock.js:1541
msgid "Installed in Stock Item"
msgstr "Installato nell'elemento stock"
-#: templates/js/translated/stock.js:1539
+#: templates/js/translated/stock.js:1549
msgid "Assigned to Sales Order"
msgstr "Assegnato all'ordine di vendita"
-#: templates/js/translated/stock.js:1545
+#: templates/js/translated/stock.js:1555
msgid "No stock location set"
msgstr "Nessuna giacenza impostata"
-#: templates/js/translated/stock.js:1712
+#: templates/js/translated/stock.js:1722
msgid "Stock item is in production"
msgstr "L'articolo di magazzino è in produzione"
-#: templates/js/translated/stock.js:1717
+#: templates/js/translated/stock.js:1727
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:1720
+#: templates/js/translated/stock.js:1730
msgid "Stock item assigned to customer"
msgstr "Articolo stock assegnato al cliente"
-#: templates/js/translated/stock.js:1723
+#: templates/js/translated/stock.js:1733
msgid "Serialized stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:1725
+#: templates/js/translated/stock.js:1735
msgid "Stock item has been fully allocated"
msgstr ""
-#: templates/js/translated/stock.js:1727
+#: templates/js/translated/stock.js:1737
msgid "Stock item has been partially allocated"
msgstr ""
-#: templates/js/translated/stock.js:1730
+#: templates/js/translated/stock.js:1740
msgid "Stock item has been installed in another item"
msgstr "L'elemento stock è stato installato in un altro articolo"
-#: templates/js/translated/stock.js:1734
+#: templates/js/translated/stock.js:1744
msgid "Stock item has expired"
msgstr "L'articolo stock è scaduto"
-#: templates/js/translated/stock.js:1736
+#: templates/js/translated/stock.js:1746
msgid "Stock item will expire soon"
msgstr "Articolo in giacenza prossimo alla scadenza"
-#: templates/js/translated/stock.js:1743
+#: templates/js/translated/stock.js:1753
msgid "Stock item has been rejected"
msgstr "L'articolo stock è stato rifiutato"
-#: templates/js/translated/stock.js:1745
+#: templates/js/translated/stock.js:1755
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:1747
+#: templates/js/translated/stock.js:1757
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:1751
+#: templates/js/translated/stock.js:1761
#: templates/js/translated/table_filters.js:188
msgid "Depleted"
msgstr "Esaurito"
-#: templates/js/translated/stock.js:1802
+#: templates/js/translated/stock.js:1812
msgid "Stocktake"
msgstr "Inventario"
-#: templates/js/translated/stock.js:1884
+#: templates/js/translated/stock.js:1894
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:1922
+#: templates/js/translated/stock.js:1932
msgid "No stock items matching query"
msgstr ""
-#: templates/js/translated/stock.js:2095
+#: templates/js/translated/stock.js:2105
msgid "Set Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:2109
+#: templates/js/translated/stock.js:2119
msgid "Select Status Code"
msgstr ""
-#: templates/js/translated/stock.js:2110
+#: templates/js/translated/stock.js:2120
msgid "Status code must be selected"
msgstr ""
-#: templates/js/translated/stock.js:2365
+#: templates/js/translated/stock.js:2375
msgid "Details"
msgstr ""
-#: templates/js/translated/stock.js:2381
+#: templates/js/translated/stock.js:2391
msgid "Part information unavailable"
msgstr ""
-#: templates/js/translated/stock.js:2403
+#: templates/js/translated/stock.js:2413
msgid "Location no longer exists"
msgstr "La posizione non esiste più"
-#: templates/js/translated/stock.js:2422
+#: templates/js/translated/stock.js:2432
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2441
+#: templates/js/translated/stock.js:2451
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2459
+#: templates/js/translated/stock.js:2469
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2482
+#: templates/js/translated/stock.js:2492
msgid "Added"
msgstr "Aggiunto"
-#: templates/js/translated/stock.js:2490
+#: templates/js/translated/stock.js:2500
msgid "Removed"
msgstr "Rimosso"
-#: templates/js/translated/stock.js:2566
+#: templates/js/translated/stock.js:2576
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:2617 templates/js/translated/stock.js:2653
+#: templates/js/translated/stock.js:2627 templates/js/translated/stock.js:2663
msgid "Uninstall Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:2666
+#: templates/js/translated/stock.js:2676
msgid "Select stock item to uninstall"
msgstr ""
-#: templates/js/translated/stock.js:2687
+#: templates/js/translated/stock.js:2697
msgid "Install another stock item into this item"
msgstr ""
-#: templates/js/translated/stock.js:2688
+#: templates/js/translated/stock.js:2698
msgid "Stock items can only be installed if they meet the following criteria"
msgstr ""
-#: templates/js/translated/stock.js:2690
+#: templates/js/translated/stock.js:2700
msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:2691
+#: templates/js/translated/stock.js:2701
msgid "The Stock Item is currently available in stock"
msgstr ""
-#: templates/js/translated/stock.js:2692
+#: templates/js/translated/stock.js:2702
msgid "The Stock Item is not already installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:2693
+#: templates/js/translated/stock.js:2703
msgid "The Stock Item is tracked by either a batch code or serial number"
msgstr ""
-#: templates/js/translated/stock.js:2706
+#: templates/js/translated/stock.js:2716
msgid "Select part to install"
msgstr ""
diff --git a/InvenTree/locale/ja/LC_MESSAGES/django.po b/InvenTree/locale/ja/LC_MESSAGES/django.po
index ba692c2ee7..37ba174160 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: 2022-06-05 14:26+0000\n"
-"PO-Revision-Date: 2022-06-05 14:34\n"
+"POT-Creation-Date: 2022-06-06 22:59+0000\n"
+"PO-Revision-Date: 2022-06-07 14:34\n"
"Last-Translator: \n"
"Language-Team: Japanese\n"
"Language: ja_JP\n"
@@ -17,7 +17,7 @@ msgstr ""
"X-Crowdin-File: /[inventree.InvenTree] l10/InvenTree/locale/en/LC_MESSAGES/django.po\n"
"X-Crowdin-File-ID: 154\n"
-#: InvenTree/api.py:46
+#: InvenTree/api.py:49
msgid "API endpoint not found"
msgstr "APIエンドポイントが見つかりません"
@@ -29,275 +29,273 @@ msgstr ""
msgid "Enter date"
msgstr "日付を入力する"
-#: InvenTree/forms.py:117 templates/account/email_confirm.html:20
-#: templates/js/translated/forms.js:630
-msgid "Confirm"
-msgstr "確認"
-
-#: InvenTree/forms.py:134
+#: InvenTree/forms.py:117
msgid "Confirm delete"
msgstr "削除の確認"
-#: InvenTree/forms.py:135
+#: InvenTree/forms.py:118
msgid "Confirm item deletion"
msgstr "削除の確認"
-#: InvenTree/forms.py:167
+#: InvenTree/forms.py:150
msgid "Enter password"
msgstr "パスワードを入力してください"
-#: InvenTree/forms.py:168
+#: InvenTree/forms.py:151
msgid "Enter new password"
msgstr "新しいパスワードを入力してください。"
-#: InvenTree/forms.py:175
+#: InvenTree/forms.py:158
msgid "Confirm password"
msgstr "パスワードの確認"
-#: InvenTree/forms.py:176
+#: InvenTree/forms.py:159
msgid "Confirm new password"
msgstr "新しいパスワードの確認"
-#: InvenTree/forms.py:213
-msgid "Select Category"
-msgstr "カテゴリの選択"
-
-#: InvenTree/forms.py:234
+#: InvenTree/forms.py:184
msgid "Email (again)"
msgstr "メールアドレス(確認用)"
-#: InvenTree/forms.py:238
+#: InvenTree/forms.py:188
msgid "Email address confirmation"
msgstr "メールアドレスの確認"
-#: InvenTree/forms.py:259
+#: InvenTree/forms.py:209
msgid "You must type the same email each time."
msgstr "毎回同じメールアドレスを入力する必要があります。"
-#: InvenTree/helpers.py:402
+#: InvenTree/helpers.py:404
#, python-brace-format
msgid "Duplicate serial: {sn}"
msgstr "重複したシリアル番号: {sn}"
-#: InvenTree/helpers.py:409 order/models.py:365 order/models.py:517
+#: InvenTree/helpers.py:411 order/models.py:370 order/models.py:522
msgid "Invalid quantity provided"
msgstr "数量コードが無効です"
-#: InvenTree/helpers.py:412
+#: InvenTree/helpers.py:414
msgid "Empty serial number string"
msgstr "シリアル番号は空です"
-#: InvenTree/helpers.py:444
+#: InvenTree/helpers.py:446
#, python-brace-format
msgid "Invalid group range: {g}"
msgstr ""
-#: InvenTree/helpers.py:447
+#: InvenTree/helpers.py:449
#, python-brace-format
msgid "Invalid group: {g}"
msgstr "無効なグループ: {g}"
-#: InvenTree/helpers.py:475
+#: InvenTree/helpers.py:477
#, python-brace-format
msgid "Invalid group sequence: {g}"
msgstr ""
-#: InvenTree/helpers.py:483
+#: InvenTree/helpers.py:485
#, python-brace-format
msgid "Invalid/no group {group}"
msgstr "{group} は無効なグループか、存在しません。"
-#: InvenTree/helpers.py:489
+#: InvenTree/helpers.py:491
msgid "No serial numbers found"
msgstr "シリアル番号が見つかりません"
-#: InvenTree/helpers.py:493
+#: InvenTree/helpers.py:495
#, python-brace-format
msgid "Number of unique serial numbers ({s}) must match quantity ({q})"
msgstr ""
-#: InvenTree/models.py:174
+#: InvenTree/models.py:178
msgid "Missing file"
msgstr "ファイルがありません"
-#: InvenTree/models.py:175
+#: InvenTree/models.py:179
msgid "Missing external link"
msgstr "外部リンクが見つかりません。"
-#: InvenTree/models.py:187 stock/models.py:2087
-#: templates/js/translated/attachment.js:101
-#: templates/js/translated/attachment.js:198
+#: InvenTree/models.py:191 stock/models.py:2091
+#: templates/js/translated/attachment.js:103
+#: templates/js/translated/attachment.js:194
msgid "Attachment"
msgstr "添付ファイル"
-#: InvenTree/models.py:188
+#: InvenTree/models.py:192
msgid "Select file to attach"
msgstr "添付ファイルを選択"
-#: InvenTree/models.py:194 company/models.py:123 company/models.py:272
-#: company/models.py:506 order/models.py:135 order/models.py:1235
+#: InvenTree/models.py:198 company/models.py:123 company/models.py:272
+#: company/models.py:506 order/models.py:136 order/models.py:1251
#: part/models.py:795
#: report/templates/report/inventree_build_order_base.html:165
-#: templates/js/translated/company.js:655
-#: templates/js/translated/company.js:946 templates/js/translated/order.js:2676
-#: templates/js/translated/part.js:1441
+#: templates/js/translated/company.js:640
+#: templates/js/translated/company.js:931 templates/js/translated/order.js:2676
+#: templates/js/translated/part.js:1485
msgid "Link"
msgstr "リンク"
-#: InvenTree/models.py:195 build/models.py:320 part/models.py:796
+#: InvenTree/models.py:199 build/models.py:320 part/models.py:796
#: stock/models.py:642
msgid "Link to external URL"
msgstr "外部 サイト へのリンク"
-#: InvenTree/models.py:198 templates/js/translated/attachment.js:102
-#: templates/js/translated/attachment.js:242
+#: InvenTree/models.py:202 templates/js/translated/attachment.js:104
+#: templates/js/translated/attachment.js:238
msgid "Comment"
msgstr "コメント:"
-#: InvenTree/models.py:198
+#: InvenTree/models.py:202
msgid "File comment"
msgstr "ファイルコメント"
-#: InvenTree/models.py:204 InvenTree/models.py:205 common/models.py:1499
-#: common/models.py:1500 common/models.py:1728 common/models.py:1729
-#: common/models.py:1991 common/models.py:1992 part/models.py:2153
-#: part/models.py:2173 plugin/models.py:238 plugin/models.py:239
+#: InvenTree/models.py:208 InvenTree/models.py:209 common/models.py:1506
+#: common/models.py:1507 common/models.py:1735 common/models.py:1736
+#: common/models.py:1998 common/models.py:1999 part/models.py:2141
+#: part/models.py:2161 plugin/models.py:238 plugin/models.py:239
#: report/templates/report/inventree_test_report_base.html:96
-#: templates/js/translated/stock.js:2513
+#: templates/js/translated/stock.js:2523
msgid "User"
msgstr "ユーザー"
-#: InvenTree/models.py:208
+#: InvenTree/models.py:212
msgid "upload date"
msgstr "アップロード日時"
-#: InvenTree/models.py:230
+#: InvenTree/models.py:234
msgid "Filename must not be empty"
msgstr "ファイル名は空欄にできません"
-#: InvenTree/models.py:253
+#: InvenTree/models.py:257
msgid "Invalid attachment directory"
msgstr "添付ファイルのディレクトリが正しくありません"
-#: InvenTree/models.py:263
+#: InvenTree/models.py:267
#, python-brace-format
msgid "Filename contains illegal character '{c}'"
msgstr "ファイル名に無効な文字'{c}'が含まれています"
-#: InvenTree/models.py:266
+#: InvenTree/models.py:270
msgid "Filename missing extension"
msgstr "ファイル名に拡張子がありません"
-#: InvenTree/models.py:273
+#: InvenTree/models.py:277
msgid "Attachment with this filename already exists"
msgstr "この名前の貼付ファイルは既に存在します"
-#: InvenTree/models.py:280
+#: InvenTree/models.py:284
msgid "Error renaming file"
msgstr "ファイル名の変更に失敗しました"
-#: InvenTree/models.py:314
+#: InvenTree/models.py:318
msgid "Invalid choice"
msgstr "無効な選択です"
-#: InvenTree/models.py:333 InvenTree/models.py:334 common/models.py:1714
+#: InvenTree/models.py:337 InvenTree/models.py:338 common/models.py:1721
#: company/models.py:354 label/models.py:101 part/models.py:739
-#: part/models.py:2331 plugin/models.py:93 report/models.py:151
+#: part/models.py:2319 plugin/models.py:93 report/models.py:151
#: templates/InvenTree/notifications/notifications.html:84
#: templates/InvenTree/settings/mixins/urls.html:13
#: templates/InvenTree/settings/plugin.html:49
#: templates/InvenTree/settings/plugin.html:132
#: templates/InvenTree/settings/plugin_settings.html:23
#: templates/InvenTree/settings/settings.html:346
-#: templates/js/translated/company.js:539
-#: templates/js/translated/company.js:757 templates/js/translated/part.js:615
-#: templates/js/translated/part.js:767 templates/js/translated/part.js:1736
-#: templates/js/translated/stock.js:2283
+#: templates/js/translated/company.js:530
+#: templates/js/translated/company.js:742 templates/js/translated/part.js:659
+#: templates/js/translated/part.js:811 templates/js/translated/part.js:1832
+#: templates/js/translated/stock.js:2293
msgid "Name"
msgstr "お名前"
-#: InvenTree/models.py:340 build/models.py:197
+#: InvenTree/models.py:344 build/models.py:197
#: build/templates/build/detail.html:24 company/models.py:278
#: company/models.py:512 company/templates/company/company_base.html:71
#: company/templates/company/manufacturer_part.html:75
#: company/templates/company/supplier_part.html:73 label/models.py:108
-#: order/models.py:133 part/models.py:762 part/templates/part/category.html:74
-#: part/templates/part/part_base.html:167
-#: part/templates/part/set_category.html:14 report/models.py:164
+#: order/models.py:134 part/models.py:762 part/templates/part/category.html:74
+#: part/templates/part/part_base.html:167 report/models.py:164
#: report/models.py:509 report/models.py:550
#: report/templates/report/inventree_build_order_base.html:118
#: stock/templates/stock/location.html:103
#: templates/InvenTree/settings/plugin_settings.html:33
-#: templates/js/translated/bom.js:553 templates/js/translated/bom.js:851
-#: templates/js/translated/build.js:2476 templates/js/translated/company.js:401
-#: templates/js/translated/company.js:666
-#: templates/js/translated/company.js:957 templates/js/translated/order.js:1656
+#: templates/js/translated/bom.js:553 templates/js/translated/bom.js:845
+#: templates/js/translated/build.js:2476 templates/js/translated/company.js:395
+#: templates/js/translated/company.js:651
+#: templates/js/translated/company.js:942 templates/js/translated/order.js:1656
#: templates/js/translated/order.js:1888 templates/js/translated/order.js:2476
-#: templates/js/translated/part.js:674 templates/js/translated/part.js:1082
-#: templates/js/translated/part.js:1355 templates/js/translated/part.js:1755
-#: templates/js/translated/part.js:1824 templates/js/translated/stock.js:1676
-#: templates/js/translated/stock.js:2295 templates/js/translated/stock.js:2350
+#: templates/js/translated/part.js:718 templates/js/translated/part.js:1126
+#: templates/js/translated/part.js:1399 templates/js/translated/part.js:1851
+#: templates/js/translated/part.js:1920 templates/js/translated/stock.js:1686
+#: templates/js/translated/stock.js:2305 templates/js/translated/stock.js:2360
msgid "Description"
msgstr "説明"
-#: InvenTree/models.py:341
+#: InvenTree/models.py:345
msgid "Description (optional)"
msgstr "説明 (オプション)"
-#: InvenTree/models.py:349
+#: InvenTree/models.py:353
msgid "parent"
msgstr "親"
-#: InvenTree/serializers.py:52 part/models.py:2652
+#: InvenTree/models.py:466
+msgid "Server Error"
+msgstr ""
+
+#: InvenTree/models.py:467
+msgid "An error has been logged by the server."
+msgstr ""
+
+#: InvenTree/serializers.py:52 part/models.py:2640
msgid "Must be a valid number"
msgstr "有効な数字でなければなりません"
-#: InvenTree/serializers.py:271
+#: InvenTree/serializers.py:263
msgid "Filename"
msgstr "ファイル名"
-#: InvenTree/serializers.py:306
+#: InvenTree/serializers.py:298
msgid "Invalid value"
msgstr "無効な値です。"
-#: InvenTree/serializers.py:328
+#: InvenTree/serializers.py:320
msgid "Data File"
msgstr "データファイル"
-#: InvenTree/serializers.py:329
+#: InvenTree/serializers.py:321
msgid "Select data file for upload"
msgstr "アップロードするファイルを選択"
-#: InvenTree/serializers.py:350
+#: InvenTree/serializers.py:342
msgid "Unsupported file type"
msgstr "サポートされていないファイル形式"
-#: InvenTree/serializers.py:356
+#: InvenTree/serializers.py:348
msgid "File is too large"
msgstr "ファイルサイズが大きすぎます"
-#: InvenTree/serializers.py:377
+#: InvenTree/serializers.py:369
msgid "No columns found in file"
msgstr "ファイルに列が見つかりません"
-#: InvenTree/serializers.py:380
+#: InvenTree/serializers.py:372
msgid "No data rows found in file"
msgstr "ファイルにデータ行がみつかりません"
-#: InvenTree/serializers.py:503
+#: InvenTree/serializers.py:495
msgid "No data rows provided"
msgstr "データが入力されていません"
-#: InvenTree/serializers.py:506
+#: InvenTree/serializers.py:498
msgid "No data columns supplied"
msgstr "データ列が指定されていません"
-#: InvenTree/serializers.py:583
+#: InvenTree/serializers.py:575
#, python-brace-format
msgid "Missing required column: '{name}'"
msgstr "必須の列がありません: {name}"
-#: InvenTree/serializers.py:592
+#: InvenTree/serializers.py:584
#, python-brace-format
msgid "Duplicate column: '{col}'"
msgstr "{col} 列が重複しています。"
@@ -440,7 +438,7 @@ msgstr "紛失"
msgid "Returned"
msgstr "返品済"
-#: InvenTree/status_codes.py:141 order/models.py:1114
+#: InvenTree/status_codes.py:141 order/models.py:1130
#: templates/js/translated/order.js:3264 templates/js/translated/order.js:3607
msgid "Shipped"
msgstr "発送済み"
@@ -525,7 +523,7 @@ msgstr "親アイテムから分割する"
msgid "Split child item"
msgstr "子項目を分割"
-#: InvenTree/status_codes.py:281 templates/js/translated/stock.js:2020
+#: InvenTree/status_codes.py:281 templates/js/translated/stock.js:2030
msgid "Merged stock items"
msgstr "商品在庫をマージしました"
@@ -597,27 +595,27 @@ msgstr ""
msgid "Invalid value for overage"
msgstr ""
-#: InvenTree/views.py:522
+#: InvenTree/views.py:521
msgid "Delete Item"
msgstr "項目を削除"
-#: InvenTree/views.py:571
+#: InvenTree/views.py:570
msgid "Check box to confirm item deletion"
msgstr ""
-#: InvenTree/views.py:586 templates/InvenTree/settings/user.html:22
+#: InvenTree/views.py:585 templates/InvenTree/settings/user.html:22
msgid "Edit User Information"
msgstr "ユーザー情報を編集"
-#: InvenTree/views.py:598 templates/InvenTree/settings/user.html:19
+#: InvenTree/views.py:597 templates/InvenTree/settings/user.html:19
msgid "Set Password"
msgstr "パスワードを設定"
-#: InvenTree/views.py:618
+#: InvenTree/views.py:617
msgid "Password fields must match"
msgstr ""
-#: InvenTree/views.py:842 templates/navbar.html:152
+#: InvenTree/views.py:807 templates/navbar.html:152
msgid "System Information"
msgstr "システム情報"
@@ -628,6 +626,7 @@ msgstr ""
#: build/models.py:131 build/templates/build/build_base.html:9
#: build/templates/build/build_base.html:27
#: report/templates/report/inventree_build_order_base.html:106
+#: templates/email/overdue_build_order.html:15
#: templates/js/translated/build.js:727
msgid "Build Order"
msgstr ""
@@ -646,12 +645,12 @@ msgstr ""
msgid "Build Order Reference"
msgstr ""
-#: build/models.py:189 order/models.py:288 order/models.py:638
-#: order/models.py:916 part/models.py:2570
+#: build/models.py:189 order/models.py:293 order/models.py:654
+#: order/models.py:932 part/models.py:2558
#: part/templates/part/upload_bom.html:54
#: report/templates/report/inventree_po_report.html:91
#: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:688 templates/js/translated/bom.js:858
+#: templates/js/translated/bom.js:690 templates/js/translated/bom.js:852
#: templates/js/translated/build.js:1777 templates/js/translated/order.js:1919
#: templates/js/translated/order.js:2120 templates/js/translated/order.js:3448
#: templates/js/translated/order.js:3959
@@ -673,13 +672,12 @@ msgstr ""
#: build/models.py:215 build/templates/build/build_base.html:77
#: build/templates/build/detail.html:29 company/models.py:647
-#: order/models.py:1012 order/models.py:1103 part/models.py:336
-#: part/models.py:2099 part/models.py:2114 part/models.py:2133
-#: part/models.py:2151 part/models.py:2250 part/models.py:2370
-#: part/models.py:2460 part/models.py:2545 part/models.py:2821
-#: part/serializers.py:793 part/templates/part/part_app_base.html:8
+#: order/models.py:1028 order/models.py:1119 part/models.py:336
+#: part/models.py:2087 part/models.py:2102 part/models.py:2121
+#: part/models.py:2139 part/models.py:2238 part/models.py:2358
+#: part/models.py:2448 part/models.py:2533 part/models.py:2809
+#: part/serializers.py:795 part/templates/part/part_app_base.html:8
#: part/templates/part/part_pricing.html:12
-#: part/templates/part/set_category.html:13
#: part/templates/part/upload_bom.html:52
#: report/templates/report/inventree_build_order_base.html:110
#: report/templates/report/inventree_po_report.html:89
@@ -687,22 +685,23 @@ msgstr ""
#: templates/InvenTree/search.html:80
#: templates/email/build_order_required_stock.html:17
#: templates/email/low_stock_notification.html:16
+#: templates/email/overdue_build_order.html:16
#: templates/js/translated/barcode.js:435 templates/js/translated/bom.js:552
-#: templates/js/translated/bom.js:687 templates/js/translated/bom.js:805
+#: templates/js/translated/bom.js:689 templates/js/translated/bom.js:799
#: templates/js/translated/build.js:1153 templates/js/translated/build.js:1647
#: templates/js/translated/build.js:2083 templates/js/translated/build.js:2481
-#: templates/js/translated/company.js:252
-#: templates/js/translated/company.js:486
-#: templates/js/translated/company.js:607
-#: templates/js/translated/company.js:866 templates/js/translated/order.js:100
+#: templates/js/translated/company.js:253
+#: templates/js/translated/company.js:482
+#: templates/js/translated/company.js:592
+#: templates/js/translated/company.js:851 templates/js/translated/order.js:100
#: templates/js/translated/order.js:883 templates/js/translated/order.js:1315
#: templates/js/translated/order.js:1873 templates/js/translated/order.js:2819
#: templates/js/translated/order.js:3217 templates/js/translated/order.js:3432
-#: templates/js/translated/part.js:1067 templates/js/translated/part.js:1137
-#: templates/js/translated/part.js:1333 templates/js/translated/stock.js:531
-#: templates/js/translated/stock.js:696 templates/js/translated/stock.js:903
-#: templates/js/translated/stock.js:1633 templates/js/translated/stock.js:2376
-#: templates/js/translated/stock.js:2571 templates/js/translated/stock.js:2705
+#: templates/js/translated/part.js:1111 templates/js/translated/part.js:1181
+#: templates/js/translated/part.js:1377 templates/js/translated/stock.js:530
+#: templates/js/translated/stock.js:695 templates/js/translated/stock.js:902
+#: templates/js/translated/stock.js:1643 templates/js/translated/stock.js:2386
+#: templates/js/translated/stock.js:2581 templates/js/translated/stock.js:2715
msgid "Part"
msgstr "パーツ"
@@ -768,12 +767,12 @@ msgstr ""
msgid "Batch code for this build output"
msgstr ""
-#: build/models.py:282 order/models.py:137 part/models.py:932
+#: build/models.py:282 order/models.py:138 part/models.py:932
#: part/templates/part/part_base.html:305 templates/js/translated/order.js:2489
msgid "Creation Date"
msgstr "作成日時"
-#: build/models.py:286 order/models.py:660
+#: build/models.py:286 order/models.py:676
msgid "Target completion date"
msgstr ""
@@ -781,7 +780,7 @@ msgstr ""
msgid "Target date for build completion. Build will be overdue after this date."
msgstr ""
-#: build/models.py:290 order/models.py:331
+#: build/models.py:290 order/models.py:336
#: templates/js/translated/build.js:2558
msgid "Completion Date"
msgstr ""
@@ -799,7 +798,7 @@ msgid "User who issued this build order"
msgstr ""
#: build/models.py:313 build/templates/build/build_base.html:190
-#: build/templates/build/detail.html:115 order/models.py:151
+#: build/templates/build/detail.html:115 order/models.py:152
#: order/templates/order/order_base.html:176
#: order/templates/order/sales_order_base.html:183 part/models.py:936
#: report/templates/report/inventree_build_order_base.html:159
@@ -822,20 +821,20 @@ msgstr ""
#: build/models.py:324 build/serializers.py:374
#: build/templates/build/sidebar.html:21 company/models.py:134
#: company/models.py:519 company/templates/company/sidebar.html:25
-#: order/models.py:155 order/models.py:918 order/models.py:1213
+#: order/models.py:156 order/models.py:934 order/models.py:1229
#: order/templates/order/po_sidebar.html:11
#: order/templates/order/so_sidebar.html:17 part/models.py:921
#: part/templates/part/part_sidebar.html:59
#: report/templates/report/inventree_build_order_base.html:173
-#: stock/models.py:713 stock/models.py:1985 stock/models.py:2093
+#: stock/models.py:713 stock/models.py:1989 stock/models.py:2097
#: stock/serializers.py:315 stock/serializers.py:444 stock/serializers.py:486
-#: stock/serializers.py:772 stock/serializers.py:871 stock/serializers.py:1003
+#: stock/serializers.py:759 stock/serializers.py:858 stock/serializers.py:990
#: stock/templates/stock/stock_sidebar.html:25
-#: templates/js/translated/barcode.js:100 templates/js/translated/bom.js:1044
-#: templates/js/translated/company.js:962 templates/js/translated/order.js:2040
+#: templates/js/translated/barcode.js:100 templates/js/translated/bom.js:1038
+#: templates/js/translated/company.js:947 templates/js/translated/order.js:2040
#: templates/js/translated/order.js:2191 templates/js/translated/order.js:2687
#: templates/js/translated/order.js:3632 templates/js/translated/order.js:4030
-#: templates/js/translated/stock.js:1307 templates/js/translated/stock.js:1916
+#: templates/js/translated/stock.js:1317 templates/js/translated/stock.js:1926
msgid "Notes"
msgstr "メモ"
@@ -855,44 +854,44 @@ msgstr ""
msgid "Build output does not match Build Order"
msgstr ""
-#: build/models.py:1108
+#: build/models.py:1111
msgid "Build item must specify a build output, as master part is marked as trackable"
msgstr ""
-#: build/models.py:1117
+#: build/models.py:1120
#, python-brace-format
msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})"
msgstr ""
-#: build/models.py:1127
+#: build/models.py:1130
msgid "Stock item is over-allocated"
msgstr ""
-#: build/models.py:1133 order/models.py:1372
+#: build/models.py:1136 order/models.py:1388
msgid "Allocation quantity must be greater than zero"
msgstr ""
-#: build/models.py:1139
+#: build/models.py:1142
msgid "Quantity must be 1 for serialized stock"
msgstr ""
-#: build/models.py:1196
+#: build/models.py:1199
msgid "Selected stock item not found in BOM"
msgstr ""
-#: build/models.py:1265 stock/templates/stock/item_base.html:177
+#: build/models.py:1268 stock/templates/stock/item_base.html:177
#: templates/InvenTree/search.html:137 templates/js/translated/build.js:2454
#: templates/navbar.html:38
msgid "Build"
msgstr ""
-#: build/models.py:1266
+#: build/models.py:1269
msgid "Build to allocate parts"
msgstr "パーツを割り当てるためにビルドする"
-#: build/models.py:1282 build/serializers.py:603 order/serializers.py:994
-#: order/serializers.py:1015 stock/serializers.py:382 stock/serializers.py:703
-#: stock/serializers.py:829 stock/templates/stock/item_base.html:10
+#: build/models.py:1285 build/serializers.py:603 order/serializers.py:996
+#: order/serializers.py:1017 stock/serializers.py:382 stock/serializers.py:690
+#: stock/serializers.py:816 stock/templates/stock/item_base.html:10
#: stock/templates/stock/item_base.html:23
#: stock/templates/stock/item_base.html:199
#: templates/js/translated/build.js:738 templates/js/translated/build.js:743
@@ -900,22 +899,22 @@ msgstr "パーツを割り当てるためにビルドする"
#: templates/js/translated/order.js:101 templates/js/translated/order.js:2820
#: templates/js/translated/order.js:3124 templates/js/translated/order.js:3129
#: templates/js/translated/order.js:3224 templates/js/translated/order.js:3314
-#: templates/js/translated/stock.js:532 templates/js/translated/stock.js:697
-#: templates/js/translated/stock.js:2449
+#: templates/js/translated/stock.js:531 templates/js/translated/stock.js:696
+#: templates/js/translated/stock.js:2459
msgid "Stock Item"
msgstr "在庫商品"
-#: build/models.py:1283
+#: build/models.py:1286
msgid "Source stock item"
msgstr ""
-#: build/models.py:1295 build/serializers.py:183
+#: build/models.py:1298 build/serializers.py:183
#: build/templates/build/build_base.html:82
-#: build/templates/build/detail.html:34 common/models.py:1536
+#: build/templates/build/detail.html:34 common/models.py:1543
#: company/forms.py:36 company/templates/company/supplier_part.html:258
-#: order/models.py:909 order/models.py:1412 order/serializers.py:1134
-#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:68
-#: part/forms.py:83 part/forms.py:98 part/models.py:2561
+#: order/models.py:925 order/models.py:1428 order/serializers.py:1136
+#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:59
+#: part/forms.py:74 part/forms.py:89 part/models.py:2549
#: part/templates/part/detail.html:935 part/templates/part/detail.html:1021
#: part/templates/part/part_pricing.html:16
#: part/templates/part/upload_bom.html:53
@@ -926,8 +925,8 @@ msgstr ""
#: report/templates/report/inventree_test_report_base.html:139
#: stock/serializers.py:279 stock/templates/stock/item_base.html:292
#: stock/templates/stock/item_base.html:300
-#: templates/js/translated/barcode.js:437 templates/js/translated/bom.js:689
-#: templates/js/translated/bom.js:866 templates/js/translated/build.js:422
+#: templates/js/translated/barcode.js:437 templates/js/translated/bom.js:691
+#: templates/js/translated/bom.js:860 templates/js/translated/build.js:422
#: templates/js/translated/build.js:574 templates/js/translated/build.js:765
#: templates/js/translated/build.js:1175 templates/js/translated/build.js:1673
#: templates/js/translated/build.js:2086
@@ -937,23 +936,23 @@ msgstr ""
#: templates/js/translated/order.js:2821 templates/js/translated/order.js:3143
#: templates/js/translated/order.js:3231 templates/js/translated/order.js:3320
#: templates/js/translated/order.js:3454 templates/js/translated/order.js:3965
-#: templates/js/translated/part.js:967 templates/js/translated/part.js:1969
-#: templates/js/translated/part.js:2200 templates/js/translated/part.js:2234
-#: templates/js/translated/part.js:2312 templates/js/translated/stock.js:403
-#: templates/js/translated/stock.js:557 templates/js/translated/stock.js:727
-#: templates/js/translated/stock.js:2498 templates/js/translated/stock.js:2583
+#: templates/js/translated/part.js:1011 templates/js/translated/part.js:2065
+#: templates/js/translated/part.js:2296 templates/js/translated/part.js:2330
+#: templates/js/translated/part.js:2408 templates/js/translated/stock.js:402
+#: templates/js/translated/stock.js:556 templates/js/translated/stock.js:726
+#: templates/js/translated/stock.js:2508 templates/js/translated/stock.js:2593
msgid "Quantity"
msgstr "数量"
-#: build/models.py:1296
+#: build/models.py:1299
msgid "Stock quantity to allocate to build"
msgstr ""
-#: build/models.py:1304
+#: build/models.py:1307
msgid "Install into"
msgstr ""
-#: build/models.py:1305
+#: build/models.py:1308
msgid "Destination stock item"
msgstr ""
@@ -982,9 +981,9 @@ msgstr ""
msgid "Enter quantity for build output"
msgstr ""
-#: build/serializers.py:198 build/serializers.py:623 order/models.py:363
-#: order/serializers.py:280 order/serializers.py:435 part/serializers.py:512
-#: part/serializers.py:956 stock/models.py:470 stock/models.py:1239
+#: build/serializers.py:198 build/serializers.py:623 order/models.py:368
+#: order/serializers.py:280 order/serializers.py:435 part/serializers.py:514
+#: part/serializers.py:958 stock/models.py:470 stock/models.py:1239
#: stock/serializers.py:288
msgid "Quantity must be greater than zero"
msgstr ""
@@ -997,9 +996,9 @@ msgstr ""
msgid "Integer quantity required, as the bill of materials contains trackable parts"
msgstr ""
-#: build/serializers.py:222 order/serializers.py:448 order/serializers.py:1138
+#: build/serializers.py:222 order/serializers.py:448 order/serializers.py:1140
#: stock/serializers.py:297 templates/js/translated/order.js:1186
-#: templates/js/translated/stock.js:238 templates/js/translated/stock.js:404
+#: templates/js/translated/stock.js:237 templates/js/translated/stock.js:403
msgid "Serial Numbers"
msgstr ""
@@ -1015,7 +1014,7 @@ msgstr ""
msgid "Automatically allocate required items with matching serial numbers"
msgstr ""
-#: build/serializers.py:268 stock/api.py:552
+#: build/serializers.py:268 stock/api.py:553
msgid "The following serial numbers already exist"
msgstr ""
@@ -1025,16 +1024,16 @@ msgstr ""
#: build/serializers.py:356 order/serializers.py:421 order/serializers.py:525
#: stock/serializers.py:308 stock/serializers.py:439 stock/serializers.py:481
-#: stock/serializers.py:864 stock/serializers.py:1097
+#: stock/serializers.py:851 stock/serializers.py:1084
#: stock/templates/stock/item_base.html:390
#: templates/js/translated/barcode.js:436
#: templates/js/translated/barcode.js:618 templates/js/translated/build.js:750
#: templates/js/translated/build.js:1685 templates/js/translated/order.js:1213
#: templates/js/translated/order.js:3136 templates/js/translated/order.js:3239
#: templates/js/translated/order.js:3247 templates/js/translated/order.js:3328
-#: templates/js/translated/part.js:180 templates/js/translated/stock.js:533
-#: templates/js/translated/stock.js:698 templates/js/translated/stock.js:905
-#: templates/js/translated/stock.js:1787 templates/js/translated/stock.js:2390
+#: templates/js/translated/part.js:180 templates/js/translated/stock.js:532
+#: templates/js/translated/stock.js:697 templates/js/translated/stock.js:904
+#: templates/js/translated/stock.js:1797 templates/js/translated/stock.js:2400
msgid "Location"
msgstr ""
@@ -1043,12 +1042,12 @@ msgid "Location for completed build outputs"
msgstr ""
#: build/serializers.py:363 build/templates/build/build_base.html:142
-#: build/templates/build/detail.html:62 order/models.py:654
+#: build/templates/build/detail.html:62 order/models.py:670
#: order/serializers.py:458 stock/templates/stock/item_base.html:423
#: templates/js/translated/barcode.js:182 templates/js/translated/build.js:2510
#: templates/js/translated/order.js:1320 templates/js/translated/order.js:1660
-#: templates/js/translated/order.js:2481 templates/js/translated/stock.js:1762
-#: templates/js/translated/stock.js:2467 templates/js/translated/stock.js:2599
+#: templates/js/translated/order.js:2481 templates/js/translated/stock.js:1772
+#: templates/js/translated/stock.js:2477 templates/js/translated/stock.js:2609
msgid "Status"
msgstr "ステータス"
@@ -1108,8 +1107,8 @@ msgstr ""
msgid "No build outputs have been created for this build order"
msgstr ""
-#: build/serializers.py:535 build/serializers.py:580 part/models.py:2679
-#: part/models.py:2813
+#: build/serializers.py:535 build/serializers.py:580 part/models.py:2667
+#: part/models.py:2801
msgid "BOM Item"
msgstr ""
@@ -1125,11 +1124,11 @@ msgstr ""
msgid "bom_item.part must point to the same part as the build order"
msgstr ""
-#: build/serializers.py:609 stock/serializers.py:716
+#: build/serializers.py:609 stock/serializers.py:703
msgid "Item must be in stock"
msgstr ""
-#: build/serializers.py:667 order/serializers.py:1052
+#: build/serializers.py:667 order/serializers.py:1054
#, python-brace-format
msgid "Available quantity ({q}) exceeded"
msgstr ""
@@ -1146,7 +1145,7 @@ msgstr ""
msgid "This stock item has already been allocated to this build output"
msgstr ""
-#: build/serializers.py:708 order/serializers.py:1298
+#: build/serializers.py:708 order/serializers.py:1300
msgid "Allocation items must be provided"
msgstr ""
@@ -1178,10 +1177,19 @@ msgstr ""
msgid "Allow allocation of substitute parts"
msgstr ""
-#: build/tasks.py:96
+#: build/tasks.py:100
msgid "Stock required for build order"
msgstr ""
+#: build/tasks.py:118
+msgid "Overdue Build Order"
+msgstr ""
+
+#: build/tasks.py:123
+#, python-brace-format
+msgid "Build order {bo} is now overdue"
+msgstr ""
+
#: build/templates/build/build_base.html:39
#: order/templates/order/order_base.html:28
#: order/templates/order/sales_order_base.html:38
@@ -1244,13 +1252,13 @@ msgid "Stock has not been fully allocated to this Build Order"
msgstr ""
#: build/templates/build/build_base.html:151
-#: build/templates/build/detail.html:131 order/models.py:922
+#: build/templates/build/detail.html:131 order/models.py:938
#: order/templates/order/order_base.html:162
#: order/templates/order/sales_order_base.html:164
#: report/templates/report/inventree_build_order_base.html:126
#: templates/js/translated/build.js:2550 templates/js/translated/order.js:1677
#: templates/js/translated/order.js:1987 templates/js/translated/order.js:2497
-#: templates/js/translated/order.js:3517 templates/js/translated/part.js:971
+#: templates/js/translated/order.js:3517 templates/js/translated/part.js:1015
msgid "Target Date"
msgstr ""
@@ -1277,13 +1285,14 @@ msgid "Completed"
msgstr ""
#: build/templates/build/build_base.html:176
-#: build/templates/build/detail.html:94 order/models.py:1100
-#: order/models.py:1185 order/models.py:1320
+#: build/templates/build/detail.html:94 order/models.py:1116
+#: order/models.py:1201 order/models.py:1336
#: order/templates/order/sales_order_base.html:9
#: order/templates/order/sales_order_base.html:28
#: report/templates/report/inventree_build_order_base.html:136
#: report/templates/report/inventree_so_report.html:77
#: stock/templates/stock/item_base.html:370
+#: templates/email/overdue_sales_order.html:15
#: templates/js/translated/order.js:2436
msgid "Sales Order"
msgstr ""
@@ -1319,7 +1328,7 @@ msgstr ""
msgid "Stock can be taken from any available location."
msgstr ""
-#: build/templates/build/detail.html:49 order/models.py:1034
+#: build/templates/build/detail.html:49 order/models.py:1050
#: templates/js/translated/order.js:1321 templates/js/translated/order.js:2029
msgid "Destination"
msgstr ""
@@ -1336,8 +1345,8 @@ msgstr ""
#: stock/templates/stock/item_base.html:170
#: templates/js/translated/build.js:1179
#: templates/js/translated/model_renderers.js:112
-#: templates/js/translated/stock.js:971 templates/js/translated/stock.js:1776
-#: templates/js/translated/stock.js:2606
+#: templates/js/translated/stock.js:970 templates/js/translated/stock.js:1786
+#: templates/js/translated/stock.js:2616
#: templates/js/translated/table_filters.js:151
#: templates/js/translated/table_filters.js:242
msgid "Batch"
@@ -1716,7 +1725,7 @@ msgstr ""
msgid "Copy category parameter templates when creating a part"
msgstr ""
-#: common/models.py:820 part/models.py:2372 report/models.py:157
+#: common/models.py:820 part/models.py:2360 report/models.py:157
#: templates/js/translated/table_filters.js:38
#: templates/js/translated/table_filters.js:444
msgid "Template"
@@ -1726,7 +1735,7 @@ msgstr "テンプレート"
msgid "Parts are templates by default"
msgstr "パーツはデフォルトのテンプレートです"
-#: common/models.py:827 part/models.py:884 templates/js/translated/bom.js:1390
+#: common/models.py:827 part/models.py:884 templates/js/translated/bom.js:1384
#: templates/js/translated/table_filters.js:168
#: templates/js/translated/table_filters.js:460
msgid "Assembly"
@@ -1880,7 +1889,7 @@ msgid "Default page size for PDF reports"
msgstr ""
#: common/models.py:968
-msgid "Test Reports"
+msgid "Enable Test Reports"
msgstr ""
#: common/models.py:969
@@ -1888,568 +1897,576 @@ msgid "Enable generation of test reports"
msgstr ""
#: common/models.py:975
-msgid "Batch Code Template"
+msgid "Attach Test Reports"
msgstr ""
#: common/models.py:976
-msgid "Template for generating default batch codes for stock items"
-msgstr ""
-
-#: common/models.py:981
-msgid "Stock Expiry"
+msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item"
msgstr ""
#: common/models.py:982
-msgid "Enable stock expiry functionality"
+msgid "Batch Code Template"
+msgstr ""
+
+#: common/models.py:983
+msgid "Template for generating default batch codes for stock items"
msgstr ""
#: common/models.py:988
-msgid "Sell Expired Stock"
+msgid "Stock Expiry"
msgstr ""
#: common/models.py:989
-msgid "Allow sale of expired stock"
+msgid "Enable stock expiry functionality"
msgstr ""
#: common/models.py:995
-msgid "Stock Stale Time"
+msgid "Sell Expired Stock"
msgstr ""
#: common/models.py:996
-msgid "Number of days stock items are considered stale before expiring"
+msgid "Allow sale of expired stock"
msgstr ""
-#: common/models.py:998
-msgid "days"
+#: common/models.py:1002
+msgid "Stock Stale Time"
msgstr ""
#: common/models.py:1003
-msgid "Build Expired Stock"
+msgid "Number of days stock items are considered stale before expiring"
msgstr ""
-#: common/models.py:1004
-msgid "Allow building with expired stock"
+#: common/models.py:1005
+msgid "days"
msgstr ""
#: common/models.py:1010
-msgid "Stock Ownership Control"
+msgid "Build Expired Stock"
msgstr ""
#: common/models.py:1011
-msgid "Enable ownership control over stock locations and items"
+msgid "Allow building with expired stock"
msgstr ""
#: common/models.py:1017
-msgid "Build Order Reference Prefix"
+msgid "Stock Ownership Control"
msgstr ""
#: common/models.py:1018
-msgid "Prefix value for build order reference"
-msgstr ""
-
-#: common/models.py:1023
-msgid "Build Order Reference Regex"
+msgid "Enable ownership control over stock locations and items"
msgstr ""
#: common/models.py:1024
+msgid "Build Order Reference Prefix"
+msgstr ""
+
+#: common/models.py:1025
+msgid "Prefix value for build order reference"
+msgstr ""
+
+#: common/models.py:1030
+msgid "Build Order Reference Regex"
+msgstr ""
+
+#: common/models.py:1031
msgid "Regular expression pattern for matching build order reference"
msgstr ""
-#: common/models.py:1028
+#: common/models.py:1035
msgid "Sales Order Reference Prefix"
msgstr ""
-#: common/models.py:1029
+#: common/models.py:1036
msgid "Prefix value for sales order reference"
msgstr ""
-#: common/models.py:1034
+#: common/models.py:1041
msgid "Sales Order Default Shipment"
msgstr ""
-#: common/models.py:1035
+#: common/models.py:1042
msgid "Enable creation of default shipment with sales orders"
msgstr ""
-#: common/models.py:1041
+#: common/models.py:1048
msgid "Purchase Order Reference Prefix"
msgstr ""
-#: common/models.py:1042
+#: common/models.py:1049
msgid "Prefix value for purchase order reference"
msgstr ""
-#: common/models.py:1048
+#: common/models.py:1055
msgid "Enable password forgot"
msgstr ""
-#: common/models.py:1049
+#: common/models.py:1056
msgid "Enable password forgot function on the login pages"
msgstr ""
-#: common/models.py:1055
+#: common/models.py:1062
msgid "Enable registration"
msgstr ""
-#: common/models.py:1056
+#: common/models.py:1063
msgid "Enable self-registration for users on the login pages"
msgstr ""
-#: common/models.py:1062
+#: common/models.py:1069
msgid "Enable SSO"
msgstr ""
-#: common/models.py:1063
+#: common/models.py:1070
msgid "Enable SSO on the login pages"
msgstr ""
-#: common/models.py:1069
+#: common/models.py:1076
msgid "Email required"
msgstr ""
-#: common/models.py:1070
+#: common/models.py:1077
msgid "Require user to supply mail on signup"
msgstr ""
-#: common/models.py:1076
+#: common/models.py:1083
msgid "Auto-fill SSO users"
msgstr ""
-#: common/models.py:1077
+#: common/models.py:1084
msgid "Automatically fill out user-details from SSO account-data"
msgstr ""
-#: common/models.py:1083
+#: common/models.py:1090
msgid "Mail twice"
msgstr ""
-#: common/models.py:1084
+#: common/models.py:1091
msgid "On signup ask users twice for their mail"
msgstr ""
-#: common/models.py:1090
+#: common/models.py:1097
msgid "Password twice"
msgstr ""
-#: common/models.py:1091
+#: common/models.py:1098
msgid "On signup ask users twice for their password"
msgstr ""
-#: common/models.py:1097
+#: common/models.py:1104
msgid "Group on signup"
msgstr ""
-#: common/models.py:1098
+#: common/models.py:1105
msgid "Group to which new users are assigned on registration"
msgstr ""
-#: common/models.py:1104
+#: common/models.py:1111
msgid "Enforce MFA"
msgstr ""
-#: common/models.py:1105
+#: common/models.py:1112
msgid "Users must use multifactor security."
msgstr ""
-#: common/models.py:1111
+#: common/models.py:1118
msgid "Check plugins on startup"
msgstr ""
-#: common/models.py:1112
+#: common/models.py:1119
msgid "Check that all plugins are installed on startup - enable in container enviroments"
msgstr ""
-#: common/models.py:1120
+#: common/models.py:1127
msgid "Enable URL integration"
msgstr ""
-#: common/models.py:1121
+#: common/models.py:1128
msgid "Enable plugins to add URL routes"
msgstr ""
-#: common/models.py:1128
+#: common/models.py:1135
msgid "Enable navigation integration"
msgstr ""
-#: common/models.py:1129
+#: common/models.py:1136
msgid "Enable plugins to integrate into navigation"
msgstr ""
-#: common/models.py:1136
+#: common/models.py:1143
msgid "Enable app integration"
msgstr ""
-#: common/models.py:1137
+#: common/models.py:1144
msgid "Enable plugins to add apps"
msgstr ""
-#: common/models.py:1144
+#: common/models.py:1151
msgid "Enable schedule integration"
msgstr ""
-#: common/models.py:1145
+#: common/models.py:1152
msgid "Enable plugins to run scheduled tasks"
msgstr ""
-#: common/models.py:1152
+#: common/models.py:1159
msgid "Enable event integration"
msgstr ""
-#: common/models.py:1153
+#: common/models.py:1160
msgid "Enable plugins to respond to internal events"
msgstr ""
-#: common/models.py:1170 common/models.py:1492
+#: common/models.py:1177 common/models.py:1499
msgid "Settings key (must be unique - case insensitive"
msgstr ""
-#: common/models.py:1192
+#: common/models.py:1199
msgid "Show subscribed parts"
msgstr ""
-#: common/models.py:1193
+#: common/models.py:1200
msgid "Show subscribed parts on the homepage"
msgstr ""
-#: common/models.py:1199
+#: common/models.py:1206
msgid "Show subscribed categories"
msgstr ""
-#: common/models.py:1200
+#: common/models.py:1207
msgid "Show subscribed part categories on the homepage"
msgstr ""
-#: common/models.py:1206
+#: common/models.py:1213
msgid "Show latest parts"
msgstr ""
-#: common/models.py:1207
+#: common/models.py:1214
msgid "Show latest parts on the homepage"
msgstr ""
-#: common/models.py:1213
+#: common/models.py:1220
msgid "Recent Part Count"
msgstr ""
-#: common/models.py:1214
+#: common/models.py:1221
msgid "Number of recent parts to display on index page"
msgstr ""
-#: common/models.py:1220
+#: common/models.py:1227
msgid "Show unvalidated BOMs"
msgstr ""
-#: common/models.py:1221
+#: common/models.py:1228
msgid "Show BOMs that await validation on the homepage"
msgstr ""
-#: common/models.py:1227
+#: common/models.py:1234
msgid "Show recent stock changes"
msgstr ""
-#: common/models.py:1228
+#: common/models.py:1235
msgid "Show recently changed stock items on the homepage"
msgstr ""
-#: common/models.py:1234
+#: common/models.py:1241
msgid "Recent Stock Count"
msgstr ""
-#: common/models.py:1235
+#: common/models.py:1242
msgid "Number of recent stock items to display on index page"
msgstr ""
-#: common/models.py:1241
+#: common/models.py:1248
msgid "Show low stock"
msgstr ""
-#: common/models.py:1242
+#: common/models.py:1249
msgid "Show low stock items on the homepage"
msgstr ""
-#: common/models.py:1248
+#: common/models.py:1255
msgid "Show depleted stock"
msgstr ""
-#: common/models.py:1249
+#: common/models.py:1256
msgid "Show depleted stock items on the homepage"
msgstr ""
-#: common/models.py:1255
+#: common/models.py:1262
msgid "Show needed stock"
msgstr ""
-#: common/models.py:1256
+#: common/models.py:1263
msgid "Show stock items needed for builds on the homepage"
msgstr ""
-#: common/models.py:1262
+#: common/models.py:1269
msgid "Show expired stock"
msgstr ""
-#: common/models.py:1263
+#: common/models.py:1270
msgid "Show expired stock items on the homepage"
msgstr ""
-#: common/models.py:1269
+#: common/models.py:1276
msgid "Show stale stock"
msgstr ""
-#: common/models.py:1270
+#: common/models.py:1277
msgid "Show stale stock items on the homepage"
msgstr ""
-#: common/models.py:1276
+#: common/models.py:1283
msgid "Show pending builds"
msgstr ""
-#: common/models.py:1277
+#: common/models.py:1284
msgid "Show pending builds on the homepage"
msgstr ""
-#: common/models.py:1283
+#: common/models.py:1290
msgid "Show overdue builds"
msgstr ""
-#: common/models.py:1284
+#: common/models.py:1291
msgid "Show overdue builds on the homepage"
msgstr ""
-#: common/models.py:1290
+#: common/models.py:1297
msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:1291
+#: common/models.py:1298
msgid "Show outstanding POs on the homepage"
msgstr ""
-#: common/models.py:1297
+#: common/models.py:1304
msgid "Show overdue POs"
msgstr ""
-#: common/models.py:1298
+#: common/models.py:1305
msgid "Show overdue POs on the homepage"
msgstr ""
-#: common/models.py:1304
+#: common/models.py:1311
msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:1305
+#: common/models.py:1312
msgid "Show outstanding SOs on the homepage"
msgstr ""
-#: common/models.py:1311
+#: common/models.py:1318
msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:1312
+#: common/models.py:1319
msgid "Show overdue SOs on the homepage"
msgstr ""
-#: common/models.py:1317
+#: common/models.py:1324
msgid "Enable label printing"
msgstr ""
-#: common/models.py:1318
+#: common/models.py:1325
msgid "Enable label printing from the web interface"
msgstr ""
-#: common/models.py:1324
+#: common/models.py:1331
msgid "Inline label display"
msgstr ""
-#: common/models.py:1325
+#: common/models.py:1332
msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:1331
+#: common/models.py:1338
msgid "Inline report display"
msgstr ""
-#: common/models.py:1332
+#: common/models.py:1339
msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:1338
+#: common/models.py:1345
msgid "Search Parts"
msgstr ""
-#: common/models.py:1339
+#: common/models.py:1346
msgid "Display parts in search preview window"
msgstr ""
-#: common/models.py:1345
+#: common/models.py:1352
msgid "Seach Supplier Parts"
msgstr ""
-#: common/models.py:1346
+#: common/models.py:1353
msgid "Display supplier parts in search preview window"
msgstr ""
-#: common/models.py:1352
+#: common/models.py:1359
msgid "Search Manufacturer Parts"
msgstr ""
-#: common/models.py:1353
+#: common/models.py:1360
msgid "Display manufacturer parts in search preview window"
msgstr ""
-#: common/models.py:1359
+#: common/models.py:1366
msgid "Hide Inactive Parts"
msgstr ""
-#: common/models.py:1360
+#: common/models.py:1367
msgid "Excluded inactive parts from search preview window"
msgstr ""
-#: common/models.py:1366
+#: common/models.py:1373
msgid "Search Categories"
msgstr ""
-#: common/models.py:1367
+#: common/models.py:1374
msgid "Display part categories in search preview window"
msgstr ""
-#: common/models.py:1373
+#: common/models.py:1380
msgid "Search Stock"
msgstr ""
-#: common/models.py:1374
+#: common/models.py:1381
msgid "Display stock items in search preview window"
msgstr ""
-#: common/models.py:1380
+#: common/models.py:1387
msgid "Hide Unavailable Stock Items"
msgstr ""
-#: common/models.py:1381
+#: common/models.py:1388
msgid "Exclude stock items which are not available from the search preview window"
msgstr ""
-#: common/models.py:1387
+#: common/models.py:1394
msgid "Search Locations"
msgstr ""
-#: common/models.py:1388
+#: common/models.py:1395
msgid "Display stock locations in search preview window"
msgstr ""
-#: common/models.py:1394
+#: common/models.py:1401
msgid "Search Companies"
msgstr ""
-#: common/models.py:1395
+#: common/models.py:1402
msgid "Display companies in search preview window"
msgstr ""
-#: common/models.py:1401
+#: common/models.py:1408
msgid "Search Purchase Orders"
msgstr ""
-#: common/models.py:1402
+#: common/models.py:1409
msgid "Display purchase orders in search preview window"
msgstr ""
-#: common/models.py:1408
+#: common/models.py:1415
msgid "Exclude Inactive Purchase Orders"
msgstr ""
-#: common/models.py:1409
+#: common/models.py:1416
msgid "Exclude inactive purchase orders from search preview window"
msgstr ""
-#: common/models.py:1415
+#: common/models.py:1422
msgid "Search Sales Orders"
msgstr ""
-#: common/models.py:1416
+#: common/models.py:1423
msgid "Display sales orders in search preview window"
msgstr ""
-#: common/models.py:1422
+#: common/models.py:1429
msgid "Exclude Inactive Sales Orders"
msgstr ""
-#: common/models.py:1423
+#: common/models.py:1430
msgid "Exclude inactive sales orders from search preview window"
msgstr ""
-#: common/models.py:1429
+#: common/models.py:1436
msgid "Search Preview Results"
msgstr ""
-#: common/models.py:1430
+#: common/models.py:1437
msgid "Number of results to show in each section of the search preview window"
msgstr ""
-#: common/models.py:1436
+#: common/models.py:1443
msgid "Show Quantity in Forms"
msgstr ""
-#: common/models.py:1437
+#: common/models.py:1444
msgid "Display available part quantity in some forms"
msgstr ""
-#: common/models.py:1443
+#: common/models.py:1450
msgid "Escape Key Closes Forms"
msgstr ""
-#: common/models.py:1444
+#: common/models.py:1451
msgid "Use the escape key to close modal forms"
msgstr ""
-#: common/models.py:1450
+#: common/models.py:1457
msgid "Fixed Navbar"
msgstr ""
-#: common/models.py:1451
+#: common/models.py:1458
msgid "The navbar position is fixed to the top of the screen"
msgstr ""
-#: common/models.py:1457
+#: common/models.py:1464
msgid "Date Format"
msgstr ""
-#: common/models.py:1458
+#: common/models.py:1465
msgid "Preferred format for displaying dates"
msgstr ""
-#: common/models.py:1472 part/templates/part/detail.html:39
+#: common/models.py:1479 part/templates/part/detail.html:39
msgid "Part Scheduling"
msgstr ""
-#: common/models.py:1473
+#: common/models.py:1480
msgid "Display part scheduling information"
msgstr ""
-#: common/models.py:1537 company/forms.py:37
+#: common/models.py:1544 company/forms.py:37
msgid "Price break quantity"
msgstr ""
-#: common/models.py:1544 company/serializers.py:288
-#: company/templates/company/supplier_part.html:263 order/models.py:949
-#: templates/js/translated/part.js:998 templates/js/translated/part.js:1974
+#: common/models.py:1551 company/serializers.py:290
+#: company/templates/company/supplier_part.html:263 order/models.py:965
+#: templates/js/translated/part.js:1042 templates/js/translated/part.js:2070
msgid "Price"
msgstr ""
-#: common/models.py:1545
+#: common/models.py:1552
msgid "Unit price at specified quantity"
msgstr ""
-#: common/models.py:1705 common/models.py:1883
+#: common/models.py:1712 common/models.py:1890
msgid "Endpoint"
msgstr ""
-#: common/models.py:1706
+#: common/models.py:1713
msgid "Endpoint at which this webhook is received"
msgstr ""
-#: common/models.py:1715
+#: common/models.py:1722
msgid "Name for this webhook"
msgstr ""
-#: common/models.py:1720 part/models.py:911 plugin/models.py:99
+#: common/models.py:1727 part/models.py:911 plugin/models.py:99
#: templates/js/translated/table_filters.js:34
#: templates/js/translated/table_filters.js:96
#: templates/js/translated/table_filters.js:308
@@ -2457,79 +2474,89 @@ msgstr ""
msgid "Active"
msgstr ""
-#: common/models.py:1721
+#: common/models.py:1728
msgid "Is this webhook active"
msgstr ""
-#: common/models.py:1735
+#: common/models.py:1742
msgid "Token"
msgstr ""
-#: common/models.py:1736
+#: common/models.py:1743
msgid "Token for access"
msgstr ""
-#: common/models.py:1743
+#: common/models.py:1750
msgid "Secret"
msgstr ""
-#: common/models.py:1744
+#: common/models.py:1751
msgid "Shared secret for HMAC"
msgstr ""
-#: common/models.py:1850
+#: common/models.py:1857
msgid "Message ID"
msgstr "メッセージ ID:"
-#: common/models.py:1851
+#: common/models.py:1858
msgid "Unique identifier for this message"
msgstr ""
-#: common/models.py:1859
+#: common/models.py:1866
msgid "Host"
msgstr ""
-#: common/models.py:1860
+#: common/models.py:1867
msgid "Host from which this message was received"
msgstr ""
-#: common/models.py:1867
+#: common/models.py:1874
msgid "Header"
msgstr ""
-#: common/models.py:1868
+#: common/models.py:1875
msgid "Header of this message"
msgstr ""
-#: common/models.py:1874
+#: common/models.py:1881
msgid "Body"
msgstr ""
-#: common/models.py:1875
+#: common/models.py:1882
msgid "Body of this message"
msgstr ""
-#: common/models.py:1884
+#: common/models.py:1891
msgid "Endpoint on which this message was received"
msgstr ""
-#: common/models.py:1889
+#: common/models.py:1896
msgid "Worked on"
msgstr ""
-#: common/models.py:1890
+#: common/models.py:1897
msgid "Was the work on this message finished?"
msgstr ""
+#: common/notifications.py:292
+#, python-brace-format
+msgid "New {verbose_name}"
+msgstr ""
+
+#: common/notifications.py:294
+#, python-brace-format
+msgid "A new {verbose_name} has been created and ,assigned to you"
+msgstr ""
+
#: common/views.py:87 order/templates/order/purchase_order_detail.html:23
-#: order/views.py:102 part/views.py:191
+#: order/views.py:102 part/views.py:116
#: templates/patterns/wizard/upload.html:37
msgid "Upload File"
msgstr ""
#: common/views.py:88 order/views.py:103
#: part/templates/part/import_wizard/ajax_match_fields.html:45
-#: part/views.py:192 templates/patterns/wizard/match_fields.html:51
+#: part/views.py:117 templates/patterns/wizard/match_fields.html:51
msgid "Match Fields"
msgstr ""
@@ -2545,19 +2572,19 @@ msgstr ""
msgid "Parts imported"
msgstr ""
-#: common/views.py:507 order/templates/order/order_wizard/match_parts.html:19
+#: common/views.py:511 order/templates/order/order_wizard/match_parts.html:19
#: part/templates/part/import_wizard/match_references.html:19
#: templates/patterns/wizard/match_fields.html:26
#: templates/patterns/wizard/upload.html:35
msgid "Previous Step"
msgstr ""
-#: company/forms.py:16 part/forms.py:21
+#: company/forms.py:16 part/forms.py:18
#: templates/InvenTree/settings/mixins/urls.html:14
msgid "URL"
msgstr ""
-#: company/forms.py:17 part/forms.py:22
+#: company/forms.py:17 part/forms.py:19
msgid "Image URL"
msgstr ""
@@ -2571,7 +2598,7 @@ msgstr ""
#: company/models.py:104 company/templates/company/company_base.html:100
#: templates/InvenTree/settings/plugin_settings.html:55
-#: templates/js/translated/company.js:405
+#: templates/js/translated/company.js:399
msgid "Website"
msgstr ""
@@ -2644,9 +2671,9 @@ msgstr ""
msgid "Does this company manufacture parts?"
msgstr ""
-#: company/models.py:144 company/serializers.py:294
-#: company/templates/company/company_base.html:106 part/serializers.py:137
-#: part/serializers.py:168 stock/serializers.py:162
+#: company/models.py:144 company/serializers.py:296
+#: company/templates/company/company_base.html:106 part/serializers.py:139
+#: part/serializers.py:170 stock/serializers.py:162
msgid "Currency"
msgstr ""
@@ -2667,10 +2694,10 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:90
#: company/templates/company/supplier_part.html:103
#: stock/templates/stock/item_base.html:212
-#: templates/js/translated/company.js:389
-#: templates/js/translated/company.js:488
-#: templates/js/translated/company.js:632
-#: templates/js/translated/company.js:917 templates/js/translated/part.js:235
+#: templates/js/translated/company.js:383
+#: templates/js/translated/company.js:484
+#: templates/js/translated/company.js:617
+#: templates/js/translated/company.js:902 templates/js/translated/part.js:235
#: templates/js/translated/table_filters.js:411
msgid "Manufacturer"
msgstr ""
@@ -2681,11 +2708,11 @@ msgstr ""
#: company/models.py:266 company/templates/company/manufacturer_part.html:101
#: company/templates/company/supplier_part.html:111
-#: templates/js/translated/company.js:255
-#: templates/js/translated/company.js:487
-#: templates/js/translated/company.js:648
-#: templates/js/translated/company.js:935 templates/js/translated/order.js:1907
-#: templates/js/translated/part.js:246 templates/js/translated/part.js:956
+#: templates/js/translated/company.js:256
+#: templates/js/translated/company.js:483
+#: templates/js/translated/company.js:633
+#: templates/js/translated/company.js:920 templates/js/translated/order.js:1907
+#: templates/js/translated/part.js:246 templates/js/translated/part.js:1000
msgid "MPN"
msgstr ""
@@ -2714,9 +2741,9 @@ msgstr ""
#: company/models.py:361
#: report/templates/report/inventree_test_report_base.html:95
-#: stock/models.py:2080 templates/js/translated/company.js:540
-#: templates/js/translated/company.js:763 templates/js/translated/part.js:776
-#: templates/js/translated/stock.js:1294
+#: stock/models.py:2084 templates/js/translated/company.js:531
+#: templates/js/translated/company.js:748 templates/js/translated/part.js:820
+#: templates/js/translated/stock.js:1304
msgid "Value"
msgstr ""
@@ -2724,10 +2751,10 @@ msgstr ""
msgid "Parameter value"
msgstr ""
-#: company/models.py:368 part/models.py:878 part/models.py:2339
+#: company/models.py:368 part/models.py:878 part/models.py:2327
#: part/templates/part/part_base.html:280
#: templates/InvenTree/settings/settings.html:351
-#: templates/js/translated/company.js:769 templates/js/translated/part.js:782
+#: templates/js/translated/company.js:754 templates/js/translated/part.js:826
msgid "Units"
msgstr ""
@@ -2740,13 +2767,14 @@ msgid "Linked manufacturer part must reference the same base part"
msgstr ""
#: company/models.py:487 company/templates/company/company_base.html:81
-#: company/templates/company/supplier_part.html:87 order/models.py:303
+#: company/templates/company/supplier_part.html:87 order/models.py:308
#: order/templates/order/order_base.html:112 part/bom.py:237 part/bom.py:265
#: stock/templates/stock/item_base.html:229
-#: templates/js/translated/company.js:254
-#: templates/js/translated/company.js:393
-#: templates/js/translated/company.js:891 templates/js/translated/order.js:1643
-#: templates/js/translated/part.js:216 templates/js/translated/part.js:924
+#: templates/email/overdue_purchase_order.html:16
+#: templates/js/translated/company.js:255
+#: templates/js/translated/company.js:387
+#: templates/js/translated/company.js:876 templates/js/translated/order.js:1643
+#: templates/js/translated/part.js:216 templates/js/translated/part.js:968
#: templates/js/translated/table_filters.js:415
msgid "Supplier"
msgstr ""
@@ -2756,9 +2784,9 @@ msgid "Select supplier"
msgstr ""
#: company/models.py:493 company/templates/company/supplier_part.html:97
-#: part/bom.py:238 part/bom.py:266 templates/js/translated/company.js:253
+#: part/bom.py:238 part/bom.py:266 templates/js/translated/company.js:254
#: templates/js/translated/order.js:1894 templates/js/translated/part.js:227
-#: templates/js/translated/part.js:942
+#: templates/js/translated/part.js:986
msgid "SKU"
msgstr ""
@@ -2779,23 +2807,23 @@ msgid "Supplier part description"
msgstr ""
#: company/models.py:518 company/templates/company/supplier_part.html:125
-#: part/models.py:2573 part/templates/part/upload_bom.html:59
+#: part/models.py:2561 part/templates/part/upload_bom.html:59
#: report/templates/report/inventree_po_report.html:92
#: report/templates/report/inventree_so_report.html:93 stock/serializers.py:387
msgid "Note"
msgstr ""
-#: company/models.py:522 part/models.py:1688
+#: company/models.py:522 part/models.py:1683
msgid "base cost"
msgstr ""
-#: company/models.py:522 part/models.py:1688
+#: company/models.py:522 part/models.py:1683
msgid "Minimum charge (e.g. stocking fee)"
msgstr ""
#: company/models.py:524 company/templates/company/supplier_part.html:118
#: stock/models.py:608 stock/templates/stock/item_base.html:245
-#: templates/js/translated/company.js:967 templates/js/translated/stock.js:1912
+#: templates/js/translated/company.js:952 templates/js/translated/stock.js:1922
msgid "Packaging"
msgstr ""
@@ -2803,7 +2831,7 @@ msgstr ""
msgid "Part packaging"
msgstr ""
-#: company/models.py:526 part/models.py:1690
+#: company/models.py:526 part/models.py:1685
msgid "multiple"
msgstr ""
@@ -2825,7 +2853,7 @@ msgstr ""
#: company/templates/company/company_base.html:8
#: company/templates/company/company_base.html:12
-#: templates/InvenTree/search.html:177 templates/js/translated/company.js:378
+#: templates/InvenTree/search.html:177 templates/js/translated/company.js:372
msgid "Company"
msgstr ""
@@ -2843,7 +2871,7 @@ msgid "Edit company information"
msgstr ""
#: company/templates/company/company_base.html:34
-#: templates/js/translated/company.js:321
+#: templates/js/translated/company.js:315
msgid "Edit Company"
msgstr ""
@@ -2866,12 +2894,13 @@ msgstr ""
msgid "Download image from URL"
msgstr ""
-#: company/templates/company/company_base.html:86 order/models.py:649
+#: company/templates/company/company_base.html:86 order/models.py:665
#: order/templates/order/sales_order_base.html:116 stock/models.py:627
-#: stock/models.py:628 stock/serializers.py:758
+#: stock/models.py:628 stock/serializers.py:745
#: stock/templates/stock/item_base.html:401
-#: templates/js/translated/company.js:385 templates/js/translated/order.js:2458
-#: templates/js/translated/stock.js:2431
+#: templates/email/overdue_sales_order.html:16
+#: templates/js/translated/company.js:379 templates/js/translated/order.js:2458
+#: templates/js/translated/stock.js:2441
#: templates/js/translated/table_filters.js:419
msgid "Customer"
msgstr ""
@@ -2999,7 +3028,7 @@ msgid "Supplier List"
msgstr ""
#: company/templates/company/manufacturer_part.html:15 company/views.py:45
-#: part/templates/part/prices.html:170 templates/InvenTree/search.html:179
+#: part/templates/part/prices.html:172 templates/InvenTree/search.html:179
#: templates/navbar.html:49
msgid "Manufacturers"
msgstr ""
@@ -3012,12 +3041,12 @@ msgid "Order part"
msgstr "パーツの注文"
#: company/templates/company/manufacturer_part.html:39
-#: templates/js/translated/company.js:680
+#: templates/js/translated/company.js:665
msgid "Edit manufacturer part"
msgstr "メーカー・パーツの編集"
#: company/templates/company/manufacturer_part.html:43
-#: templates/js/translated/company.js:681
+#: templates/js/translated/company.js:666
msgid "Delete manufacturer part"
msgstr "メーカー・パーツを削除"
@@ -3032,7 +3061,7 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:119
#: company/templates/company/supplier_part.html:15 company/views.py:39
-#: part/templates/part/part_sidebar.html:35 part/templates/part/prices.html:166
+#: part/templates/part/part_sidebar.html:35 part/templates/part/prices.html:168
#: templates/InvenTree/search.html:189 templates/navbar.html:48
msgid "Suppliers"
msgstr ""
@@ -3092,18 +3121,18 @@ msgstr ""
#: company/templates/company/supplier_part.html:7
#: company/templates/company/supplier_part.html:24 stock/models.py:592
#: stock/templates/stock/item_base.html:238
-#: templates/js/translated/company.js:907 templates/js/translated/order.js:884
-#: templates/js/translated/stock.js:1869
+#: templates/js/translated/company.js:892 templates/js/translated/order.js:884
+#: templates/js/translated/stock.js:1879
msgid "Supplier Part"
msgstr ""
#: company/templates/company/supplier_part.html:38
-#: templates/js/translated/company.js:980
+#: templates/js/translated/company.js:965
msgid "Edit supplier part"
msgstr ""
#: company/templates/company/supplier_part.html:42
-#: templates/js/translated/company.js:981
+#: templates/js/translated/company.js:966
msgid "Delete supplier part"
msgstr ""
@@ -3123,7 +3152,7 @@ msgstr ""
#: company/templates/company/supplier_part.html:148
#: part/templates/part/detail.html:24 stock/templates/stock/location.html:177
-#: templates/js/translated/stock.js:380
+#: templates/js/translated/stock.js:379
msgid "New Stock Item"
msgstr ""
@@ -3144,7 +3173,7 @@ msgstr ""
#: company/templates/company/supplier_part.html:191
#: company/templates/company/supplier_part.html:305
-#: part/templates/part/prices.html:274 templates/js/translated/part.js:2046
+#: part/templates/part/prices.html:276 templates/js/translated/part.js:2142
msgid "Add Price Break"
msgstr ""
@@ -3153,12 +3182,12 @@ msgid "No price break information found"
msgstr ""
#: company/templates/company/supplier_part.html:231
-#: templates/js/translated/part.js:2056
+#: templates/js/translated/part.js:2152
msgid "Delete Price Break"
msgstr ""
#: company/templates/company/supplier_part.html:245
-#: templates/js/translated/part.js:2070
+#: templates/js/translated/part.js:2166
msgid "Edit Price Break"
msgstr ""
@@ -3180,9 +3209,9 @@ msgstr ""
#: stock/templates/stock/stock_app_base.html:10
#: templates/InvenTree/search.html:151
#: templates/InvenTree/settings/sidebar.html:43
-#: templates/js/translated/bom.js:554 templates/js/translated/part.js:678
-#: templates/js/translated/part.js:1226 templates/js/translated/part.js:1387
-#: templates/js/translated/stock.js:904 templates/js/translated/stock.js:1687
+#: templates/js/translated/bom.js:554 templates/js/translated/part.js:722
+#: templates/js/translated/part.js:1270 templates/js/translated/part.js:1431
+#: templates/js/translated/stock.js:903 templates/js/translated/stock.js:1697
#: templates/navbar.html:31
msgid "Stock"
msgstr ""
@@ -3209,7 +3238,7 @@ msgstr ""
#: stock/templates/stock/location.html:173
#: stock/templates/stock/location_sidebar.html:7
#: templates/InvenTree/search.html:153 templates/js/translated/search.js:223
-#: templates/js/translated/stock.js:2307 users/models.py:39
+#: templates/js/translated/stock.js:2317 users/models.py:39
msgid "Stock Items"
msgstr ""
@@ -3238,20 +3267,20 @@ msgstr ""
msgid "New Company"
msgstr ""
-#: company/views.py:112 part/views.py:576
+#: company/views.py:112 part/views.py:501
msgid "Download Image"
msgstr ""
-#: company/views.py:139 part/views.py:606
+#: company/views.py:139 part/views.py:531
msgid "Image size exceeds maximum allowable size for download"
msgstr ""
-#: company/views.py:146 part/views.py:613
+#: company/views.py:146 part/views.py:538
#, python-brace-format
msgid "Invalid response: {code}"
msgstr ""
-#: company/views.py:155 part/views.py:622
+#: company/views.py:155 part/views.py:547
msgid "Supplied URL is not a valid image file"
msgstr ""
@@ -3320,313 +3349,314 @@ msgstr ""
msgid "Part query filters (comma-separated value of key=value pairs)"
msgstr ""
-#: order/models.py:133
+#: order/models.py:134
msgid "Order description"
msgstr ""
-#: order/models.py:135 order/models.py:1236
+#: order/models.py:136 order/models.py:1252
msgid "Link to external page"
msgstr ""
-#: order/models.py:143
+#: order/models.py:144
msgid "Created By"
msgstr ""
-#: order/models.py:150
+#: order/models.py:151
msgid "User or group responsible for this order"
msgstr ""
-#: order/models.py:155
+#: order/models.py:156
msgid "Order notes"
msgstr ""
-#: order/models.py:289 order/models.py:639
+#: order/models.py:294 order/models.py:655
msgid "Order reference"
msgstr ""
-#: order/models.py:294 order/models.py:654
+#: order/models.py:299 order/models.py:670
msgid "Purchase order status"
msgstr ""
-#: order/models.py:304
+#: order/models.py:309
msgid "Company from which the items are being ordered"
msgstr ""
-#: order/models.py:307 order/templates/order/order_base.html:124
+#: order/models.py:312 order/templates/order/order_base.html:124
#: templates/js/translated/order.js:1652
msgid "Supplier Reference"
msgstr ""
-#: order/models.py:307
+#: order/models.py:312
msgid "Supplier order reference code"
msgstr ""
-#: order/models.py:314
+#: order/models.py:319
msgid "received by"
msgstr ""
-#: order/models.py:319
+#: order/models.py:324
msgid "Issue Date"
msgstr ""
-#: order/models.py:320
+#: order/models.py:325
msgid "Date order was issued"
msgstr ""
-#: order/models.py:325
+#: order/models.py:330
msgid "Target Delivery Date"
msgstr ""
-#: order/models.py:326
+#: order/models.py:331
msgid "Expected date for order delivery. Order will be overdue after this date."
msgstr ""
-#: order/models.py:332
+#: order/models.py:337
msgid "Date order was completed"
msgstr ""
-#: order/models.py:368
+#: order/models.py:373
msgid "Part supplier must match PO supplier"
msgstr ""
-#: order/models.py:512
+#: order/models.py:517
msgid "Quantity must be a positive number"
msgstr ""
-#: order/models.py:650
+#: order/models.py:666
msgid "Company to which the items are being sold"
msgstr ""
-#: order/models.py:656
+#: order/models.py:672
msgid "Customer Reference "
msgstr ""
-#: order/models.py:656
+#: order/models.py:672
msgid "Customer order reference code"
msgstr ""
-#: order/models.py:661
+#: order/models.py:677
msgid "Target date for order completion. Order will be overdue after this date."
msgstr ""
-#: order/models.py:664 order/models.py:1190
+#: order/models.py:680 order/models.py:1206
#: templates/js/translated/order.js:2505 templates/js/translated/order.js:2656
msgid "Shipment Date"
msgstr ""
-#: order/models.py:671
+#: order/models.py:687
msgid "shipped by"
msgstr ""
-#: order/models.py:726
+#: order/models.py:742
msgid "Order cannot be completed as no parts have been assigned"
msgstr ""
-#: order/models.py:730
+#: order/models.py:746
msgid "Only a pending order can be marked as complete"
msgstr ""
-#: order/models.py:733
+#: order/models.py:749
msgid "Order cannot be completed as there are incomplete shipments"
msgstr ""
-#: order/models.py:736
+#: order/models.py:752
msgid "Order cannot be completed as there are incomplete line items"
msgstr ""
-#: order/models.py:910
+#: order/models.py:926
msgid "Item quantity"
msgstr ""
-#: order/models.py:916
+#: order/models.py:932
msgid "Line item reference"
msgstr ""
-#: order/models.py:918
+#: order/models.py:934
msgid "Line item notes"
msgstr ""
-#: order/models.py:923
+#: order/models.py:939
msgid "Target shipping date for this line item"
msgstr ""
-#: order/models.py:941
+#: order/models.py:957
msgid "Context"
msgstr ""
-#: order/models.py:942
+#: order/models.py:958
msgid "Additional context for this line"
msgstr ""
-#: order/models.py:950
+#: order/models.py:966
msgid "Unit price"
msgstr ""
-#: order/models.py:980
+#: order/models.py:996
msgid "Supplier part must match supplier"
msgstr ""
-#: order/models.py:988
+#: order/models.py:1004
msgid "deleted"
msgstr ""
-#: order/models.py:994 order/models.py:1074 order/models.py:1099
-#: order/models.py:1184 order/models.py:1320
+#: order/models.py:1010 order/models.py:1090 order/models.py:1115
+#: order/models.py:1200 order/models.py:1336
#: templates/js/translated/order.js:3112
msgid "Order"
msgstr ""
-#: order/models.py:995 order/models.py:1074
+#: order/models.py:1011 order/models.py:1090
#: order/templates/order/order_base.html:9
#: order/templates/order/order_base.html:18
#: report/templates/report/inventree_po_report.html:76
#: stock/templates/stock/item_base.html:184
+#: templates/email/overdue_purchase_order.html:15
#: templates/js/translated/order.js:885 templates/js/translated/order.js:1621
-#: templates/js/translated/part.js:899 templates/js/translated/stock.js:1846
-#: templates/js/translated/stock.js:2412
+#: templates/js/translated/part.js:943 templates/js/translated/stock.js:1856
+#: templates/js/translated/stock.js:2422
msgid "Purchase Order"
msgstr ""
-#: order/models.py:1013
+#: order/models.py:1029
msgid "Supplier part"
msgstr ""
-#: order/models.py:1020 order/templates/order/order_base.html:169
+#: order/models.py:1036 order/templates/order/order_base.html:169
#: templates/js/translated/order.js:1318 templates/js/translated/order.js:2009
-#: templates/js/translated/part.js:993 templates/js/translated/part.js:1020
+#: templates/js/translated/part.js:1037 templates/js/translated/part.js:1064
#: templates/js/translated/table_filters.js:330
msgid "Received"
msgstr ""
-#: order/models.py:1021
+#: order/models.py:1037
msgid "Number of items received"
msgstr ""
-#: order/models.py:1028 part/templates/part/prices.html:179 stock/models.py:722
+#: order/models.py:1044 part/templates/part/prices.html:181 stock/models.py:722
#: stock/serializers.py:153 stock/templates/stock/item_base.html:191
-#: templates/js/translated/stock.js:1900
+#: templates/js/translated/stock.js:1910
msgid "Purchase Price"
msgstr "購入金額"
-#: order/models.py:1029
+#: order/models.py:1045
msgid "Unit purchase price"
msgstr ""
-#: order/models.py:1037
+#: order/models.py:1053
msgid "Where does the Purchaser want this item to be stored?"
msgstr ""
-#: order/models.py:1109 part/templates/part/part_pricing.html:112
-#: part/templates/part/prices.html:119 part/templates/part/prices.html:288
+#: order/models.py:1125 part/templates/part/part_pricing.html:115
+#: part/templates/part/prices.html:121 part/templates/part/prices.html:290
msgid "Sale Price"
msgstr ""
-#: order/models.py:1110
+#: order/models.py:1126
msgid "Unit sale price"
msgstr ""
-#: order/models.py:1115
+#: order/models.py:1131
msgid "Shipped quantity"
msgstr ""
-#: order/models.py:1191
+#: order/models.py:1207
msgid "Date of shipment"
msgstr ""
-#: order/models.py:1198
+#: order/models.py:1214
msgid "Checked By"
msgstr ""
-#: order/models.py:1199
+#: order/models.py:1215
msgid "User who checked this shipment"
msgstr ""
-#: order/models.py:1207
+#: order/models.py:1223
msgid "Shipment number"
msgstr ""
-#: order/models.py:1214
+#: order/models.py:1230
msgid "Shipment notes"
msgstr ""
-#: order/models.py:1221
+#: order/models.py:1237
msgid "Tracking Number"
msgstr ""
-#: order/models.py:1222
+#: order/models.py:1238
msgid "Shipment tracking information"
msgstr ""
-#: order/models.py:1229
+#: order/models.py:1245
msgid "Invoice Number"
msgstr ""
-#: order/models.py:1230
+#: order/models.py:1246
msgid "Reference number for associated invoice"
msgstr ""
-#: order/models.py:1248
+#: order/models.py:1264
msgid "Shipment has already been sent"
msgstr ""
-#: order/models.py:1251
+#: order/models.py:1267
msgid "Shipment has no allocated stock items"
msgstr ""
-#: order/models.py:1354 order/models.py:1356
+#: order/models.py:1370 order/models.py:1372
msgid "Stock item has not been assigned"
msgstr ""
-#: order/models.py:1360
+#: order/models.py:1376
msgid "Cannot allocate stock item to a line with a different part"
msgstr ""
-#: order/models.py:1362
+#: order/models.py:1378
msgid "Cannot allocate stock to a line without a part"
msgstr ""
-#: order/models.py:1365
+#: order/models.py:1381
msgid "Allocation quantity cannot exceed stock quantity"
msgstr ""
-#: order/models.py:1369
+#: order/models.py:1385
msgid "StockItem is over-allocated"
msgstr ""
-#: order/models.py:1375 order/serializers.py:1045
+#: order/models.py:1391 order/serializers.py:1047
msgid "Quantity must be 1 for serialized stock item"
msgstr ""
-#: order/models.py:1378
+#: order/models.py:1394
msgid "Sales order does not match shipment"
msgstr ""
-#: order/models.py:1379
+#: order/models.py:1395
msgid "Shipment does not match sales order"
msgstr ""
-#: order/models.py:1387
+#: order/models.py:1403
msgid "Line"
msgstr ""
-#: order/models.py:1395 order/serializers.py:1149 order/serializers.py:1273
+#: order/models.py:1411 order/serializers.py:1151 order/serializers.py:1275
#: templates/js/translated/model_renderers.js:301
msgid "Shipment"
msgstr ""
-#: order/models.py:1396
+#: order/models.py:1412
msgid "Sales order shipment reference"
msgstr ""
-#: order/models.py:1408 templates/InvenTree/notifications/notifications.html:70
+#: order/models.py:1424 templates/InvenTree/notifications/notifications.html:70
msgid "Item"
msgstr ""
-#: order/models.py:1409
+#: order/models.py:1425
msgid "Select stock item to allocate"
msgstr ""
-#: order/models.py:1412
+#: order/models.py:1428
msgid "Enter stock allocation quantity"
msgstr ""
@@ -3662,7 +3692,7 @@ msgstr ""
msgid "Purchase order must match supplier"
msgstr ""
-#: order/serializers.py:406 order/serializers.py:1117
+#: order/serializers.py:406 order/serializers.py:1119
msgid "Line Item"
msgstr ""
@@ -3710,42 +3740,60 @@ msgstr ""
msgid "Supplied barcode values must be unique"
msgstr ""
-#: order/serializers.py:866
+#: order/serializers.py:868
msgid "Sale price currency"
msgstr ""
-#: order/serializers.py:947
+#: order/serializers.py:949
msgid "No shipment details provided"
msgstr ""
-#: order/serializers.py:1006 order/serializers.py:1126
+#: order/serializers.py:1008 order/serializers.py:1128
msgid "Line item is not associated with this order"
msgstr ""
-#: order/serializers.py:1028
+#: order/serializers.py:1030
msgid "Quantity must be positive"
msgstr ""
-#: order/serializers.py:1139
+#: order/serializers.py:1141
msgid "Enter serial numbers to allocate"
msgstr ""
-#: order/serializers.py:1161 order/serializers.py:1281
+#: order/serializers.py:1163 order/serializers.py:1283
msgid "Shipment has already been shipped"
msgstr ""
-#: order/serializers.py:1164 order/serializers.py:1284
+#: order/serializers.py:1166 order/serializers.py:1286
msgid "Shipment is not associated with this order"
msgstr ""
-#: order/serializers.py:1214
+#: order/serializers.py:1216
msgid "No match found for the following serial numbers"
msgstr ""
-#: order/serializers.py:1224
+#: order/serializers.py:1226
msgid "The following serial numbers are already allocated"
msgstr ""
+#: order/tasks.py:26
+msgid "Overdue Purchase Order"
+msgstr ""
+
+#: order/tasks.py:31
+#, python-brace-format
+msgid "Purchase order {po} is now overdue"
+msgstr ""
+
+#: order/tasks.py:88
+msgid "Overdue Sales Order"
+msgstr ""
+
+#: order/tasks.py:93
+#, python-brace-format
+msgid "Sales order {so} is now overdue"
+msgstr ""
+
#: order/templates/order/order_base.html:33
msgid "Print purchase order report"
msgstr ""
@@ -3870,8 +3918,8 @@ msgstr ""
#: templates/js/translated/bom.js:77 templates/js/translated/build.js:427
#: templates/js/translated/build.js:579 templates/js/translated/build.js:1972
#: templates/js/translated/order.js:833 templates/js/translated/order.js:1265
-#: templates/js/translated/order.js:2731 templates/js/translated/stock.js:570
-#: templates/js/translated/stock.js:738
+#: templates/js/translated/order.js:2731 templates/js/translated/stock.js:569
+#: templates/js/translated/stock.js:737
#: templates/patterns/wizard/match_fields.html:70
msgid "Remove row"
msgstr ""
@@ -3990,7 +4038,7 @@ msgid "Pending Shipments"
msgstr ""
#: order/templates/order/sales_order_detail.html:70
-#: templates/attachment_table.html:6 templates/js/translated/bom.js:1053
+#: templates/attachment_table.html:6 templates/js/translated/bom.js:1047
#: templates/js/translated/build.js:1880
msgid "Actions"
msgstr ""
@@ -4021,47 +4069,47 @@ msgstr ""
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr ""
-#: part/api.py:481
+#: part/api.py:482
msgid "Incoming Purchase Order"
msgstr ""
-#: part/api.py:501
+#: part/api.py:502
msgid "Outgoing Sales Order"
msgstr ""
-#: part/api.py:519
+#: part/api.py:520
msgid "Stock produced by Build Order"
msgstr ""
-#: part/api.py:551
+#: part/api.py:552
msgid "Stock required for Build Order"
msgstr ""
-#: part/api.py:637
+#: part/api.py:638
msgid "Valid"
msgstr ""
-#: part/api.py:638
+#: part/api.py:639
msgid "Validate entire Bill of Materials"
msgstr ""
-#: part/api.py:644
+#: part/api.py:645
msgid "This option must be selected"
msgstr ""
-#: part/api.py:1010
+#: part/api.py:1011
msgid "Must be greater than zero"
msgstr ""
-#: part/api.py:1014
+#: part/api.py:1015
msgid "Must be a valid quantity"
msgstr ""
-#: part/api.py:1029
+#: part/api.py:1030
msgid "Specify location for initial part stock"
msgstr ""
-#: part/api.py:1060 part/api.py:1064 part/api.py:1079 part/api.py:1083
+#: part/api.py:1061 part/api.py:1065 part/api.py:1080 part/api.py:1084
msgid "This field is required"
msgstr ""
@@ -4080,17 +4128,13 @@ msgid "Available Stock"
msgstr ""
#: part/bom.py:130 part/templates/part/part_base.html:207
-#: templates/js/translated/part.js:517 templates/js/translated/part.js:537
-#: templates/js/translated/part.js:1229 templates/js/translated/part.js:1401
-#: templates/js/translated/part.js:1417
+#: templates/js/translated/part.js:561 templates/js/translated/part.js:581
+#: templates/js/translated/part.js:1273 templates/js/translated/part.js:1445
+#: templates/js/translated/part.js:1461
msgid "On Order"
msgstr ""
-#: part/forms.py:59
-msgid "Select part category"
-msgstr ""
-
-#: part/forms.py:69
+#: part/forms.py:60
msgid "Input quantity for price calculation"
msgstr ""
@@ -4106,7 +4150,7 @@ msgstr ""
msgid "Default keywords for parts in this category"
msgstr ""
-#: part/models.py:115 part/models.py:2415 part/templates/part/category.html:15
+#: part/models.py:115 part/models.py:2403 part/templates/part/category.html:15
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr ""
@@ -4123,7 +4167,7 @@ msgstr ""
#: part/templates/part/category_sidebar.html:9
#: templates/InvenTree/index.html:85 templates/InvenTree/search.html:82
#: templates/InvenTree/settings/sidebar.html:39
-#: templates/js/translated/part.js:1768 templates/js/translated/search.js:144
+#: templates/js/translated/part.js:1864 templates/js/translated/search.js:144
#: templates/navbar.html:24 users/models.py:37
msgid "Parts"
msgstr "パーツ"
@@ -4153,7 +4197,7 @@ msgstr ""
msgid "Duplicate IPN not allowed in part settings"
msgstr ""
-#: part/models.py:738 part/models.py:2469
+#: part/models.py:738 part/models.py:2457
msgid "Part name"
msgstr ""
@@ -4186,12 +4230,11 @@ msgstr ""
msgid "Part keywords to improve visibility in search results"
msgstr ""
-#: part/models.py:776 part/models.py:2171 part/models.py:2414
+#: part/models.py:776 part/models.py:2159 part/models.py:2402
#: part/templates/part/part_base.html:257
-#: part/templates/part/set_category.html:15
#: templates/InvenTree/notifications/notifications.html:65
#: templates/InvenTree/settings/settings.html:231
-#: templates/js/translated/part.js:1369
+#: templates/js/translated/part.js:1413 templates/js/translated/part.js:1639
msgid "Category"
msgstr "カテゴリ"
@@ -4200,8 +4243,8 @@ msgid "Part category"
msgstr ""
#: part/models.py:782 part/templates/part/part_base.html:266
-#: templates/js/translated/part.js:666 templates/js/translated/part.js:1322
-#: templates/js/translated/stock.js:1659
+#: templates/js/translated/part.js:710 templates/js/translated/part.js:1366
+#: templates/js/translated/stock.js:1669
msgid "IPN"
msgstr ""
@@ -4214,7 +4257,7 @@ msgid "Part revision or version number"
msgstr ""
#: part/models.py:790 part/templates/part/part_base.html:273
-#: report/models.py:170 templates/js/translated/part.js:670
+#: report/models.py:170 templates/js/translated/part.js:714
msgid "Revision"
msgstr ""
@@ -4302,317 +4345,321 @@ msgstr ""
msgid "Creation User"
msgstr ""
-#: part/models.py:1690
+#: part/models.py:1685
msgid "Sell multiple"
msgstr ""
-#: part/models.py:2218
+#: part/models.py:2206
msgid "Test templates can only be created for trackable parts"
msgstr ""
-#: part/models.py:2235
+#: part/models.py:2223
msgid "Test with this name already exists for this part"
msgstr ""
-#: part/models.py:2255 templates/js/translated/part.js:1819
-#: templates/js/translated/stock.js:1274
+#: part/models.py:2243 templates/js/translated/part.js:1915
+#: templates/js/translated/stock.js:1284
msgid "Test Name"
msgstr ""
-#: part/models.py:2256
+#: part/models.py:2244
msgid "Enter a name for the test"
msgstr ""
-#: part/models.py:2261
+#: part/models.py:2249
msgid "Test Description"
msgstr ""
-#: part/models.py:2262
+#: part/models.py:2250
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:2267 templates/js/translated/part.js:1828
+#: part/models.py:2255 templates/js/translated/part.js:1924
#: templates/js/translated/table_filters.js:294
msgid "Required"
msgstr ""
-#: part/models.py:2268
+#: part/models.py:2256
msgid "Is this test required to pass?"
msgstr ""
-#: part/models.py:2273 templates/js/translated/part.js:1836
+#: part/models.py:2261 templates/js/translated/part.js:1932
msgid "Requires Value"
msgstr ""
-#: part/models.py:2274
+#: part/models.py:2262
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:2279 templates/js/translated/part.js:1843
+#: part/models.py:2267 templates/js/translated/part.js:1939
msgid "Requires Attachment"
msgstr ""
-#: part/models.py:2280
+#: part/models.py:2268
msgid "Does this test require a file attachment when adding a test result?"
msgstr ""
-#: part/models.py:2288
+#: part/models.py:2276
#, python-brace-format
msgid "Illegal character in template name ({c})"
msgstr ""
-#: part/models.py:2324
+#: part/models.py:2312
msgid "Parameter template name must be unique"
msgstr ""
-#: part/models.py:2332
+#: part/models.py:2320
msgid "Parameter Name"
msgstr ""
-#: part/models.py:2339
+#: part/models.py:2327
msgid "Parameter Units"
msgstr ""
-#: part/models.py:2370
+#: part/models.py:2358
msgid "Parent Part"
msgstr ""
-#: part/models.py:2372 part/models.py:2420 part/models.py:2421
+#: part/models.py:2360 part/models.py:2408 part/models.py:2409
#: templates/InvenTree/settings/settings.html:226
msgid "Parameter Template"
msgstr ""
-#: part/models.py:2374
+#: part/models.py:2362
msgid "Data"
msgstr ""
-#: part/models.py:2374
+#: part/models.py:2362
msgid "Parameter Value"
msgstr ""
-#: part/models.py:2425 templates/InvenTree/settings/settings.html:235
+#: part/models.py:2413 templates/InvenTree/settings/settings.html:235
msgid "Default Value"
msgstr ""
-#: part/models.py:2426
+#: part/models.py:2414
msgid "Default Parameter Value"
msgstr ""
-#: part/models.py:2461
+#: part/models.py:2449
msgid "Part ID or part name"
msgstr ""
-#: part/models.py:2464 templates/js/translated/model_renderers.js:200
+#: part/models.py:2452 templates/js/translated/model_renderers.js:200
msgid "Part ID"
msgstr ""
-#: part/models.py:2465
+#: part/models.py:2453
msgid "Unique part ID value"
msgstr ""
-#: part/models.py:2468
+#: part/models.py:2456
msgid "Part Name"
msgstr ""
-#: part/models.py:2472
+#: part/models.py:2460
msgid "Part IPN"
msgstr ""
-#: part/models.py:2473
+#: part/models.py:2461
msgid "Part IPN value"
msgstr ""
-#: part/models.py:2476
+#: part/models.py:2464
msgid "Level"
msgstr ""
-#: part/models.py:2477
+#: part/models.py:2465
msgid "BOM level"
msgstr ""
-#: part/models.py:2546
+#: part/models.py:2534
msgid "Select parent part"
msgstr ""
-#: part/models.py:2554
+#: part/models.py:2542
msgid "Sub part"
msgstr ""
-#: part/models.py:2555
+#: part/models.py:2543
msgid "Select part to be used in BOM"
msgstr ""
-#: part/models.py:2561
+#: part/models.py:2549
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:2563 part/templates/part/upload_bom.html:58
-#: templates/js/translated/bom.js:877 templates/js/translated/bom.js:971
+#: part/models.py:2551 part/templates/part/upload_bom.html:58
+#: templates/js/translated/bom.js:871 templates/js/translated/bom.js:965
#: templates/js/translated/table_filters.js:92
msgid "Optional"
msgstr ""
-#: part/models.py:2563
+#: part/models.py:2551
msgid "This BOM item is optional"
msgstr ""
-#: part/models.py:2566 part/templates/part/upload_bom.html:55
+#: part/models.py:2554 part/templates/part/upload_bom.html:55
msgid "Overage"
msgstr ""
-#: part/models.py:2567
+#: part/models.py:2555
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr ""
-#: part/models.py:2570
+#: part/models.py:2558
msgid "BOM item reference"
msgstr ""
-#: part/models.py:2573
+#: part/models.py:2561
msgid "BOM item notes"
msgstr ""
-#: part/models.py:2575
+#: part/models.py:2563
msgid "Checksum"
msgstr ""
-#: part/models.py:2575
+#: part/models.py:2563
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:2579 part/templates/part/upload_bom.html:57
-#: templates/js/translated/bom.js:988
+#: part/models.py:2567 part/templates/part/upload_bom.html:57
+#: templates/js/translated/bom.js:982
#: templates/js/translated/table_filters.js:68
#: templates/js/translated/table_filters.js:88
msgid "Inherited"
msgstr ""
-#: part/models.py:2580
+#: part/models.py:2568
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr ""
-#: part/models.py:2585 part/templates/part/upload_bom.html:56
-#: templates/js/translated/bom.js:980
+#: part/models.py:2573 part/templates/part/upload_bom.html:56
+#: templates/js/translated/bom.js:974
msgid "Allow Variants"
msgstr ""
-#: part/models.py:2586
+#: part/models.py:2574
msgid "Stock items for variant parts can be used for this BOM item"
msgstr ""
-#: part/models.py:2664 stock/models.py:460
+#: part/models.py:2652 stock/models.py:460
msgid "Quantity must be integer value for trackable parts"
msgstr ""
-#: part/models.py:2673 part/models.py:2675
+#: part/models.py:2661 part/models.py:2663
msgid "Sub part must be specified"
msgstr ""
-#: part/models.py:2780
+#: part/models.py:2768
msgid "BOM Item Substitute"
msgstr ""
-#: part/models.py:2801
+#: part/models.py:2789
msgid "Substitute part cannot be the same as the master part"
msgstr ""
-#: part/models.py:2814
+#: part/models.py:2802
msgid "Parent BOM item"
msgstr ""
-#: part/models.py:2822
+#: part/models.py:2810
msgid "Substitute part"
msgstr ""
-#: part/models.py:2833
+#: part/models.py:2825
msgid "Part 1"
msgstr ""
-#: part/models.py:2837
+#: part/models.py:2829
msgid "Part 2"
msgstr ""
-#: part/models.py:2837
+#: part/models.py:2829
msgid "Select Related Part"
msgstr ""
-#: part/models.py:2868
-msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique"
+#: part/models.py:2847
+msgid "Part relationship cannot be created between a part and itself"
msgstr ""
-#: part/serializers.py:138 part/serializers.py:169 stock/serializers.py:163
+#: part/models.py:2851
+msgid "Duplicate relationship already exists"
+msgstr ""
+
+#: part/serializers.py:140 part/serializers.py:171 stock/serializers.py:163
msgid "Purchase currency of this stock item"
msgstr ""
-#: part/serializers.py:794
+#: part/serializers.py:796
msgid "Select part to copy BOM from"
msgstr ""
-#: part/serializers.py:802
+#: part/serializers.py:804
msgid "Remove Existing Data"
msgstr ""
-#: part/serializers.py:803
+#: part/serializers.py:805
msgid "Remove existing BOM items before copying"
msgstr ""
-#: part/serializers.py:808
+#: part/serializers.py:810
msgid "Include Inherited"
msgstr ""
-#: part/serializers.py:809
+#: part/serializers.py:811
msgid "Include BOM items which are inherited from templated parts"
msgstr ""
-#: part/serializers.py:814
+#: part/serializers.py:816
msgid "Skip Invalid Rows"
msgstr ""
-#: part/serializers.py:815
+#: part/serializers.py:817
msgid "Enable this option to skip invalid rows"
msgstr ""
-#: part/serializers.py:820
+#: part/serializers.py:822
msgid "Copy Substitute Parts"
msgstr ""
-#: part/serializers.py:821
+#: part/serializers.py:823
msgid "Copy substitute parts when duplicate BOM items"
msgstr ""
-#: part/serializers.py:861
+#: part/serializers.py:863
msgid "Clear Existing BOM"
msgstr ""
-#: part/serializers.py:862
+#: part/serializers.py:864
msgid "Delete existing BOM items before uploading"
msgstr ""
-#: part/serializers.py:892
+#: part/serializers.py:894
msgid "No part column specified"
msgstr ""
-#: part/serializers.py:935
+#: part/serializers.py:937
msgid "Multiple matching parts found"
msgstr ""
-#: part/serializers.py:938
+#: part/serializers.py:940
msgid "No matching part found"
msgstr ""
-#: part/serializers.py:941
+#: part/serializers.py:943
msgid "Part is not designated as a component"
msgstr ""
-#: part/serializers.py:950
+#: part/serializers.py:952
msgid "Quantity not provided"
msgstr ""
-#: part/serializers.py:958
+#: part/serializers.py:960
msgid "Invalid quantity"
msgstr ""
-#: part/serializers.py:979
+#: part/serializers.py:981
msgid "At least one BOM item is required"
msgstr ""
@@ -5088,10 +5135,10 @@ msgid "Part is virtual (not a physical part)"
msgstr ""
#: part/templates/part/part_base.html:143
-#: templates/js/translated/company.js:623
-#: templates/js/translated/company.js:882
+#: templates/js/translated/company.js:608
+#: templates/js/translated/company.js:867
#: templates/js/translated/model_renderers.js:192
-#: templates/js/translated/part.js:581 templates/js/translated/part.js:658
+#: templates/js/translated/part.js:625 templates/js/translated/part.js:702
msgid "Inactive"
msgstr ""
@@ -5120,13 +5167,13 @@ msgstr ""
msgid "Allocated to Sales Orders"
msgstr ""
-#: part/templates/part/part_base.html:232 templates/js/translated/bom.js:1009
+#: part/templates/part/part_base.html:232 templates/js/translated/bom.js:1003
msgid "Can Build"
msgstr ""
-#: part/templates/part/part_base.html:238 templates/js/translated/part.js:520
-#: templates/js/translated/part.js:540 templates/js/translated/part.js:1233
-#: templates/js/translated/part.js:1405 templates/js/translated/part.js:1421
+#: part/templates/part/part_base.html:238 templates/js/translated/part.js:564
+#: templates/js/translated/part.js:584 templates/js/translated/part.js:1277
+#: templates/js/translated/part.js:1449 templates/js/translated/part.js:1465
msgid "Building"
msgstr ""
@@ -5143,7 +5190,7 @@ msgstr ""
msgid "Search for serial number"
msgstr ""
-#: part/templates/part/part_base.html:443 part/templates/part/prices.html:147
+#: part/templates/part/part_base.html:443 part/templates/part/prices.html:149
msgid "Calculate"
msgstr ""
@@ -5161,54 +5208,55 @@ msgstr ""
#: part/templates/part/part_pricing.html:26
#: part/templates/part/part_pricing.html:52
-#: part/templates/part/part_pricing.html:100
-#: part/templates/part/part_pricing.html:115 part/templates/part/prices.html:28
-#: part/templates/part/prices.html:55 part/templates/part/prices.html:106
-#: part/templates/part/prices.html:123
+#: part/templates/part/part_pricing.html:103
+#: part/templates/part/part_pricing.html:118 part/templates/part/prices.html:28
+#: part/templates/part/prices.html:55 part/templates/part/prices.html:108
+#: part/templates/part/prices.html:125
msgid "Unit Cost"
msgstr ""
#: part/templates/part/part_pricing.html:32
#: part/templates/part/part_pricing.html:58
-#: part/templates/part/part_pricing.html:104
-#: part/templates/part/part_pricing.html:119 part/templates/part/prices.html:35
-#: part/templates/part/prices.html:62 part/templates/part/prices.html:111
-#: part/templates/part/prices.html:128
+#: part/templates/part/part_pricing.html:107
+#: part/templates/part/part_pricing.html:122 part/templates/part/prices.html:35
+#: part/templates/part/prices.html:62 part/templates/part/prices.html:113
+#: part/templates/part/prices.html:130
msgid "Total Cost"
msgstr ""
#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:43
-#: templates/js/translated/bom.js:963
+#: templates/js/translated/bom.js:957
msgid "No supplier pricing available"
msgstr ""
#: part/templates/part/part_pricing.html:48 part/templates/part/prices.html:52
-#: part/templates/part/prices.html:246
+#: part/templates/part/prices.html:248
msgid "BOM Pricing"
msgstr ""
-#: part/templates/part/part_pricing.html:65 part/templates/part/prices.html:72
+#: part/templates/part/part_pricing.html:66 part/templates/part/prices.html:72
msgid "Unit Purchase Price"
msgstr ""
-#: part/templates/part/part_pricing.html:71 part/templates/part/prices.html:79
+#: part/templates/part/part_pricing.html:72 part/templates/part/prices.html:79
msgid "Total Purchase Price"
msgstr ""
-#: part/templates/part/part_pricing.html:81 part/templates/part/prices.html:89
+#: part/templates/part/part_pricing.html:82 part/templates/part/prices.html:89
msgid "Note: BOM pricing is incomplete for this part"
msgstr ""
-#: part/templates/part/part_pricing.html:88 part/templates/part/prices.html:96
+#: part/templates/part/part_pricing.html:91 part/templates/part/prices.html:98
msgid "No BOM pricing available"
msgstr ""
-#: part/templates/part/part_pricing.html:97 part/templates/part/prices.html:105
+#: part/templates/part/part_pricing.html:100
+#: part/templates/part/prices.html:107
msgid "Internal Price"
msgstr ""
-#: part/templates/part/part_pricing.html:128
-#: part/templates/part/prices.html:137
+#: part/templates/part/part_pricing.html:131
+#: part/templates/part/prices.html:139
msgid "No pricing information is available for this part."
msgstr ""
@@ -5232,43 +5280,6 @@ msgstr ""
msgid "Select from existing images"
msgstr ""
-#: part/templates/part/partial_delete.html:9
-#, python-format
-msgid "Part '%(full_name)s' cannot be deleted as it is still marked as active.\n"
-"
Disable the \"Active\" part attribute and re-try.\n"
-" "
-msgstr ""
-
-#: part/templates/part/partial_delete.html:17
-#, python-format
-msgid "Are you sure you want to delete part '%(full_name)s'?"
-msgstr ""
-
-#: part/templates/part/partial_delete.html:22
-#, python-format
-msgid "This part is used in BOMs for %(count)s other parts. If you delete this part, the BOMs for the following parts will be updated"
-msgstr ""
-
-#: part/templates/part/partial_delete.html:32
-#, python-format
-msgid "There are %(count)s stock entries defined for this part. If you delete this part, the following stock entries will also be deleted:"
-msgstr ""
-
-#: part/templates/part/partial_delete.html:43
-#, python-format
-msgid "There are %(count)s manufacturers defined for this part. If you delete this part, the following manufacturer parts will also be deleted:"
-msgstr ""
-
-#: part/templates/part/partial_delete.html:54
-#, python-format
-msgid "There are %(count)s suppliers defined for this part. If you delete this part, the following supplier parts will also be deleted:"
-msgstr ""
-
-#: part/templates/part/partial_delete.html:67
-#, python-format
-msgid "There are %(count)s unique parts tracked for '%(full_name)s'. Deleting this part will permanently remove this tracking information."
-msgstr ""
-
#: part/templates/part/prices.html:19
msgid "Pricing ranges"
msgstr ""
@@ -5285,66 +5296,58 @@ msgstr ""
msgid "Show BOM cost"
msgstr ""
-#: part/templates/part/prices.html:120
+#: part/templates/part/prices.html:122
msgid "Show sale cost"
msgstr ""
-#: part/templates/part/prices.html:121
+#: part/templates/part/prices.html:123
msgid "Show sale price"
msgstr ""
-#: part/templates/part/prices.html:143
+#: part/templates/part/prices.html:145
msgid "Calculation parameters"
msgstr ""
-#: part/templates/part/prices.html:158 templates/js/translated/bom.js:957
+#: part/templates/part/prices.html:160 templates/js/translated/bom.js:951
msgid "Supplier Cost"
msgstr ""
-#: part/templates/part/prices.html:159 part/templates/part/prices.html:180
-#: part/templates/part/prices.html:204 part/templates/part/prices.html:234
-#: part/templates/part/prices.html:260 part/templates/part/prices.html:289
+#: part/templates/part/prices.html:161 part/templates/part/prices.html:182
+#: part/templates/part/prices.html:206 part/templates/part/prices.html:236
+#: part/templates/part/prices.html:262 part/templates/part/prices.html:291
msgid "Jump to overview"
msgstr ""
-#: part/templates/part/prices.html:184
+#: part/templates/part/prices.html:186
msgid "Stock Pricing"
msgstr ""
-#: part/templates/part/prices.html:193
+#: part/templates/part/prices.html:195
msgid "No stock pricing history is available for this part."
msgstr ""
-#: part/templates/part/prices.html:203
+#: part/templates/part/prices.html:205
msgid "Internal Cost"
msgstr ""
-#: part/templates/part/prices.html:218
+#: part/templates/part/prices.html:220
msgid "Add Internal Price Break"
msgstr ""
-#: part/templates/part/prices.html:233
+#: part/templates/part/prices.html:235
msgid "BOM Cost"
msgstr ""
-#: part/templates/part/prices.html:259
+#: part/templates/part/prices.html:261
msgid "Sale Cost"
msgstr ""
-#: part/templates/part/prices.html:300
+#: part/templates/part/prices.html:302
msgid "No sale pice history available for this part."
msgstr ""
-#: part/templates/part/set_category.html:9
-msgid "Set category for the following parts"
-msgstr ""
-
-#: part/templates/part/set_category.html:32
-msgid "Remove part"
-msgstr ""
-
-#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:543
-#: templates/js/translated/part.js:1221 templates/js/translated/part.js:1425
+#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:587
+#: templates/js/translated/part.js:1265 templates/js/translated/part.js:1469
msgid "No Stock"
msgstr "在庫切れ"
@@ -5407,56 +5410,39 @@ msgstr ""
msgid "{title} v{version}"
msgstr ""
-#: part/views.py:74
-msgid "Set Part Category"
-msgstr ""
-
-#: part/views.py:122
-#, python-brace-format
-msgid "Set category for {n} parts"
-msgstr ""
-
-#: part/views.py:193
+#: part/views.py:118
msgid "Match References"
msgstr ""
-#: part/views.py:494
+#: part/views.py:419
msgid "None"
msgstr ""
-#: part/views.py:556
+#: part/views.py:481
msgid "Part QR Code"
msgstr ""
-#: part/views.py:650
+#: part/views.py:575
msgid "Select Part Image"
msgstr ""
-#: part/views.py:676
+#: part/views.py:601
msgid "Updated part image"
msgstr ""
-#: part/views.py:679
+#: part/views.py:604
msgid "Part image not found"
msgstr ""
-#: part/views.py:768
-msgid "Confirm Part Deletion"
-msgstr ""
-
-#: part/views.py:776
-msgid "Part was deleted"
-msgstr ""
-
-#: part/views.py:785
+#: part/views.py:693
msgid "Part Pricing"
msgstr ""
-#: part/views.py:976
+#: part/views.py:884
msgid "Delete Part Category"
msgstr ""
-#: part/views.py:983
+#: part/views.py:891
msgid "Part category was deleted"
msgstr ""
@@ -5516,21 +5502,21 @@ msgstr ""
msgid "Label printing failed"
msgstr ""
-#: plugin/builtin/integration/core_notifications.py:28
+#: plugin/builtin/integration/core_notifications.py:29
msgid "InvenTree contributors"
msgstr ""
-#: plugin/builtin/integration/core_notifications.py:29
+#: plugin/builtin/integration/core_notifications.py:30
msgid "Integrated outgoing notificaton methods"
msgstr ""
-#: plugin/builtin/integration/core_notifications.py:33
-#: plugin/builtin/integration/core_notifications.py:52
-msgid "Enable email notifications"
-msgstr ""
-
#: plugin/builtin/integration/core_notifications.py:34
#: plugin/builtin/integration/core_notifications.py:53
+msgid "Enable email notifications"
+msgstr ""
+
+#: plugin/builtin/integration/core_notifications.py:35
+#: plugin/builtin/integration/core_notifications.py:54
msgid "Allow sending of emails for event notifications"
msgstr ""
@@ -5646,15 +5632,19 @@ msgstr ""
msgid "Either packagename of URL must be provided"
msgstr ""
-#: report/api.py:166
+#: report/api.py:179
msgid "No valid objects provided to template"
msgstr ""
-#: report/api.py:198 report/api.py:239
+#: report/api.py:215 report/api.py:256
#, python-brace-format
msgid "Template file '{template}' is missing or does not exist"
msgstr ""
+#: report/api.py:359
+msgid "Test report"
+msgstr ""
+
#: report/models.py:152
msgid "Template name"
msgstr ""
@@ -5757,7 +5747,7 @@ msgstr ""
#: templates/js/translated/build.js:1173 templates/js/translated/build.js:1671
#: templates/js/translated/model_renderers.js:106
#: templates/js/translated/order.js:115 templates/js/translated/order.js:3229
-#: templates/js/translated/order.js:3318 templates/js/translated/stock.js:435
+#: templates/js/translated/order.js:3318 templates/js/translated/stock.js:434
msgid "Serial Number"
msgstr ""
@@ -5766,19 +5756,19 @@ msgid "Test Results"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:93
-#: stock/models.py:2068
+#: stock/models.py:2072
msgid "Test"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:94
-#: stock/models.py:2074
+#: stock/models.py:2078
msgid "Result"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:97
#: templates/InvenTree/settings/plugin.html:51
#: templates/InvenTree/settings/plugin_settings.html:38
-#: templates/js/translated/order.js:1669 templates/js/translated/stock.js:2340
+#: templates/js/translated/order.js:1669 templates/js/translated/stock.js:2350
msgid "Date"
msgstr ""
@@ -5796,20 +5786,20 @@ msgid "Installed Items"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:137
-#: templates/js/translated/stock.js:555 templates/js/translated/stock.js:725
-#: templates/js/translated/stock.js:2589
+#: templates/js/translated/stock.js:554 templates/js/translated/stock.js:724
+#: templates/js/translated/stock.js:2599
msgid "Serial"
msgstr ""
-#: stock/api.py:504
+#: stock/api.py:505
msgid "Quantity is required"
msgstr ""
-#: stock/api.py:511
+#: stock/api.py:512
msgid "Valid part must be supplied"
msgstr ""
-#: stock/api.py:536
+#: stock/api.py:537
msgid "Serial numbers cannot be supplied for a non-trackable part"
msgstr ""
@@ -5917,7 +5907,7 @@ msgid "Destination Sales Order"
msgstr ""
#: stock/models.py:690 stock/templates/stock/item_base.html:429
-#: templates/js/translated/stock.js:1816
+#: templates/js/translated/stock.js:1826
msgid "Expiry Date"
msgstr ""
@@ -5971,79 +5961,79 @@ msgstr ""
msgid "Serial numbers already exist: {exists}"
msgstr ""
-#: stock/models.py:1321
+#: stock/models.py:1325
msgid "Stock item has been assigned to a sales order"
msgstr ""
-#: stock/models.py:1324
+#: stock/models.py:1328
msgid "Stock item is installed in another item"
msgstr ""
-#: stock/models.py:1327
+#: stock/models.py:1331
msgid "Stock item contains other items"
msgstr ""
-#: stock/models.py:1330
+#: stock/models.py:1334
msgid "Stock item has been assigned to a customer"
msgstr ""
-#: stock/models.py:1333
+#: stock/models.py:1337
msgid "Stock item is currently in production"
msgstr ""
-#: stock/models.py:1336
+#: stock/models.py:1340
msgid "Serialized stock cannot be merged"
msgstr ""
-#: stock/models.py:1343 stock/serializers.py:908
+#: stock/models.py:1347 stock/serializers.py:895
msgid "Duplicate stock items"
msgstr ""
-#: stock/models.py:1347
+#: stock/models.py:1351
msgid "Stock items must refer to the same part"
msgstr ""
-#: stock/models.py:1351
+#: stock/models.py:1355
msgid "Stock items must refer to the same supplier part"
msgstr ""
-#: stock/models.py:1355
+#: stock/models.py:1359
msgid "Stock status codes must match"
msgstr ""
-#: stock/models.py:1524
+#: stock/models.py:1528
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:1986
+#: stock/models.py:1990
msgid "Entry notes"
msgstr ""
-#: stock/models.py:2044
+#: stock/models.py:2048
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:2050
+#: stock/models.py:2054
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:2069
+#: stock/models.py:2073
msgid "Test name"
msgstr ""
-#: stock/models.py:2075
+#: stock/models.py:2079
msgid "Test result"
msgstr ""
-#: stock/models.py:2081
+#: stock/models.py:2085
msgid "Test output value"
msgstr ""
-#: stock/models.py:2088
+#: stock/models.py:2092
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:2094
+#: stock/models.py:2098
msgid "Test notes"
msgstr ""
@@ -6064,7 +6054,7 @@ msgstr ""
msgid "Enter serial numbers for new items"
msgstr ""
-#: stock/serializers.py:309 stock/serializers.py:865 stock/serializers.py:1098
+#: stock/serializers.py:309 stock/serializers.py:852 stock/serializers.py:1085
msgid "Destination stock location"
msgstr ""
@@ -6104,63 +6094,63 @@ msgstr ""
msgid "Destination location for returned item"
msgstr ""
-#: stock/serializers.py:720
+#: stock/serializers.py:707
msgid "Part must be salable"
msgstr ""
-#: stock/serializers.py:724
+#: stock/serializers.py:711
msgid "Item is allocated to a sales order"
msgstr ""
-#: stock/serializers.py:728
+#: stock/serializers.py:715
msgid "Item is allocated to a build order"
msgstr ""
-#: stock/serializers.py:759
+#: stock/serializers.py:746
msgid "Customer to assign stock items"
msgstr ""
-#: stock/serializers.py:765
+#: stock/serializers.py:752
msgid "Selected company is not a customer"
msgstr ""
-#: stock/serializers.py:773
+#: stock/serializers.py:760
msgid "Stock assignment notes"
msgstr ""
-#: stock/serializers.py:783 stock/serializers.py:1014
+#: stock/serializers.py:770 stock/serializers.py:1001
msgid "A list of stock items must be provided"
msgstr ""
-#: stock/serializers.py:872
+#: stock/serializers.py:859
msgid "Stock merging notes"
msgstr ""
-#: stock/serializers.py:877
+#: stock/serializers.py:864
msgid "Allow mismatched suppliers"
msgstr ""
-#: stock/serializers.py:878
+#: stock/serializers.py:865
msgid "Allow stock items with different supplier parts to be merged"
msgstr ""
-#: stock/serializers.py:883
+#: stock/serializers.py:870
msgid "Allow mismatched status"
msgstr ""
-#: stock/serializers.py:884
+#: stock/serializers.py:871
msgid "Allow stock items with different status codes to be merged"
msgstr ""
-#: stock/serializers.py:894
+#: stock/serializers.py:881
msgid "At least two stock items must be provided"
msgstr ""
-#: stock/serializers.py:976
+#: stock/serializers.py:963
msgid "StockItem primary key value"
msgstr ""
-#: stock/serializers.py:1004
+#: stock/serializers.py:991
msgid "Stock transaction notes"
msgstr ""
@@ -6185,7 +6175,7 @@ msgstr ""
msgid "Test Report"
msgstr ""
-#: stock/templates/stock/item.html:94
+#: stock/templates/stock/item.html:94 stock/templates/stock/item.html:298
msgid "Delete Test Data"
msgstr ""
@@ -6197,11 +6187,15 @@ msgstr ""
msgid "Installed Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:151 templates/js/translated/stock.js:2733
+#: stock/templates/stock/item.html:151 templates/js/translated/stock.js:2743
msgid "Install Stock Item"
msgstr ""
-#: stock/templates/stock/item.html:292 templates/js/translated/stock.js:1455
+#: stock/templates/stock/item.html:290
+msgid "Delete all test results for this stock item"
+msgstr ""
+
+#: stock/templates/stock/item.html:323 templates/js/translated/stock.js:1465
msgid "Add Test Result"
msgstr ""
@@ -6388,7 +6382,7 @@ msgid "Stale"
msgstr ""
#: stock/templates/stock/item_base.html:442
-#: templates/js/translated/stock.js:1832
+#: templates/js/translated/stock.js:1842
msgid "Last Updated"
msgstr ""
@@ -6529,7 +6523,7 @@ msgstr ""
msgid "Child Items"
msgstr ""
-#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:182
+#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:144
msgid "Convert Stock Item"
msgstr ""
@@ -6550,31 +6544,19 @@ msgstr ""
msgid "This action cannot be easily undone"
msgstr ""
-#: stock/views.py:113
+#: stock/views.py:111
msgid "Stock Location QR code"
msgstr ""
-#: stock/views.py:131
-msgid "Delete All Test Data"
-msgstr ""
-
-#: stock/views.py:149
-msgid "Confirm test data deletion"
-msgstr ""
-
-#: stock/views.py:150
-msgid "Check the confirmation box"
-msgstr ""
-
-#: stock/views.py:165
+#: stock/views.py:127
msgid "Stock Item QR Code"
msgstr ""
-#: stock/views.py:216
+#: stock/views.py:178
msgid "Delete Stock Location"
msgstr ""
-#: stock/views.py:229
+#: stock/views.py:191
msgid "Delete Stock Item"
msgstr ""
@@ -7317,8 +7299,8 @@ msgstr ""
#: templates/about.html:11 templates/about.html:105
#: templates/js/translated/bom.js:133 templates/js/translated/bom.js:621
-#: templates/js/translated/modals.js:56 templates/js/translated/modals.js:595
-#: templates/js/translated/modals.js:689 templates/js/translated/modals.js:997
+#: templates/js/translated/modals.js:56 templates/js/translated/modals.js:601
+#: templates/js/translated/modals.js:695 templates/js/translated/modals.js:1003
#: templates/js/translated/order.js:928 templates/modals.html:15
#: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50
msgid "Close"
@@ -7390,6 +7372,10 @@ msgstr ""
msgid "Please confirm that %(email)s is an email address for user %(user_display)s."
msgstr ""
+#: templates/account/email_confirm.html:20 templates/js/translated/forms.js:630
+msgid "Confirm"
+msgstr "確認"
+
#: templates/account/email_confirm.html:27
#, python-format
msgid "This email confirmation link expired or is invalid. Please issue a new email confirmation request."
@@ -7562,7 +7548,7 @@ msgstr ""
msgid "Delete selected attachments"
msgstr ""
-#: templates/attachment_table.html:12 templates/js/translated/attachment.js:110
+#: templates/attachment_table.html:12 templates/js/translated/attachment.js:112
msgid "Delete Attachments"
msgstr ""
@@ -7596,15 +7582,15 @@ msgid "The following parts are low on required stock"
msgstr ""
#: templates/email/build_order_required_stock.html:18
-#: templates/js/translated/bom.js:1425
+#: templates/js/translated/bom.js:1419
msgid "Required Quantity"
msgstr ""
#: templates/email/build_order_required_stock.html:19
#: templates/email/low_stock_notification.html:18
-#: templates/js/translated/bom.js:890 templates/js/translated/build.js:1787
-#: templates/js/translated/build.js:2650 templates/js/translated/part.js:527
-#: templates/js/translated/part.js:530
+#: templates/js/translated/bom.js:884 templates/js/translated/build.js:1787
+#: templates/js/translated/build.js:2650 templates/js/translated/part.js:571
+#: templates/js/translated/part.js:574
#: templates/js/translated/table_filters.js:178
msgid "Available"
msgstr ""
@@ -7622,6 +7608,13 @@ msgstr ""
msgid "Minimum Quantity"
msgstr ""
+#: templates/email/new_order_assigned.html:9
+#: templates/email/overdue_build_order.html:9
+#: templates/email/overdue_purchase_order.html:9
+#: templates/email/overdue_sales_order.html:9
+msgid "Click on the following link to view this order"
+msgstr ""
+
#: templates/image_download.html:8
msgid "Specify URL for downloading image"
msgstr ""
@@ -7638,91 +7631,91 @@ msgstr ""
msgid "Remote image must not exceed maximum allowable file size"
msgstr ""
-#: templates/js/translated/api.js:235 templates/js/translated/modals.js:1067
+#: templates/js/translated/api.js:195 templates/js/translated/modals.js:1073
msgid "No Response"
msgstr ""
-#: templates/js/translated/api.js:236 templates/js/translated/modals.js:1068
+#: templates/js/translated/api.js:196 templates/js/translated/modals.js:1074
msgid "No response from the InvenTree server"
msgstr ""
-#: templates/js/translated/api.js:242
+#: templates/js/translated/api.js:202
msgid "Error 400: Bad request"
msgstr ""
-#: templates/js/translated/api.js:243
+#: templates/js/translated/api.js:203
msgid "API request returned error code 400"
msgstr ""
-#: templates/js/translated/api.js:247 templates/js/translated/modals.js:1077
+#: templates/js/translated/api.js:207 templates/js/translated/modals.js:1083
msgid "Error 401: Not Authenticated"
msgstr ""
-#: templates/js/translated/api.js:248 templates/js/translated/modals.js:1078
+#: templates/js/translated/api.js:208 templates/js/translated/modals.js:1084
msgid "Authentication credentials not supplied"
msgstr ""
-#: templates/js/translated/api.js:252 templates/js/translated/modals.js:1082
+#: templates/js/translated/api.js:212 templates/js/translated/modals.js:1088
msgid "Error 403: Permission Denied"
msgstr ""
-#: templates/js/translated/api.js:253 templates/js/translated/modals.js:1083
+#: templates/js/translated/api.js:213 templates/js/translated/modals.js:1089
msgid "You do not have the required permissions to access this function"
msgstr ""
-#: templates/js/translated/api.js:257 templates/js/translated/modals.js:1087
+#: templates/js/translated/api.js:217 templates/js/translated/modals.js:1093
msgid "Error 404: Resource Not Found"
msgstr ""
-#: templates/js/translated/api.js:258 templates/js/translated/modals.js:1088
+#: templates/js/translated/api.js:218 templates/js/translated/modals.js:1094
msgid "The requested resource could not be located on the server"
msgstr ""
-#: templates/js/translated/api.js:262
+#: templates/js/translated/api.js:222
msgid "Error 405: Method Not Allowed"
msgstr ""
-#: templates/js/translated/api.js:263
+#: templates/js/translated/api.js:223
msgid "HTTP method not allowed at URL"
msgstr ""
-#: templates/js/translated/api.js:267 templates/js/translated/modals.js:1092
+#: templates/js/translated/api.js:227 templates/js/translated/modals.js:1098
msgid "Error 408: Timeout"
msgstr ""
-#: templates/js/translated/api.js:268 templates/js/translated/modals.js:1093
+#: templates/js/translated/api.js:228 templates/js/translated/modals.js:1099
msgid "Connection timeout while requesting data from server"
msgstr ""
-#: templates/js/translated/api.js:271
+#: templates/js/translated/api.js:231
msgid "Unhandled Error Code"
msgstr ""
-#: templates/js/translated/api.js:272
+#: templates/js/translated/api.js:232
msgid "Error code"
msgstr ""
-#: templates/js/translated/attachment.js:96
+#: templates/js/translated/attachment.js:98
msgid "All selected attachments will be deleted"
msgstr ""
-#: templates/js/translated/attachment.js:156
+#: templates/js/translated/attachment.js:152
msgid "No attachments found"
msgstr ""
-#: templates/js/translated/attachment.js:180
+#: templates/js/translated/attachment.js:176
msgid "Edit Attachment"
msgstr ""
-#: templates/js/translated/attachment.js:246
+#: templates/js/translated/attachment.js:242
msgid "Upload Date"
msgstr ""
-#: templates/js/translated/attachment.js:262
+#: templates/js/translated/attachment.js:264
msgid "Edit attachment"
msgstr ""
-#: templates/js/translated/attachment.js:269
+#: templates/js/translated/attachment.js:271
msgid "Delete attachment"
msgstr ""
@@ -7755,7 +7748,7 @@ msgid "Unknown response from server"
msgstr ""
#: templates/js/translated/barcode.js:182
-#: templates/js/translated/modals.js:1057
+#: templates/js/translated/modals.js:1063
msgid "Invalid server response"
msgstr ""
@@ -7783,7 +7776,7 @@ msgstr ""
msgid "Unlink"
msgstr ""
-#: templates/js/translated/barcode.js:456 templates/js/translated/stock.js:999
+#: templates/js/translated/barcode.js:456 templates/js/translated/stock.js:998
msgid "Remove stock item"
msgstr ""
@@ -7918,89 +7911,89 @@ msgstr ""
msgid "Edit BOM Item Substitutes"
msgstr ""
-#: templates/js/translated/bom.js:682
+#: templates/js/translated/bom.js:684
msgid "All selected BOM items will be deleted"
msgstr ""
-#: templates/js/translated/bom.js:697
+#: templates/js/translated/bom.js:699
msgid "Delete selected BOM items?"
msgstr ""
-#: templates/js/translated/bom.js:824
+#: templates/js/translated/bom.js:818
msgid "Load BOM for subassembly"
msgstr ""
-#: templates/js/translated/bom.js:834
+#: templates/js/translated/bom.js:828
msgid "Substitutes Available"
msgstr ""
-#: templates/js/translated/bom.js:838 templates/js/translated/build.js:1769
+#: templates/js/translated/bom.js:832 templates/js/translated/build.js:1769
msgid "Variant stock allowed"
msgstr ""
-#: templates/js/translated/bom.js:906 templates/js/translated/build.js:1814
+#: templates/js/translated/bom.js:900 templates/js/translated/build.js:1814
#: templates/js/translated/order.js:3562
msgid "No Stock Available"
msgstr ""
-#: templates/js/translated/bom.js:910 templates/js/translated/build.js:1818
+#: templates/js/translated/bom.js:904 templates/js/translated/build.js:1818
msgid "Includes variant and substitute stock"
msgstr ""
-#: templates/js/translated/bom.js:912 templates/js/translated/build.js:1820
-#: templates/js/translated/part.js:690
+#: templates/js/translated/bom.js:906 templates/js/translated/build.js:1820
+#: templates/js/translated/part.js:734
msgid "Includes variant stock"
msgstr ""
-#: templates/js/translated/bom.js:914 templates/js/translated/build.js:1822
+#: templates/js/translated/bom.js:908 templates/js/translated/build.js:1822
msgid "Includes substitute stock"
msgstr ""
-#: templates/js/translated/bom.js:928
+#: templates/js/translated/bom.js:922
msgid "Substitutes"
msgstr ""
-#: templates/js/translated/bom.js:943
+#: templates/js/translated/bom.js:937
msgid "Purchase Price Range"
msgstr ""
-#: templates/js/translated/bom.js:950
+#: templates/js/translated/bom.js:944
msgid "Purchase Price Average"
msgstr ""
-#: templates/js/translated/bom.js:999 templates/js/translated/bom.js:1090
+#: templates/js/translated/bom.js:993 templates/js/translated/bom.js:1084
msgid "View BOM"
msgstr ""
-#: templates/js/translated/bom.js:1061
+#: templates/js/translated/bom.js:1055
msgid "Validate BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:1063
+#: templates/js/translated/bom.js:1057
msgid "This line has been validated"
msgstr ""
-#: templates/js/translated/bom.js:1065
+#: templates/js/translated/bom.js:1059
msgid "Edit substitute parts"
msgstr ""
-#: templates/js/translated/bom.js:1067 templates/js/translated/bom.js:1228
+#: templates/js/translated/bom.js:1061 templates/js/translated/bom.js:1222
msgid "Edit BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:1069
+#: templates/js/translated/bom.js:1063
msgid "Delete BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:1164 templates/js/translated/build.js:1615
+#: templates/js/translated/bom.js:1158 templates/js/translated/build.js:1615
msgid "No BOM items found"
msgstr ""
-#: templates/js/translated/bom.js:1408 templates/js/translated/build.js:1753
+#: templates/js/translated/bom.js:1402 templates/js/translated/build.js:1753
msgid "Required Part"
msgstr ""
-#: templates/js/translated/bom.js:1430
+#: templates/js/translated/bom.js:1424
msgid "Inherited from parent BOM"
msgstr ""
@@ -8040,13 +8033,13 @@ msgstr ""
msgid "Complete Build Order"
msgstr ""
-#: templates/js/translated/build.js:259 templates/js/translated/stock.js:91
-#: templates/js/translated/stock.js:181
+#: templates/js/translated/build.js:259 templates/js/translated/stock.js:90
+#: templates/js/translated/stock.js:180
msgid "Next available serial number"
msgstr ""
-#: templates/js/translated/build.js:261 templates/js/translated/stock.js:93
-#: templates/js/translated/stock.js:183
+#: templates/js/translated/build.js:261 templates/js/translated/stock.js:92
+#: templates/js/translated/stock.js:182
msgid "Latest serial number"
msgstr ""
@@ -8259,9 +8252,9 @@ msgstr ""
msgid "No builds matching query"
msgstr ""
-#: templates/js/translated/build.js:2448 templates/js/translated/part.js:1314
-#: templates/js/translated/part.js:1729 templates/js/translated/stock.js:1619
-#: templates/js/translated/stock.js:2277
+#: templates/js/translated/build.js:2448 templates/js/translated/part.js:1358
+#: templates/js/translated/part.js:1825 templates/js/translated/stock.js:1629
+#: templates/js/translated/stock.js:2287
msgid "Select"
msgstr ""
@@ -8273,7 +8266,7 @@ msgstr ""
msgid "Progress"
msgstr ""
-#: templates/js/translated/build.js:2532 templates/js/translated/stock.js:2519
+#: templates/js/translated/build.js:2532 templates/js/translated/stock.js:2529
msgid "No user information"
msgstr ""
@@ -8285,107 +8278,107 @@ msgstr ""
msgid "No parts allocated for"
msgstr ""
-#: templates/js/translated/company.js:66
+#: templates/js/translated/company.js:65
msgid "Add Manufacturer"
msgstr ""
-#: templates/js/translated/company.js:79 templates/js/translated/company.js:169
+#: templates/js/translated/company.js:78 templates/js/translated/company.js:168
msgid "Add Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:100
+#: templates/js/translated/company.js:99
msgid "Edit Manufacturer Part"
msgstr "メーカー・パーツの編集"
-#: templates/js/translated/company.js:157 templates/js/translated/order.js:506
+#: templates/js/translated/company.js:156 templates/js/translated/order.js:506
msgid "Add Supplier"
msgstr ""
-#: templates/js/translated/company.js:185
+#: templates/js/translated/company.js:184
msgid "Add Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:200
+#: templates/js/translated/company.js:199
msgid "Edit Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:248
+#: templates/js/translated/company.js:249
msgid "All selected supplier parts will be deleted"
msgstr ""
-#: templates/js/translated/company.js:263
+#: templates/js/translated/company.js:264
msgid "Delete Supplier Parts"
msgstr ""
-#: templates/js/translated/company.js:342
+#: templates/js/translated/company.js:336
msgid "Add new Company"
msgstr ""
-#: templates/js/translated/company.js:419
+#: templates/js/translated/company.js:413
msgid "Parts Supplied"
msgstr ""
-#: templates/js/translated/company.js:428
+#: templates/js/translated/company.js:422
msgid "Parts Manufactured"
msgstr ""
-#: templates/js/translated/company.js:443
+#: templates/js/translated/company.js:437
msgid "No company information found"
msgstr ""
-#: templates/js/translated/company.js:482
+#: templates/js/translated/company.js:478
msgid "All selected manufacturer parts will be deleted"
msgstr ""
-#: templates/js/translated/company.js:496
+#: templates/js/translated/company.js:492
msgid "Delete Manufacturer Parts"
msgstr ""
-#: templates/js/translated/company.js:535
+#: templates/js/translated/company.js:526
msgid "All selected parameters will be deleted"
msgstr ""
-#: templates/js/translated/company.js:548
+#: templates/js/translated/company.js:539
msgid "Delete Parameters"
msgstr ""
-#: templates/js/translated/company.js:595
+#: templates/js/translated/company.js:580
msgid "No manufacturer parts found"
msgstr ""
-#: templates/js/translated/company.js:615
-#: templates/js/translated/company.js:874 templates/js/translated/part.js:565
-#: templates/js/translated/part.js:650
+#: templates/js/translated/company.js:600
+#: templates/js/translated/company.js:859 templates/js/translated/part.js:609
+#: templates/js/translated/part.js:694
msgid "Template part"
msgstr ""
-#: templates/js/translated/company.js:619
-#: templates/js/translated/company.js:878 templates/js/translated/part.js:569
-#: templates/js/translated/part.js:654
+#: templates/js/translated/company.js:604
+#: templates/js/translated/company.js:863 templates/js/translated/part.js:613
+#: templates/js/translated/part.js:698
msgid "Assembled part"
msgstr ""
-#: templates/js/translated/company.js:747 templates/js/translated/part.js:757
+#: templates/js/translated/company.js:732 templates/js/translated/part.js:801
msgid "No parameters found"
msgstr ""
-#: templates/js/translated/company.js:784 templates/js/translated/part.js:799
+#: templates/js/translated/company.js:769 templates/js/translated/part.js:843
msgid "Edit parameter"
msgstr ""
-#: templates/js/translated/company.js:785 templates/js/translated/part.js:800
+#: templates/js/translated/company.js:770 templates/js/translated/part.js:844
msgid "Delete parameter"
msgstr ""
-#: templates/js/translated/company.js:804 templates/js/translated/part.js:817
+#: templates/js/translated/company.js:789 templates/js/translated/part.js:861
msgid "Edit Parameter"
msgstr ""
-#: templates/js/translated/company.js:815 templates/js/translated/part.js:829
+#: templates/js/translated/company.js:800 templates/js/translated/part.js:873
msgid "Delete Parameter"
msgstr ""
-#: templates/js/translated/company.js:854
+#: templates/js/translated/company.js:839
msgid "No supplier parts found"
msgstr ""
@@ -8448,36 +8441,36 @@ msgstr ""
msgid "Keep this form open"
msgstr ""
-#: templates/js/translated/forms.js:756
+#: templates/js/translated/forms.js:757
msgid "Enter a valid number"
msgstr ""
-#: templates/js/translated/forms.js:1248 templates/modals.html:19
+#: templates/js/translated/forms.js:1249 templates/modals.html:19
#: templates/modals.html:43
msgid "Form errors exist"
msgstr ""
-#: templates/js/translated/forms.js:1681
+#: templates/js/translated/forms.js:1682
msgid "No results found"
msgstr ""
-#: templates/js/translated/forms.js:1896 templates/search.html:29
+#: templates/js/translated/forms.js:1897 templates/search.html:29
msgid "Searching"
msgstr ""
-#: templates/js/translated/forms.js:2149
+#: templates/js/translated/forms.js:2150
msgid "Clear input"
msgstr ""
-#: templates/js/translated/forms.js:2615
+#: templates/js/translated/forms.js:2616
msgid "File Column"
msgstr ""
-#: templates/js/translated/forms.js:2615
+#: templates/js/translated/forms.js:2616
msgid "Field Name"
msgstr ""
-#: templates/js/translated/forms.js:2627
+#: templates/js/translated/forms.js:2628
msgid "Select Columns"
msgstr ""
@@ -8498,7 +8491,7 @@ msgid "Labels sent to printer"
msgstr ""
#: templates/js/translated/label.js:60 templates/js/translated/report.js:118
-#: templates/js/translated/stock.js:1023
+#: templates/js/translated/stock.js:1022
msgid "Select Stock Items"
msgstr ""
@@ -8552,12 +8545,12 @@ msgid "Select Label Template"
msgstr ""
#: templates/js/translated/modals.js:82 templates/js/translated/modals.js:142
-#: templates/js/translated/modals.js:621
+#: templates/js/translated/modals.js:627
msgid "Cancel"
msgstr ""
#: templates/js/translated/modals.js:83 templates/js/translated/modals.js:141
-#: templates/js/translated/modals.js:688 templates/js/translated/modals.js:996
+#: templates/js/translated/modals.js:694 templates/js/translated/modals.js:1002
#: templates/modals.html:28 templates/modals.html:51
msgid "Submit"
msgstr ""
@@ -8566,47 +8559,47 @@ msgstr ""
msgid "Form Title"
msgstr ""
-#: templates/js/translated/modals.js:403
+#: templates/js/translated/modals.js:421
msgid "Waiting for server..."
msgstr ""
-#: templates/js/translated/modals.js:562
+#: templates/js/translated/modals.js:568
msgid "Show Error Information"
msgstr ""
-#: templates/js/translated/modals.js:620
+#: templates/js/translated/modals.js:626
msgid "Accept"
msgstr ""
-#: templates/js/translated/modals.js:677
+#: templates/js/translated/modals.js:683
msgid "Loading Data"
msgstr ""
-#: templates/js/translated/modals.js:948
+#: templates/js/translated/modals.js:954
msgid "Invalid response from server"
msgstr ""
-#: templates/js/translated/modals.js:948
+#: templates/js/translated/modals.js:954
msgid "Form data missing from server response"
msgstr ""
-#: templates/js/translated/modals.js:960
+#: templates/js/translated/modals.js:966
msgid "Error posting form data"
msgstr ""
-#: templates/js/translated/modals.js:1057
+#: templates/js/translated/modals.js:1063
msgid "JSON response missing form data"
msgstr ""
-#: templates/js/translated/modals.js:1072
+#: templates/js/translated/modals.js:1078
msgid "Error 400: Bad Request"
msgstr ""
-#: templates/js/translated/modals.js:1073
+#: templates/js/translated/modals.js:1079
msgid "Server returned error code 400"
msgstr ""
-#: templates/js/translated/modals.js:1096
+#: templates/js/translated/modals.js:1102
msgid "Error requesting form data"
msgstr ""
@@ -8656,11 +8649,11 @@ msgstr ""
msgid "Mark as read"
msgstr ""
-#: templates/js/translated/notification.js:259
+#: templates/js/translated/notification.js:260
msgid "No unread notifications"
msgstr ""
-#: templates/js/translated/notification.js:300 templates/notifications.html:10
+#: templates/js/translated/notification.js:302 templates/notifications.html:10
msgid "Notifications will load here"
msgstr ""
@@ -8804,7 +8797,7 @@ msgstr ""
msgid "Quantity to receive"
msgstr ""
-#: templates/js/translated/order.js:1225 templates/js/translated/stock.js:2080
+#: templates/js/translated/order.js:1225 templates/js/translated/stock.js:2090
msgid "Stock Status"
msgstr ""
@@ -8828,7 +8821,7 @@ msgstr ""
msgid "Receive Purchase Order Items"
msgstr ""
-#: templates/js/translated/order.js:1602 templates/js/translated/part.js:870
+#: templates/js/translated/order.js:1602 templates/js/translated/part.js:914
msgid "No purchase orders found"
msgstr ""
@@ -8863,7 +8856,7 @@ msgstr ""
#: templates/js/translated/order.js:1937 templates/js/translated/order.js:2139
#: templates/js/translated/order.js:3467 templates/js/translated/order.js:3978
-#: templates/js/translated/part.js:1948 templates/js/translated/part.js:2301
+#: templates/js/translated/part.js:2044 templates/js/translated/part.js:2397
msgid "Unit Price"
msgstr ""
@@ -8873,11 +8866,11 @@ msgid "Total Price"
msgstr ""
#: templates/js/translated/order.js:1993 templates/js/translated/order.js:3525
-#: templates/js/translated/part.js:979
+#: templates/js/translated/part.js:1023
msgid "This line item is overdue"
msgstr ""
-#: templates/js/translated/order.js:2052 templates/js/translated/part.js:1025
+#: templates/js/translated/order.js:2052 templates/js/translated/part.js:1069
msgid "Receive line item"
msgstr ""
@@ -8998,7 +8991,7 @@ msgid "Delete Stock Allocation"
msgstr ""
#: templates/js/translated/order.js:3243 templates/js/translated/order.js:3332
-#: templates/js/translated/stock.js:1535
+#: templates/js/translated/stock.js:1545
msgid "Shipped to customer"
msgstr ""
@@ -9138,165 +9131,209 @@ msgstr ""
msgid "Create Part Variant"
msgstr ""
+#: templates/js/translated/part.js:405
+msgid "Active Part"
+msgstr ""
+
+#: templates/js/translated/part.js:406
+msgid "Part cannot be deleted as it is currently active"
+msgstr ""
+
+#: templates/js/translated/part.js:420
+msgid "Deleting this part cannot be reversed"
+msgstr ""
+
+#: templates/js/translated/part.js:422
+msgid "Any stock items for this part will be deleted"
+msgstr ""
+
#: templates/js/translated/part.js:423
+msgid "This part will be removed from any Bills of Material"
+msgstr ""
+
+#: templates/js/translated/part.js:424
+msgid "All manufacturer and supplier information for this part will be deleted"
+msgstr ""
+
+#: templates/js/translated/part.js:431
+msgid "Delete Part"
+msgstr ""
+
+#: templates/js/translated/part.js:467
msgid "You are subscribed to notifications for this item"
msgstr ""
-#: templates/js/translated/part.js:425
+#: templates/js/translated/part.js:469
msgid "You have subscribed to notifications for this item"
msgstr ""
-#: templates/js/translated/part.js:430
+#: templates/js/translated/part.js:474
msgid "Subscribe to notifications for this item"
msgstr ""
-#: templates/js/translated/part.js:432
+#: templates/js/translated/part.js:476
msgid "You have unsubscribed to notifications for this item"
msgstr ""
-#: templates/js/translated/part.js:449
+#: templates/js/translated/part.js:493
msgid "Validating the BOM will mark each line item as valid"
msgstr ""
-#: templates/js/translated/part.js:459
+#: templates/js/translated/part.js:503
msgid "Validate Bill of Materials"
msgstr ""
-#: templates/js/translated/part.js:462
+#: templates/js/translated/part.js:506
msgid "Validated Bill of Materials"
msgstr ""
-#: templates/js/translated/part.js:487
+#: templates/js/translated/part.js:531
msgid "Copy Bill of Materials"
msgstr ""
-#: templates/js/translated/part.js:513 templates/js/translated/part.js:1397
+#: templates/js/translated/part.js:557 templates/js/translated/part.js:1441
#: templates/js/translated/table_filters.js:452
msgid "Low stock"
msgstr ""
-#: templates/js/translated/part.js:523 templates/js/translated/part.js:1409
+#: templates/js/translated/part.js:567 templates/js/translated/part.js:1453
msgid "No stock available"
msgstr ""
-#: templates/js/translated/part.js:557 templates/js/translated/part.js:642
+#: templates/js/translated/part.js:601 templates/js/translated/part.js:686
msgid "Trackable part"
msgstr ""
-#: templates/js/translated/part.js:561 templates/js/translated/part.js:646
+#: templates/js/translated/part.js:605 templates/js/translated/part.js:690
msgid "Virtual part"
msgstr ""
-#: templates/js/translated/part.js:573
+#: templates/js/translated/part.js:617
msgid "Subscribed part"
msgstr ""
-#: templates/js/translated/part.js:577
+#: templates/js/translated/part.js:621
msgid "Salable part"
msgstr ""
-#: templates/js/translated/part.js:705
+#: templates/js/translated/part.js:749
msgid "No variants found"
msgstr ""
-#: templates/js/translated/part.js:1095
+#: templates/js/translated/part.js:1139
msgid "Delete part relationship"
msgstr ""
-#: templates/js/translated/part.js:1119
+#: templates/js/translated/part.js:1163
msgid "Delete Part Relationship"
msgstr ""
-#: templates/js/translated/part.js:1184 templates/js/translated/part.js:1480
+#: templates/js/translated/part.js:1228 templates/js/translated/part.js:1524
msgid "No parts found"
msgstr ""
-#: templates/js/translated/part.js:1223
+#: templates/js/translated/part.js:1267
msgid "Not available"
msgstr ""
-#: templates/js/translated/part.js:1374
+#: templates/js/translated/part.js:1418
msgid "No category"
msgstr ""
-#: templates/js/translated/part.js:1504 templates/js/translated/part.js:1664
-#: templates/js/translated/stock.js:2238
+#: templates/js/translated/part.js:1548 templates/js/translated/part.js:1760
+#: templates/js/translated/stock.js:2248
msgid "Display as list"
msgstr ""
-#: templates/js/translated/part.js:1520
+#: templates/js/translated/part.js:1564
msgid "Display as grid"
msgstr ""
-#: templates/js/translated/part.js:1683 templates/js/translated/stock.js:2257
+#: templates/js/translated/part.js:1630
+msgid "Set the part category for the selected parts"
+msgstr ""
+
+#: templates/js/translated/part.js:1635
+msgid "Set Part Category"
+msgstr ""
+
+#: templates/js/translated/part.js:1640
+msgid "Select Part Category"
+msgstr ""
+
+#: templates/js/translated/part.js:1653
+msgid "Category is required"
+msgstr ""
+
+#: templates/js/translated/part.js:1779 templates/js/translated/stock.js:2267
msgid "Display as tree"
msgstr ""
-#: templates/js/translated/part.js:1747
+#: templates/js/translated/part.js:1843
msgid "Subscribed category"
msgstr ""
-#: templates/js/translated/part.js:1761 templates/js/translated/stock.js:2301
+#: templates/js/translated/part.js:1857 templates/js/translated/stock.js:2311
msgid "Path"
msgstr ""
-#: templates/js/translated/part.js:1805
+#: templates/js/translated/part.js:1901
msgid "No test templates matching query"
msgstr ""
-#: templates/js/translated/part.js:1856 templates/js/translated/stock.js:1233
+#: templates/js/translated/part.js:1952 templates/js/translated/stock.js:1243
msgid "Edit test result"
msgstr ""
-#: templates/js/translated/part.js:1857 templates/js/translated/stock.js:1234
-#: templates/js/translated/stock.js:1493
+#: templates/js/translated/part.js:1953 templates/js/translated/stock.js:1244
+#: templates/js/translated/stock.js:1503
msgid "Delete test result"
msgstr ""
-#: templates/js/translated/part.js:1863
+#: templates/js/translated/part.js:1959
msgid "This test is defined for a parent part"
msgstr ""
-#: templates/js/translated/part.js:1885
+#: templates/js/translated/part.js:1981
msgid "Edit Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:1899
+#: templates/js/translated/part.js:1995
msgid "Delete Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:1924
+#: templates/js/translated/part.js:2020
#, python-brace-format
msgid "No ${human_name} information found"
msgstr ""
-#: templates/js/translated/part.js:1981
+#: templates/js/translated/part.js:2077
#, python-brace-format
msgid "Edit ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:1982
+#: templates/js/translated/part.js:2078
#, python-brace-format
msgid "Delete ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:2096
+#: templates/js/translated/part.js:2192
msgid "Current Stock"
msgstr ""
-#: templates/js/translated/part.js:2129
+#: templates/js/translated/part.js:2225
msgid "No scheduling information available for this part"
msgstr ""
-#: templates/js/translated/part.js:2155
+#: templates/js/translated/part.js:2251
msgid "Scheduled Stock Quantities"
msgstr ""
-#: templates/js/translated/part.js:2225
+#: templates/js/translated/part.js:2321
msgid "Single Price"
msgstr ""
-#: templates/js/translated/part.js:2244
+#: templates/js/translated/part.js:2340
msgid "Single Price Difference"
msgstr ""
@@ -9378,360 +9415,360 @@ msgstr ""
msgid "Remove results"
msgstr ""
-#: templates/js/translated/stock.js:73
+#: templates/js/translated/stock.js:72
msgid "Serialize Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:101
+#: templates/js/translated/stock.js:100
msgid "Confirm Stock Serialization"
msgstr ""
-#: templates/js/translated/stock.js:110
+#: templates/js/translated/stock.js:109
msgid "Parent stock location"
msgstr ""
-#: templates/js/translated/stock.js:139
+#: templates/js/translated/stock.js:138
msgid "Edit Stock Location"
msgstr ""
-#: templates/js/translated/stock.js:154
+#: templates/js/translated/stock.js:153
msgid "New Stock Location"
msgstr ""
-#: templates/js/translated/stock.js:194
+#: templates/js/translated/stock.js:193
msgid "This part cannot be serialized"
msgstr ""
-#: templates/js/translated/stock.js:233
+#: templates/js/translated/stock.js:232
msgid "Enter initial quantity for this stock item"
msgstr ""
-#: templates/js/translated/stock.js:239
+#: templates/js/translated/stock.js:238
msgid "Enter serial numbers for new stock (or leave blank)"
msgstr ""
-#: templates/js/translated/stock.js:304
+#: templates/js/translated/stock.js:303
msgid "Stock item duplicated"
msgstr ""
-#: templates/js/translated/stock.js:324
+#: templates/js/translated/stock.js:323
msgid "Duplicate Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:344
+#: templates/js/translated/stock.js:343
msgid "Edit Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:394
+#: templates/js/translated/stock.js:393
msgid "Created new stock item"
msgstr ""
-#: templates/js/translated/stock.js:407
+#: templates/js/translated/stock.js:406
msgid "Created multiple stock items"
msgstr ""
-#: templates/js/translated/stock.js:432
+#: templates/js/translated/stock.js:431
msgid "Find Serial Number"
msgstr ""
-#: templates/js/translated/stock.js:436 templates/js/translated/stock.js:437
+#: templates/js/translated/stock.js:435 templates/js/translated/stock.js:436
msgid "Enter serial number"
msgstr ""
-#: templates/js/translated/stock.js:453
+#: templates/js/translated/stock.js:452
msgid "Enter a serial number"
msgstr ""
-#: templates/js/translated/stock.js:473
+#: templates/js/translated/stock.js:472
msgid "No matching serial number"
msgstr ""
-#: templates/js/translated/stock.js:482
+#: templates/js/translated/stock.js:481
msgid "More than one matching result found"
msgstr ""
-#: templates/js/translated/stock.js:605
+#: templates/js/translated/stock.js:604
msgid "Confirm stock assignment"
msgstr ""
-#: templates/js/translated/stock.js:606
+#: templates/js/translated/stock.js:605
msgid "Assign Stock to Customer"
msgstr ""
-#: templates/js/translated/stock.js:683
+#: templates/js/translated/stock.js:682
msgid "Warning: Merge operation cannot be reversed"
msgstr ""
-#: templates/js/translated/stock.js:684
+#: templates/js/translated/stock.js:683
msgid "Some information will be lost when merging stock items"
msgstr ""
-#: templates/js/translated/stock.js:686
+#: templates/js/translated/stock.js:685
msgid "Stock transaction history will be deleted for merged items"
msgstr ""
-#: templates/js/translated/stock.js:687
+#: templates/js/translated/stock.js:686
msgid "Supplier part information will be deleted for merged items"
msgstr ""
-#: templates/js/translated/stock.js:773
+#: templates/js/translated/stock.js:772
msgid "Confirm stock item merge"
msgstr ""
-#: templates/js/translated/stock.js:774
+#: templates/js/translated/stock.js:773
msgid "Merge Stock Items"
msgstr ""
-#: templates/js/translated/stock.js:869
+#: templates/js/translated/stock.js:868
msgid "Transfer Stock"
msgstr ""
-#: templates/js/translated/stock.js:870
+#: templates/js/translated/stock.js:869
msgid "Move"
msgstr ""
-#: templates/js/translated/stock.js:876
+#: templates/js/translated/stock.js:875
msgid "Count Stock"
msgstr ""
-#: templates/js/translated/stock.js:877
+#: templates/js/translated/stock.js:876
msgid "Count"
msgstr ""
-#: templates/js/translated/stock.js:881
+#: templates/js/translated/stock.js:880
msgid "Remove Stock"
msgstr ""
-#: templates/js/translated/stock.js:882
+#: templates/js/translated/stock.js:881
msgid "Take"
msgstr ""
-#: templates/js/translated/stock.js:886
+#: templates/js/translated/stock.js:885
msgid "Add Stock"
msgstr ""
-#: templates/js/translated/stock.js:887 users/models.py:215
+#: templates/js/translated/stock.js:886 users/models.py:215
msgid "Add"
msgstr ""
-#: templates/js/translated/stock.js:891
+#: templates/js/translated/stock.js:890
msgid "Delete Stock"
msgstr ""
-#: templates/js/translated/stock.js:984
+#: templates/js/translated/stock.js:983
msgid "Quantity cannot be adjusted for serialized stock"
msgstr ""
-#: templates/js/translated/stock.js:984
+#: templates/js/translated/stock.js:983
msgid "Specify stock quantity"
msgstr ""
-#: templates/js/translated/stock.js:1024
+#: templates/js/translated/stock.js:1023
msgid "You must select at least one available stock item"
msgstr ""
-#: templates/js/translated/stock.js:1047
+#: templates/js/translated/stock.js:1046
msgid "Confirm stock adjustment"
msgstr ""
-#: templates/js/translated/stock.js:1172
+#: templates/js/translated/stock.js:1182
msgid "PASS"
msgstr ""
-#: templates/js/translated/stock.js:1174
+#: templates/js/translated/stock.js:1184
msgid "FAIL"
msgstr ""
-#: templates/js/translated/stock.js:1179
+#: templates/js/translated/stock.js:1189
msgid "NO RESULT"
msgstr ""
-#: templates/js/translated/stock.js:1226
+#: templates/js/translated/stock.js:1236
msgid "Pass test"
msgstr ""
-#: templates/js/translated/stock.js:1229
+#: templates/js/translated/stock.js:1239
msgid "Add test result"
msgstr ""
-#: templates/js/translated/stock.js:1255
+#: templates/js/translated/stock.js:1265
msgid "No test results found"
msgstr ""
-#: templates/js/translated/stock.js:1311
+#: templates/js/translated/stock.js:1321
msgid "Test Date"
msgstr ""
-#: templates/js/translated/stock.js:1476
+#: templates/js/translated/stock.js:1486
msgid "Edit Test Result"
msgstr ""
-#: templates/js/translated/stock.js:1498
+#: templates/js/translated/stock.js:1508
msgid "Delete Test Result"
msgstr ""
-#: templates/js/translated/stock.js:1527
+#: templates/js/translated/stock.js:1537
msgid "In production"
msgstr ""
-#: templates/js/translated/stock.js:1531
+#: templates/js/translated/stock.js:1541
msgid "Installed in Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:1539
+#: templates/js/translated/stock.js:1549
msgid "Assigned to Sales Order"
msgstr ""
-#: templates/js/translated/stock.js:1545
+#: templates/js/translated/stock.js:1555
msgid "No stock location set"
msgstr ""
-#: templates/js/translated/stock.js:1712
+#: templates/js/translated/stock.js:1722
msgid "Stock item is in production"
msgstr ""
-#: templates/js/translated/stock.js:1717
+#: templates/js/translated/stock.js:1727
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:1720
+#: templates/js/translated/stock.js:1730
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:1723
+#: templates/js/translated/stock.js:1733
msgid "Serialized stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:1725
+#: templates/js/translated/stock.js:1735
msgid "Stock item has been fully allocated"
msgstr ""
-#: templates/js/translated/stock.js:1727
+#: templates/js/translated/stock.js:1737
msgid "Stock item has been partially allocated"
msgstr ""
-#: templates/js/translated/stock.js:1730
+#: templates/js/translated/stock.js:1740
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:1734
+#: templates/js/translated/stock.js:1744
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:1736
+#: templates/js/translated/stock.js:1746
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:1743
+#: templates/js/translated/stock.js:1753
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:1745
+#: templates/js/translated/stock.js:1755
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:1747
+#: templates/js/translated/stock.js:1757
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:1751
+#: templates/js/translated/stock.js:1761
#: templates/js/translated/table_filters.js:188
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:1802
+#: templates/js/translated/stock.js:1812
msgid "Stocktake"
msgstr ""
-#: templates/js/translated/stock.js:1884
+#: templates/js/translated/stock.js:1894
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:1922
+#: templates/js/translated/stock.js:1932
msgid "No stock items matching query"
msgstr ""
-#: templates/js/translated/stock.js:2095
+#: templates/js/translated/stock.js:2105
msgid "Set Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:2109
+#: templates/js/translated/stock.js:2119
msgid "Select Status Code"
msgstr ""
-#: templates/js/translated/stock.js:2110
+#: templates/js/translated/stock.js:2120
msgid "Status code must be selected"
msgstr ""
-#: templates/js/translated/stock.js:2365
+#: templates/js/translated/stock.js:2375
msgid "Details"
msgstr ""
-#: templates/js/translated/stock.js:2381
+#: templates/js/translated/stock.js:2391
msgid "Part information unavailable"
msgstr ""
-#: templates/js/translated/stock.js:2403
+#: templates/js/translated/stock.js:2413
msgid "Location no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2422
+#: templates/js/translated/stock.js:2432
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2441
+#: templates/js/translated/stock.js:2451
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2459
+#: templates/js/translated/stock.js:2469
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2482
+#: templates/js/translated/stock.js:2492
msgid "Added"
msgstr ""
-#: templates/js/translated/stock.js:2490
+#: templates/js/translated/stock.js:2500
msgid "Removed"
msgstr ""
-#: templates/js/translated/stock.js:2566
+#: templates/js/translated/stock.js:2576
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:2617 templates/js/translated/stock.js:2653
+#: templates/js/translated/stock.js:2627 templates/js/translated/stock.js:2663
msgid "Uninstall Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:2666
+#: templates/js/translated/stock.js:2676
msgid "Select stock item to uninstall"
msgstr ""
-#: templates/js/translated/stock.js:2687
+#: templates/js/translated/stock.js:2697
msgid "Install another stock item into this item"
msgstr ""
-#: templates/js/translated/stock.js:2688
+#: templates/js/translated/stock.js:2698
msgid "Stock items can only be installed if they meet the following criteria"
msgstr ""
-#: templates/js/translated/stock.js:2690
+#: templates/js/translated/stock.js:2700
msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:2691
+#: templates/js/translated/stock.js:2701
msgid "The Stock Item is currently available in stock"
msgstr ""
-#: templates/js/translated/stock.js:2692
+#: templates/js/translated/stock.js:2702
msgid "The Stock Item is not already installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:2693
+#: templates/js/translated/stock.js:2703
msgid "The Stock Item is tracked by either a batch code or serial number"
msgstr ""
-#: templates/js/translated/stock.js:2706
+#: templates/js/translated/stock.js:2716
msgid "Select part to install"
msgstr ""
diff --git a/InvenTree/locale/ko/LC_MESSAGES/django.po b/InvenTree/locale/ko/LC_MESSAGES/django.po
index 8c460c8c65..680fca08d2 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: 2022-06-05 14:26+0000\n"
-"PO-Revision-Date: 2022-06-05 14:34\n"
+"POT-Creation-Date: 2022-06-06 22:59+0000\n"
+"PO-Revision-Date: 2022-06-07 14:34\n"
"Last-Translator: \n"
"Language-Team: Korean\n"
"Language: ko_KR\n"
@@ -17,7 +17,7 @@ msgstr ""
"X-Crowdin-File: /[inventree.InvenTree] l10/InvenTree/locale/en/LC_MESSAGES/django.po\n"
"X-Crowdin-File-ID: 154\n"
-#: InvenTree/api.py:46
+#: InvenTree/api.py:49
msgid "API endpoint not found"
msgstr ""
@@ -29,275 +29,273 @@ msgstr ""
msgid "Enter date"
msgstr ""
-#: InvenTree/forms.py:117 templates/account/email_confirm.html:20
-#: templates/js/translated/forms.js:630
-msgid "Confirm"
-msgstr "확인"
-
-#: InvenTree/forms.py:134
+#: InvenTree/forms.py:117
msgid "Confirm delete"
msgstr ""
-#: InvenTree/forms.py:135
+#: InvenTree/forms.py:118
msgid "Confirm item deletion"
msgstr ""
-#: InvenTree/forms.py:167
+#: InvenTree/forms.py:150
msgid "Enter password"
msgstr "비밀번호를 입력하세요"
-#: InvenTree/forms.py:168
+#: InvenTree/forms.py:151
msgid "Enter new password"
msgstr "새로운 비밀번호를 입력하세요"
-#: InvenTree/forms.py:175
+#: InvenTree/forms.py:158
msgid "Confirm password"
msgstr "비밀번호 확인"
-#: InvenTree/forms.py:176
+#: InvenTree/forms.py:159
msgid "Confirm new password"
msgstr "새 비밀번호 확인"
-#: InvenTree/forms.py:213
-msgid "Select Category"
-msgstr ""
-
-#: InvenTree/forms.py:234
+#: InvenTree/forms.py:184
msgid "Email (again)"
msgstr "이메일 (다시 입력)"
-#: InvenTree/forms.py:238
+#: InvenTree/forms.py:188
msgid "Email address confirmation"
msgstr "이메일 주소 확인"
-#: InvenTree/forms.py:259
+#: InvenTree/forms.py:209
msgid "You must type the same email each time."
msgstr ""
-#: InvenTree/helpers.py:402
+#: InvenTree/helpers.py:404
#, python-brace-format
msgid "Duplicate serial: {sn}"
msgstr ""
-#: InvenTree/helpers.py:409 order/models.py:365 order/models.py:517
+#: InvenTree/helpers.py:411 order/models.py:370 order/models.py:522
msgid "Invalid quantity provided"
msgstr ""
-#: InvenTree/helpers.py:412
+#: InvenTree/helpers.py:414
msgid "Empty serial number string"
msgstr ""
-#: InvenTree/helpers.py:444
+#: InvenTree/helpers.py:446
#, python-brace-format
msgid "Invalid group range: {g}"
msgstr ""
-#: InvenTree/helpers.py:447
+#: InvenTree/helpers.py:449
#, python-brace-format
msgid "Invalid group: {g}"
msgstr ""
-#: InvenTree/helpers.py:475
+#: InvenTree/helpers.py:477
#, python-brace-format
msgid "Invalid group sequence: {g}"
msgstr ""
-#: InvenTree/helpers.py:483
+#: InvenTree/helpers.py:485
#, python-brace-format
msgid "Invalid/no group {group}"
msgstr ""
-#: InvenTree/helpers.py:489
+#: InvenTree/helpers.py:491
msgid "No serial numbers found"
msgstr ""
-#: InvenTree/helpers.py:493
+#: InvenTree/helpers.py:495
#, python-brace-format
msgid "Number of unique serial numbers ({s}) must match quantity ({q})"
msgstr ""
-#: InvenTree/models.py:174
+#: InvenTree/models.py:178
msgid "Missing file"
msgstr ""
-#: InvenTree/models.py:175
+#: InvenTree/models.py:179
msgid "Missing external link"
msgstr ""
-#: InvenTree/models.py:187 stock/models.py:2087
-#: templates/js/translated/attachment.js:101
-#: templates/js/translated/attachment.js:198
+#: InvenTree/models.py:191 stock/models.py:2091
+#: templates/js/translated/attachment.js:103
+#: templates/js/translated/attachment.js:194
msgid "Attachment"
msgstr "첨부파일"
-#: InvenTree/models.py:188
+#: InvenTree/models.py:192
msgid "Select file to attach"
msgstr "첨부할 파일을 선택하세요"
-#: InvenTree/models.py:194 company/models.py:123 company/models.py:272
-#: company/models.py:506 order/models.py:135 order/models.py:1235
+#: InvenTree/models.py:198 company/models.py:123 company/models.py:272
+#: company/models.py:506 order/models.py:136 order/models.py:1251
#: part/models.py:795
#: report/templates/report/inventree_build_order_base.html:165
-#: templates/js/translated/company.js:655
-#: templates/js/translated/company.js:946 templates/js/translated/order.js:2676
-#: templates/js/translated/part.js:1441
+#: templates/js/translated/company.js:640
+#: templates/js/translated/company.js:931 templates/js/translated/order.js:2676
+#: templates/js/translated/part.js:1485
msgid "Link"
msgstr "링크"
-#: InvenTree/models.py:195 build/models.py:320 part/models.py:796
+#: InvenTree/models.py:199 build/models.py:320 part/models.py:796
#: stock/models.py:642
msgid "Link to external URL"
msgstr "외부 URL로 링크"
-#: InvenTree/models.py:198 templates/js/translated/attachment.js:102
-#: templates/js/translated/attachment.js:242
+#: InvenTree/models.py:202 templates/js/translated/attachment.js:104
+#: templates/js/translated/attachment.js:238
msgid "Comment"
msgstr ""
-#: InvenTree/models.py:198
+#: InvenTree/models.py:202
msgid "File comment"
msgstr ""
-#: InvenTree/models.py:204 InvenTree/models.py:205 common/models.py:1499
-#: common/models.py:1500 common/models.py:1728 common/models.py:1729
-#: common/models.py:1991 common/models.py:1992 part/models.py:2153
-#: part/models.py:2173 plugin/models.py:238 plugin/models.py:239
+#: InvenTree/models.py:208 InvenTree/models.py:209 common/models.py:1506
+#: common/models.py:1507 common/models.py:1735 common/models.py:1736
+#: common/models.py:1998 common/models.py:1999 part/models.py:2141
+#: part/models.py:2161 plugin/models.py:238 plugin/models.py:239
#: report/templates/report/inventree_test_report_base.html:96
-#: templates/js/translated/stock.js:2513
+#: templates/js/translated/stock.js:2523
msgid "User"
msgstr "사용자"
-#: InvenTree/models.py:208
+#: InvenTree/models.py:212
msgid "upload date"
msgstr "업로드 날짜"
-#: InvenTree/models.py:230
+#: InvenTree/models.py:234
msgid "Filename must not be empty"
msgstr "파일명은 비워둘 수 없습니다"
-#: InvenTree/models.py:253
+#: InvenTree/models.py:257
msgid "Invalid attachment directory"
msgstr ""
-#: InvenTree/models.py:263
+#: InvenTree/models.py:267
#, python-brace-format
msgid "Filename contains illegal character '{c}'"
msgstr "파일명에 허용되지 않은 문자 '{c}'가 포함되어 있습니다"
-#: InvenTree/models.py:266
+#: InvenTree/models.py:270
msgid "Filename missing extension"
msgstr ""
-#: InvenTree/models.py:273
+#: InvenTree/models.py:277
msgid "Attachment with this filename already exists"
msgstr "같은 이름의 첨부파일이 이미 존재합니다"
-#: InvenTree/models.py:280
+#: InvenTree/models.py:284
msgid "Error renaming file"
msgstr "파일 이름 바꾸기 오류"
-#: InvenTree/models.py:314
+#: InvenTree/models.py:318
msgid "Invalid choice"
msgstr ""
-#: InvenTree/models.py:333 InvenTree/models.py:334 common/models.py:1714
+#: InvenTree/models.py:337 InvenTree/models.py:338 common/models.py:1721
#: company/models.py:354 label/models.py:101 part/models.py:739
-#: part/models.py:2331 plugin/models.py:93 report/models.py:151
+#: part/models.py:2319 plugin/models.py:93 report/models.py:151
#: templates/InvenTree/notifications/notifications.html:84
#: templates/InvenTree/settings/mixins/urls.html:13
#: templates/InvenTree/settings/plugin.html:49
#: templates/InvenTree/settings/plugin.html:132
#: templates/InvenTree/settings/plugin_settings.html:23
#: templates/InvenTree/settings/settings.html:346
-#: templates/js/translated/company.js:539
-#: templates/js/translated/company.js:757 templates/js/translated/part.js:615
-#: templates/js/translated/part.js:767 templates/js/translated/part.js:1736
-#: templates/js/translated/stock.js:2283
+#: templates/js/translated/company.js:530
+#: templates/js/translated/company.js:742 templates/js/translated/part.js:659
+#: templates/js/translated/part.js:811 templates/js/translated/part.js:1832
+#: templates/js/translated/stock.js:2293
msgid "Name"
msgstr "이름"
-#: InvenTree/models.py:340 build/models.py:197
+#: InvenTree/models.py:344 build/models.py:197
#: build/templates/build/detail.html:24 company/models.py:278
#: company/models.py:512 company/templates/company/company_base.html:71
#: company/templates/company/manufacturer_part.html:75
#: company/templates/company/supplier_part.html:73 label/models.py:108
-#: order/models.py:133 part/models.py:762 part/templates/part/category.html:74
-#: part/templates/part/part_base.html:167
-#: part/templates/part/set_category.html:14 report/models.py:164
+#: order/models.py:134 part/models.py:762 part/templates/part/category.html:74
+#: part/templates/part/part_base.html:167 report/models.py:164
#: report/models.py:509 report/models.py:550
#: report/templates/report/inventree_build_order_base.html:118
#: stock/templates/stock/location.html:103
#: templates/InvenTree/settings/plugin_settings.html:33
-#: templates/js/translated/bom.js:553 templates/js/translated/bom.js:851
-#: templates/js/translated/build.js:2476 templates/js/translated/company.js:401
-#: templates/js/translated/company.js:666
-#: templates/js/translated/company.js:957 templates/js/translated/order.js:1656
+#: templates/js/translated/bom.js:553 templates/js/translated/bom.js:845
+#: templates/js/translated/build.js:2476 templates/js/translated/company.js:395
+#: templates/js/translated/company.js:651
+#: templates/js/translated/company.js:942 templates/js/translated/order.js:1656
#: templates/js/translated/order.js:1888 templates/js/translated/order.js:2476
-#: templates/js/translated/part.js:674 templates/js/translated/part.js:1082
-#: templates/js/translated/part.js:1355 templates/js/translated/part.js:1755
-#: templates/js/translated/part.js:1824 templates/js/translated/stock.js:1676
-#: templates/js/translated/stock.js:2295 templates/js/translated/stock.js:2350
+#: templates/js/translated/part.js:718 templates/js/translated/part.js:1126
+#: templates/js/translated/part.js:1399 templates/js/translated/part.js:1851
+#: templates/js/translated/part.js:1920 templates/js/translated/stock.js:1686
+#: templates/js/translated/stock.js:2305 templates/js/translated/stock.js:2360
msgid "Description"
msgstr "설명"
-#: InvenTree/models.py:341
+#: InvenTree/models.py:345
msgid "Description (optional)"
msgstr "설명 (선택 사항)"
-#: InvenTree/models.py:349
+#: InvenTree/models.py:353
msgid "parent"
msgstr ""
-#: InvenTree/serializers.py:52 part/models.py:2652
+#: InvenTree/models.py:466
+msgid "Server Error"
+msgstr ""
+
+#: InvenTree/models.py:467
+msgid "An error has been logged by the server."
+msgstr ""
+
+#: InvenTree/serializers.py:52 part/models.py:2640
msgid "Must be a valid number"
msgstr "유효한 숫자여야 합니다"
-#: InvenTree/serializers.py:271
+#: InvenTree/serializers.py:263
msgid "Filename"
msgstr "파일명"
-#: InvenTree/serializers.py:306
+#: InvenTree/serializers.py:298
msgid "Invalid value"
msgstr ""
-#: InvenTree/serializers.py:328
+#: InvenTree/serializers.py:320
msgid "Data File"
msgstr ""
-#: InvenTree/serializers.py:329
+#: InvenTree/serializers.py:321
msgid "Select data file for upload"
msgstr ""
-#: InvenTree/serializers.py:350
+#: InvenTree/serializers.py:342
msgid "Unsupported file type"
msgstr ""
-#: InvenTree/serializers.py:356
+#: InvenTree/serializers.py:348
msgid "File is too large"
msgstr "파일이 너무 큽니다"
-#: InvenTree/serializers.py:377
+#: InvenTree/serializers.py:369
msgid "No columns found in file"
msgstr ""
-#: InvenTree/serializers.py:380
+#: InvenTree/serializers.py:372
msgid "No data rows found in file"
msgstr ""
-#: InvenTree/serializers.py:503
+#: InvenTree/serializers.py:495
msgid "No data rows provided"
msgstr ""
-#: InvenTree/serializers.py:506
+#: InvenTree/serializers.py:498
msgid "No data columns supplied"
msgstr ""
-#: InvenTree/serializers.py:583
+#: InvenTree/serializers.py:575
#, python-brace-format
msgid "Missing required column: '{name}'"
msgstr ""
-#: InvenTree/serializers.py:592
+#: InvenTree/serializers.py:584
#, python-brace-format
msgid "Duplicate column: '{col}'"
msgstr ""
@@ -440,7 +438,7 @@ msgstr ""
msgid "Returned"
msgstr ""
-#: InvenTree/status_codes.py:141 order/models.py:1114
+#: InvenTree/status_codes.py:141 order/models.py:1130
#: templates/js/translated/order.js:3264 templates/js/translated/order.js:3607
msgid "Shipped"
msgstr ""
@@ -525,7 +523,7 @@ msgstr ""
msgid "Split child item"
msgstr ""
-#: InvenTree/status_codes.py:281 templates/js/translated/stock.js:2020
+#: InvenTree/status_codes.py:281 templates/js/translated/stock.js:2030
msgid "Merged stock items"
msgstr ""
@@ -597,27 +595,27 @@ msgstr ""
msgid "Invalid value for overage"
msgstr ""
-#: InvenTree/views.py:522
+#: InvenTree/views.py:521
msgid "Delete Item"
msgstr ""
-#: InvenTree/views.py:571
+#: InvenTree/views.py:570
msgid "Check box to confirm item deletion"
msgstr ""
-#: InvenTree/views.py:586 templates/InvenTree/settings/user.html:22
+#: InvenTree/views.py:585 templates/InvenTree/settings/user.html:22
msgid "Edit User Information"
msgstr "사용자 정보 수정"
-#: InvenTree/views.py:598 templates/InvenTree/settings/user.html:19
+#: InvenTree/views.py:597 templates/InvenTree/settings/user.html:19
msgid "Set Password"
msgstr "비밀번호 설정"
-#: InvenTree/views.py:618
+#: InvenTree/views.py:617
msgid "Password fields must match"
msgstr "비밀번호가 일치해야 합니다"
-#: InvenTree/views.py:842 templates/navbar.html:152
+#: InvenTree/views.py:807 templates/navbar.html:152
msgid "System Information"
msgstr "시스템 정보"
@@ -628,6 +626,7 @@ msgstr ""
#: build/models.py:131 build/templates/build/build_base.html:9
#: build/templates/build/build_base.html:27
#: report/templates/report/inventree_build_order_base.html:106
+#: templates/email/overdue_build_order.html:15
#: templates/js/translated/build.js:727
msgid "Build Order"
msgstr ""
@@ -646,12 +645,12 @@ msgstr ""
msgid "Build Order Reference"
msgstr ""
-#: build/models.py:189 order/models.py:288 order/models.py:638
-#: order/models.py:916 part/models.py:2570
+#: build/models.py:189 order/models.py:293 order/models.py:654
+#: order/models.py:932 part/models.py:2558
#: part/templates/part/upload_bom.html:54
#: report/templates/report/inventree_po_report.html:91
#: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:688 templates/js/translated/bom.js:858
+#: templates/js/translated/bom.js:690 templates/js/translated/bom.js:852
#: templates/js/translated/build.js:1777 templates/js/translated/order.js:1919
#: templates/js/translated/order.js:2120 templates/js/translated/order.js:3448
#: templates/js/translated/order.js:3959
@@ -673,13 +672,12 @@ msgstr ""
#: build/models.py:215 build/templates/build/build_base.html:77
#: build/templates/build/detail.html:29 company/models.py:647
-#: order/models.py:1012 order/models.py:1103 part/models.py:336
-#: part/models.py:2099 part/models.py:2114 part/models.py:2133
-#: part/models.py:2151 part/models.py:2250 part/models.py:2370
-#: part/models.py:2460 part/models.py:2545 part/models.py:2821
-#: part/serializers.py:793 part/templates/part/part_app_base.html:8
+#: order/models.py:1028 order/models.py:1119 part/models.py:336
+#: part/models.py:2087 part/models.py:2102 part/models.py:2121
+#: part/models.py:2139 part/models.py:2238 part/models.py:2358
+#: part/models.py:2448 part/models.py:2533 part/models.py:2809
+#: part/serializers.py:795 part/templates/part/part_app_base.html:8
#: part/templates/part/part_pricing.html:12
-#: part/templates/part/set_category.html:13
#: part/templates/part/upload_bom.html:52
#: report/templates/report/inventree_build_order_base.html:110
#: report/templates/report/inventree_po_report.html:89
@@ -687,22 +685,23 @@ msgstr ""
#: templates/InvenTree/search.html:80
#: templates/email/build_order_required_stock.html:17
#: templates/email/low_stock_notification.html:16
+#: templates/email/overdue_build_order.html:16
#: templates/js/translated/barcode.js:435 templates/js/translated/bom.js:552
-#: templates/js/translated/bom.js:687 templates/js/translated/bom.js:805
+#: templates/js/translated/bom.js:689 templates/js/translated/bom.js:799
#: templates/js/translated/build.js:1153 templates/js/translated/build.js:1647
#: templates/js/translated/build.js:2083 templates/js/translated/build.js:2481
-#: templates/js/translated/company.js:252
-#: templates/js/translated/company.js:486
-#: templates/js/translated/company.js:607
-#: templates/js/translated/company.js:866 templates/js/translated/order.js:100
+#: templates/js/translated/company.js:253
+#: templates/js/translated/company.js:482
+#: templates/js/translated/company.js:592
+#: templates/js/translated/company.js:851 templates/js/translated/order.js:100
#: templates/js/translated/order.js:883 templates/js/translated/order.js:1315
#: templates/js/translated/order.js:1873 templates/js/translated/order.js:2819
#: templates/js/translated/order.js:3217 templates/js/translated/order.js:3432
-#: templates/js/translated/part.js:1067 templates/js/translated/part.js:1137
-#: templates/js/translated/part.js:1333 templates/js/translated/stock.js:531
-#: templates/js/translated/stock.js:696 templates/js/translated/stock.js:903
-#: templates/js/translated/stock.js:1633 templates/js/translated/stock.js:2376
-#: templates/js/translated/stock.js:2571 templates/js/translated/stock.js:2705
+#: templates/js/translated/part.js:1111 templates/js/translated/part.js:1181
+#: templates/js/translated/part.js:1377 templates/js/translated/stock.js:530
+#: templates/js/translated/stock.js:695 templates/js/translated/stock.js:902
+#: templates/js/translated/stock.js:1643 templates/js/translated/stock.js:2386
+#: templates/js/translated/stock.js:2581 templates/js/translated/stock.js:2715
msgid "Part"
msgstr ""
@@ -768,12 +767,12 @@ msgstr ""
msgid "Batch code for this build output"
msgstr ""
-#: build/models.py:282 order/models.py:137 part/models.py:932
+#: build/models.py:282 order/models.py:138 part/models.py:932
#: part/templates/part/part_base.html:305 templates/js/translated/order.js:2489
msgid "Creation Date"
msgstr ""
-#: build/models.py:286 order/models.py:660
+#: build/models.py:286 order/models.py:676
msgid "Target completion date"
msgstr ""
@@ -781,7 +780,7 @@ msgstr ""
msgid "Target date for build completion. Build will be overdue after this date."
msgstr ""
-#: build/models.py:290 order/models.py:331
+#: build/models.py:290 order/models.py:336
#: templates/js/translated/build.js:2558
msgid "Completion Date"
msgstr ""
@@ -799,7 +798,7 @@ msgid "User who issued this build order"
msgstr ""
#: build/models.py:313 build/templates/build/build_base.html:190
-#: build/templates/build/detail.html:115 order/models.py:151
+#: build/templates/build/detail.html:115 order/models.py:152
#: order/templates/order/order_base.html:176
#: order/templates/order/sales_order_base.html:183 part/models.py:936
#: report/templates/report/inventree_build_order_base.html:159
@@ -822,20 +821,20 @@ msgstr "외부 링크"
#: build/models.py:324 build/serializers.py:374
#: build/templates/build/sidebar.html:21 company/models.py:134
#: company/models.py:519 company/templates/company/sidebar.html:25
-#: order/models.py:155 order/models.py:918 order/models.py:1213
+#: order/models.py:156 order/models.py:934 order/models.py:1229
#: order/templates/order/po_sidebar.html:11
#: order/templates/order/so_sidebar.html:17 part/models.py:921
#: part/templates/part/part_sidebar.html:59
#: report/templates/report/inventree_build_order_base.html:173
-#: stock/models.py:713 stock/models.py:1985 stock/models.py:2093
+#: stock/models.py:713 stock/models.py:1989 stock/models.py:2097
#: stock/serializers.py:315 stock/serializers.py:444 stock/serializers.py:486
-#: stock/serializers.py:772 stock/serializers.py:871 stock/serializers.py:1003
+#: stock/serializers.py:759 stock/serializers.py:858 stock/serializers.py:990
#: stock/templates/stock/stock_sidebar.html:25
-#: templates/js/translated/barcode.js:100 templates/js/translated/bom.js:1044
-#: templates/js/translated/company.js:962 templates/js/translated/order.js:2040
+#: templates/js/translated/barcode.js:100 templates/js/translated/bom.js:1038
+#: templates/js/translated/company.js:947 templates/js/translated/order.js:2040
#: templates/js/translated/order.js:2191 templates/js/translated/order.js:2687
#: templates/js/translated/order.js:3632 templates/js/translated/order.js:4030
-#: templates/js/translated/stock.js:1307 templates/js/translated/stock.js:1916
+#: templates/js/translated/stock.js:1317 templates/js/translated/stock.js:1926
msgid "Notes"
msgstr ""
@@ -855,44 +854,44 @@ msgstr ""
msgid "Build output does not match Build Order"
msgstr ""
-#: build/models.py:1108
+#: build/models.py:1111
msgid "Build item must specify a build output, as master part is marked as trackable"
msgstr ""
-#: build/models.py:1117
+#: build/models.py:1120
#, python-brace-format
msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})"
msgstr ""
-#: build/models.py:1127
+#: build/models.py:1130
msgid "Stock item is over-allocated"
msgstr ""
-#: build/models.py:1133 order/models.py:1372
+#: build/models.py:1136 order/models.py:1388
msgid "Allocation quantity must be greater than zero"
msgstr ""
-#: build/models.py:1139
+#: build/models.py:1142
msgid "Quantity must be 1 for serialized stock"
msgstr ""
-#: build/models.py:1196
+#: build/models.py:1199
msgid "Selected stock item not found in BOM"
msgstr ""
-#: build/models.py:1265 stock/templates/stock/item_base.html:177
+#: build/models.py:1268 stock/templates/stock/item_base.html:177
#: templates/InvenTree/search.html:137 templates/js/translated/build.js:2454
#: templates/navbar.html:38
msgid "Build"
msgstr ""
-#: build/models.py:1266
+#: build/models.py:1269
msgid "Build to allocate parts"
msgstr ""
-#: build/models.py:1282 build/serializers.py:603 order/serializers.py:994
-#: order/serializers.py:1015 stock/serializers.py:382 stock/serializers.py:703
-#: stock/serializers.py:829 stock/templates/stock/item_base.html:10
+#: build/models.py:1285 build/serializers.py:603 order/serializers.py:996
+#: order/serializers.py:1017 stock/serializers.py:382 stock/serializers.py:690
+#: stock/serializers.py:816 stock/templates/stock/item_base.html:10
#: stock/templates/stock/item_base.html:23
#: stock/templates/stock/item_base.html:199
#: templates/js/translated/build.js:738 templates/js/translated/build.js:743
@@ -900,22 +899,22 @@ msgstr ""
#: templates/js/translated/order.js:101 templates/js/translated/order.js:2820
#: templates/js/translated/order.js:3124 templates/js/translated/order.js:3129
#: templates/js/translated/order.js:3224 templates/js/translated/order.js:3314
-#: templates/js/translated/stock.js:532 templates/js/translated/stock.js:697
-#: templates/js/translated/stock.js:2449
+#: templates/js/translated/stock.js:531 templates/js/translated/stock.js:696
+#: templates/js/translated/stock.js:2459
msgid "Stock Item"
msgstr ""
-#: build/models.py:1283
+#: build/models.py:1286
msgid "Source stock item"
msgstr ""
-#: build/models.py:1295 build/serializers.py:183
+#: build/models.py:1298 build/serializers.py:183
#: build/templates/build/build_base.html:82
-#: build/templates/build/detail.html:34 common/models.py:1536
+#: build/templates/build/detail.html:34 common/models.py:1543
#: company/forms.py:36 company/templates/company/supplier_part.html:258
-#: order/models.py:909 order/models.py:1412 order/serializers.py:1134
-#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:68
-#: part/forms.py:83 part/forms.py:98 part/models.py:2561
+#: order/models.py:925 order/models.py:1428 order/serializers.py:1136
+#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:59
+#: part/forms.py:74 part/forms.py:89 part/models.py:2549
#: part/templates/part/detail.html:935 part/templates/part/detail.html:1021
#: part/templates/part/part_pricing.html:16
#: part/templates/part/upload_bom.html:53
@@ -926,8 +925,8 @@ msgstr ""
#: report/templates/report/inventree_test_report_base.html:139
#: stock/serializers.py:279 stock/templates/stock/item_base.html:292
#: stock/templates/stock/item_base.html:300
-#: templates/js/translated/barcode.js:437 templates/js/translated/bom.js:689
-#: templates/js/translated/bom.js:866 templates/js/translated/build.js:422
+#: templates/js/translated/barcode.js:437 templates/js/translated/bom.js:691
+#: templates/js/translated/bom.js:860 templates/js/translated/build.js:422
#: templates/js/translated/build.js:574 templates/js/translated/build.js:765
#: templates/js/translated/build.js:1175 templates/js/translated/build.js:1673
#: templates/js/translated/build.js:2086
@@ -937,23 +936,23 @@ msgstr ""
#: templates/js/translated/order.js:2821 templates/js/translated/order.js:3143
#: templates/js/translated/order.js:3231 templates/js/translated/order.js:3320
#: templates/js/translated/order.js:3454 templates/js/translated/order.js:3965
-#: templates/js/translated/part.js:967 templates/js/translated/part.js:1969
-#: templates/js/translated/part.js:2200 templates/js/translated/part.js:2234
-#: templates/js/translated/part.js:2312 templates/js/translated/stock.js:403
-#: templates/js/translated/stock.js:557 templates/js/translated/stock.js:727
-#: templates/js/translated/stock.js:2498 templates/js/translated/stock.js:2583
+#: templates/js/translated/part.js:1011 templates/js/translated/part.js:2065
+#: templates/js/translated/part.js:2296 templates/js/translated/part.js:2330
+#: templates/js/translated/part.js:2408 templates/js/translated/stock.js:402
+#: templates/js/translated/stock.js:556 templates/js/translated/stock.js:726
+#: templates/js/translated/stock.js:2508 templates/js/translated/stock.js:2593
msgid "Quantity"
msgstr "수량"
-#: build/models.py:1296
+#: build/models.py:1299
msgid "Stock quantity to allocate to build"
msgstr ""
-#: build/models.py:1304
+#: build/models.py:1307
msgid "Install into"
msgstr ""
-#: build/models.py:1305
+#: build/models.py:1308
msgid "Destination stock item"
msgstr ""
@@ -982,9 +981,9 @@ msgstr ""
msgid "Enter quantity for build output"
msgstr ""
-#: build/serializers.py:198 build/serializers.py:623 order/models.py:363
-#: order/serializers.py:280 order/serializers.py:435 part/serializers.py:512
-#: part/serializers.py:956 stock/models.py:470 stock/models.py:1239
+#: build/serializers.py:198 build/serializers.py:623 order/models.py:368
+#: order/serializers.py:280 order/serializers.py:435 part/serializers.py:514
+#: part/serializers.py:958 stock/models.py:470 stock/models.py:1239
#: stock/serializers.py:288
msgid "Quantity must be greater than zero"
msgstr "수량 값은 0보다 커야 합니다"
@@ -997,9 +996,9 @@ msgstr ""
msgid "Integer quantity required, as the bill of materials contains trackable parts"
msgstr ""
-#: build/serializers.py:222 order/serializers.py:448 order/serializers.py:1138
+#: build/serializers.py:222 order/serializers.py:448 order/serializers.py:1140
#: stock/serializers.py:297 templates/js/translated/order.js:1186
-#: templates/js/translated/stock.js:238 templates/js/translated/stock.js:404
+#: templates/js/translated/stock.js:237 templates/js/translated/stock.js:403
msgid "Serial Numbers"
msgstr "일련번호"
@@ -1015,7 +1014,7 @@ msgstr ""
msgid "Automatically allocate required items with matching serial numbers"
msgstr ""
-#: build/serializers.py:268 stock/api.py:552
+#: build/serializers.py:268 stock/api.py:553
msgid "The following serial numbers already exist"
msgstr ""
@@ -1025,16 +1024,16 @@ msgstr ""
#: build/serializers.py:356 order/serializers.py:421 order/serializers.py:525
#: stock/serializers.py:308 stock/serializers.py:439 stock/serializers.py:481
-#: stock/serializers.py:864 stock/serializers.py:1097
+#: stock/serializers.py:851 stock/serializers.py:1084
#: stock/templates/stock/item_base.html:390
#: templates/js/translated/barcode.js:436
#: templates/js/translated/barcode.js:618 templates/js/translated/build.js:750
#: templates/js/translated/build.js:1685 templates/js/translated/order.js:1213
#: templates/js/translated/order.js:3136 templates/js/translated/order.js:3239
#: templates/js/translated/order.js:3247 templates/js/translated/order.js:3328
-#: templates/js/translated/part.js:180 templates/js/translated/stock.js:533
-#: templates/js/translated/stock.js:698 templates/js/translated/stock.js:905
-#: templates/js/translated/stock.js:1787 templates/js/translated/stock.js:2390
+#: templates/js/translated/part.js:180 templates/js/translated/stock.js:532
+#: templates/js/translated/stock.js:697 templates/js/translated/stock.js:904
+#: templates/js/translated/stock.js:1797 templates/js/translated/stock.js:2400
msgid "Location"
msgstr "위치"
@@ -1043,12 +1042,12 @@ msgid "Location for completed build outputs"
msgstr ""
#: build/serializers.py:363 build/templates/build/build_base.html:142
-#: build/templates/build/detail.html:62 order/models.py:654
+#: build/templates/build/detail.html:62 order/models.py:670
#: order/serializers.py:458 stock/templates/stock/item_base.html:423
#: templates/js/translated/barcode.js:182 templates/js/translated/build.js:2510
#: templates/js/translated/order.js:1320 templates/js/translated/order.js:1660
-#: templates/js/translated/order.js:2481 templates/js/translated/stock.js:1762
-#: templates/js/translated/stock.js:2467 templates/js/translated/stock.js:2599
+#: templates/js/translated/order.js:2481 templates/js/translated/stock.js:1772
+#: templates/js/translated/stock.js:2477 templates/js/translated/stock.js:2609
msgid "Status"
msgstr "상태"
@@ -1108,8 +1107,8 @@ msgstr ""
msgid "No build outputs have been created for this build order"
msgstr ""
-#: build/serializers.py:535 build/serializers.py:580 part/models.py:2679
-#: part/models.py:2813
+#: build/serializers.py:535 build/serializers.py:580 part/models.py:2667
+#: part/models.py:2801
msgid "BOM Item"
msgstr ""
@@ -1125,11 +1124,11 @@ msgstr ""
msgid "bom_item.part must point to the same part as the build order"
msgstr ""
-#: build/serializers.py:609 stock/serializers.py:716
+#: build/serializers.py:609 stock/serializers.py:703
msgid "Item must be in stock"
msgstr ""
-#: build/serializers.py:667 order/serializers.py:1052
+#: build/serializers.py:667 order/serializers.py:1054
#, python-brace-format
msgid "Available quantity ({q}) exceeded"
msgstr ""
@@ -1146,7 +1145,7 @@ msgstr ""
msgid "This stock item has already been allocated to this build output"
msgstr ""
-#: build/serializers.py:708 order/serializers.py:1298
+#: build/serializers.py:708 order/serializers.py:1300
msgid "Allocation items must be provided"
msgstr ""
@@ -1178,10 +1177,19 @@ msgstr ""
msgid "Allow allocation of substitute parts"
msgstr ""
-#: build/tasks.py:96
+#: build/tasks.py:100
msgid "Stock required for build order"
msgstr ""
+#: build/tasks.py:118
+msgid "Overdue Build Order"
+msgstr ""
+
+#: build/tasks.py:123
+#, python-brace-format
+msgid "Build order {bo} is now overdue"
+msgstr ""
+
#: build/templates/build/build_base.html:39
#: order/templates/order/order_base.html:28
#: order/templates/order/sales_order_base.html:38
@@ -1244,13 +1252,13 @@ msgid "Stock has not been fully allocated to this Build Order"
msgstr ""
#: build/templates/build/build_base.html:151
-#: build/templates/build/detail.html:131 order/models.py:922
+#: build/templates/build/detail.html:131 order/models.py:938
#: order/templates/order/order_base.html:162
#: order/templates/order/sales_order_base.html:164
#: report/templates/report/inventree_build_order_base.html:126
#: templates/js/translated/build.js:2550 templates/js/translated/order.js:1677
#: templates/js/translated/order.js:1987 templates/js/translated/order.js:2497
-#: templates/js/translated/order.js:3517 templates/js/translated/part.js:971
+#: templates/js/translated/order.js:3517 templates/js/translated/part.js:1015
msgid "Target Date"
msgstr ""
@@ -1277,13 +1285,14 @@ msgid "Completed"
msgstr ""
#: build/templates/build/build_base.html:176
-#: build/templates/build/detail.html:94 order/models.py:1100
-#: order/models.py:1185 order/models.py:1320
+#: build/templates/build/detail.html:94 order/models.py:1116
+#: order/models.py:1201 order/models.py:1336
#: order/templates/order/sales_order_base.html:9
#: order/templates/order/sales_order_base.html:28
#: report/templates/report/inventree_build_order_base.html:136
#: report/templates/report/inventree_so_report.html:77
#: stock/templates/stock/item_base.html:370
+#: templates/email/overdue_sales_order.html:15
#: templates/js/translated/order.js:2436
msgid "Sales Order"
msgstr ""
@@ -1319,7 +1328,7 @@ msgstr ""
msgid "Stock can be taken from any available location."
msgstr ""
-#: build/templates/build/detail.html:49 order/models.py:1034
+#: build/templates/build/detail.html:49 order/models.py:1050
#: templates/js/translated/order.js:1321 templates/js/translated/order.js:2029
msgid "Destination"
msgstr ""
@@ -1336,8 +1345,8 @@ msgstr ""
#: stock/templates/stock/item_base.html:170
#: templates/js/translated/build.js:1179
#: templates/js/translated/model_renderers.js:112
-#: templates/js/translated/stock.js:971 templates/js/translated/stock.js:1776
-#: templates/js/translated/stock.js:2606
+#: templates/js/translated/stock.js:970 templates/js/translated/stock.js:1786
+#: templates/js/translated/stock.js:2616
#: templates/js/translated/table_filters.js:151
#: templates/js/translated/table_filters.js:242
msgid "Batch"
@@ -1716,7 +1725,7 @@ msgstr ""
msgid "Copy category parameter templates when creating a part"
msgstr ""
-#: common/models.py:820 part/models.py:2372 report/models.py:157
+#: common/models.py:820 part/models.py:2360 report/models.py:157
#: templates/js/translated/table_filters.js:38
#: templates/js/translated/table_filters.js:444
msgid "Template"
@@ -1726,7 +1735,7 @@ msgstr ""
msgid "Parts are templates by default"
msgstr ""
-#: common/models.py:827 part/models.py:884 templates/js/translated/bom.js:1390
+#: common/models.py:827 part/models.py:884 templates/js/translated/bom.js:1384
#: templates/js/translated/table_filters.js:168
#: templates/js/translated/table_filters.js:460
msgid "Assembly"
@@ -1880,7 +1889,7 @@ msgid "Default page size for PDF reports"
msgstr "PDF 보고서 기본 페이지 크기"
#: common/models.py:968
-msgid "Test Reports"
+msgid "Enable Test Reports"
msgstr ""
#: common/models.py:969
@@ -1888,568 +1897,576 @@ msgid "Enable generation of test reports"
msgstr ""
#: common/models.py:975
-msgid "Batch Code Template"
+msgid "Attach Test Reports"
msgstr ""
#: common/models.py:976
-msgid "Template for generating default batch codes for stock items"
-msgstr ""
-
-#: common/models.py:981
-msgid "Stock Expiry"
+msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item"
msgstr ""
#: common/models.py:982
-msgid "Enable stock expiry functionality"
+msgid "Batch Code Template"
+msgstr ""
+
+#: common/models.py:983
+msgid "Template for generating default batch codes for stock items"
msgstr ""
#: common/models.py:988
-msgid "Sell Expired Stock"
+msgid "Stock Expiry"
msgstr ""
#: common/models.py:989
-msgid "Allow sale of expired stock"
+msgid "Enable stock expiry functionality"
msgstr ""
#: common/models.py:995
-msgid "Stock Stale Time"
+msgid "Sell Expired Stock"
msgstr ""
#: common/models.py:996
-msgid "Number of days stock items are considered stale before expiring"
+msgid "Allow sale of expired stock"
msgstr ""
-#: common/models.py:998
-msgid "days"
+#: common/models.py:1002
+msgid "Stock Stale Time"
msgstr ""
#: common/models.py:1003
-msgid "Build Expired Stock"
+msgid "Number of days stock items are considered stale before expiring"
msgstr ""
-#: common/models.py:1004
-msgid "Allow building with expired stock"
+#: common/models.py:1005
+msgid "days"
msgstr ""
#: common/models.py:1010
-msgid "Stock Ownership Control"
+msgid "Build Expired Stock"
msgstr ""
#: common/models.py:1011
-msgid "Enable ownership control over stock locations and items"
+msgid "Allow building with expired stock"
msgstr ""
#: common/models.py:1017
-msgid "Build Order Reference Prefix"
+msgid "Stock Ownership Control"
msgstr ""
#: common/models.py:1018
-msgid "Prefix value for build order reference"
-msgstr ""
-
-#: common/models.py:1023
-msgid "Build Order Reference Regex"
+msgid "Enable ownership control over stock locations and items"
msgstr ""
#: common/models.py:1024
+msgid "Build Order Reference Prefix"
+msgstr ""
+
+#: common/models.py:1025
+msgid "Prefix value for build order reference"
+msgstr ""
+
+#: common/models.py:1030
+msgid "Build Order Reference Regex"
+msgstr ""
+
+#: common/models.py:1031
msgid "Regular expression pattern for matching build order reference"
msgstr ""
-#: common/models.py:1028
+#: common/models.py:1035
msgid "Sales Order Reference Prefix"
msgstr ""
-#: common/models.py:1029
+#: common/models.py:1036
msgid "Prefix value for sales order reference"
msgstr ""
-#: common/models.py:1034
+#: common/models.py:1041
msgid "Sales Order Default Shipment"
msgstr ""
-#: common/models.py:1035
+#: common/models.py:1042
msgid "Enable creation of default shipment with sales orders"
msgstr ""
-#: common/models.py:1041
+#: common/models.py:1048
msgid "Purchase Order Reference Prefix"
msgstr ""
-#: common/models.py:1042
+#: common/models.py:1049
msgid "Prefix value for purchase order reference"
msgstr ""
-#: common/models.py:1048
+#: common/models.py:1055
msgid "Enable password forgot"
msgstr ""
-#: common/models.py:1049
+#: common/models.py:1056
msgid "Enable password forgot function on the login pages"
msgstr ""
-#: common/models.py:1055
+#: common/models.py:1062
msgid "Enable registration"
msgstr ""
-#: common/models.py:1056
+#: common/models.py:1063
msgid "Enable self-registration for users on the login pages"
msgstr ""
-#: common/models.py:1062
+#: common/models.py:1069
msgid "Enable SSO"
msgstr "SSO 활성화"
-#: common/models.py:1063
+#: common/models.py:1070
msgid "Enable SSO on the login pages"
msgstr "로그인 페이지에서 SSO 활성화"
-#: common/models.py:1069
+#: common/models.py:1076
msgid "Email required"
msgstr "이메일 필요"
-#: common/models.py:1070
+#: common/models.py:1077
msgid "Require user to supply mail on signup"
msgstr ""
-#: common/models.py:1076
+#: common/models.py:1083
msgid "Auto-fill SSO users"
msgstr ""
-#: common/models.py:1077
+#: common/models.py:1084
msgid "Automatically fill out user-details from SSO account-data"
msgstr ""
-#: common/models.py:1083
+#: common/models.py:1090
msgid "Mail twice"
msgstr "두 번 보내기"
-#: common/models.py:1084
+#: common/models.py:1091
msgid "On signup ask users twice for their mail"
msgstr ""
-#: common/models.py:1090
+#: common/models.py:1097
msgid "Password twice"
msgstr ""
-#: common/models.py:1091
+#: common/models.py:1098
msgid "On signup ask users twice for their password"
msgstr ""
-#: common/models.py:1097
+#: common/models.py:1104
msgid "Group on signup"
msgstr ""
-#: common/models.py:1098
+#: common/models.py:1105
msgid "Group to which new users are assigned on registration"
msgstr ""
-#: common/models.py:1104
+#: common/models.py:1111
msgid "Enforce MFA"
msgstr ""
-#: common/models.py:1105
+#: common/models.py:1112
msgid "Users must use multifactor security."
msgstr ""
-#: common/models.py:1111
+#: common/models.py:1118
msgid "Check plugins on startup"
msgstr ""
-#: common/models.py:1112
+#: common/models.py:1119
msgid "Check that all plugins are installed on startup - enable in container enviroments"
msgstr ""
-#: common/models.py:1120
+#: common/models.py:1127
msgid "Enable URL integration"
msgstr ""
-#: common/models.py:1121
+#: common/models.py:1128
msgid "Enable plugins to add URL routes"
msgstr ""
-#: common/models.py:1128
+#: common/models.py:1135
msgid "Enable navigation integration"
msgstr ""
-#: common/models.py:1129
+#: common/models.py:1136
msgid "Enable plugins to integrate into navigation"
msgstr ""
-#: common/models.py:1136
+#: common/models.py:1143
msgid "Enable app integration"
msgstr ""
-#: common/models.py:1137
+#: common/models.py:1144
msgid "Enable plugins to add apps"
msgstr ""
-#: common/models.py:1144
+#: common/models.py:1151
msgid "Enable schedule integration"
msgstr ""
-#: common/models.py:1145
+#: common/models.py:1152
msgid "Enable plugins to run scheduled tasks"
msgstr ""
-#: common/models.py:1152
+#: common/models.py:1159
msgid "Enable event integration"
msgstr ""
-#: common/models.py:1153
+#: common/models.py:1160
msgid "Enable plugins to respond to internal events"
msgstr ""
-#: common/models.py:1170 common/models.py:1492
+#: common/models.py:1177 common/models.py:1499
msgid "Settings key (must be unique - case insensitive"
msgstr ""
-#: common/models.py:1192
+#: common/models.py:1199
msgid "Show subscribed parts"
msgstr ""
-#: common/models.py:1193
+#: common/models.py:1200
msgid "Show subscribed parts on the homepage"
msgstr ""
-#: common/models.py:1199
+#: common/models.py:1206
msgid "Show subscribed categories"
msgstr ""
-#: common/models.py:1200
+#: common/models.py:1207
msgid "Show subscribed part categories on the homepage"
msgstr ""
-#: common/models.py:1206
+#: common/models.py:1213
msgid "Show latest parts"
msgstr ""
-#: common/models.py:1207
+#: common/models.py:1214
msgid "Show latest parts on the homepage"
msgstr ""
-#: common/models.py:1213
+#: common/models.py:1220
msgid "Recent Part Count"
msgstr ""
-#: common/models.py:1214
+#: common/models.py:1221
msgid "Number of recent parts to display on index page"
msgstr ""
-#: common/models.py:1220
+#: common/models.py:1227
msgid "Show unvalidated BOMs"
msgstr ""
-#: common/models.py:1221
+#: common/models.py:1228
msgid "Show BOMs that await validation on the homepage"
msgstr ""
-#: common/models.py:1227
+#: common/models.py:1234
msgid "Show recent stock changes"
msgstr ""
-#: common/models.py:1228
+#: common/models.py:1235
msgid "Show recently changed stock items on the homepage"
msgstr ""
-#: common/models.py:1234
+#: common/models.py:1241
msgid "Recent Stock Count"
msgstr ""
-#: common/models.py:1235
+#: common/models.py:1242
msgid "Number of recent stock items to display on index page"
msgstr ""
-#: common/models.py:1241
+#: common/models.py:1248
msgid "Show low stock"
msgstr ""
-#: common/models.py:1242
+#: common/models.py:1249
msgid "Show low stock items on the homepage"
msgstr ""
-#: common/models.py:1248
+#: common/models.py:1255
msgid "Show depleted stock"
msgstr ""
-#: common/models.py:1249
+#: common/models.py:1256
msgid "Show depleted stock items on the homepage"
msgstr ""
-#: common/models.py:1255
+#: common/models.py:1262
msgid "Show needed stock"
msgstr ""
-#: common/models.py:1256
+#: common/models.py:1263
msgid "Show stock items needed for builds on the homepage"
msgstr ""
-#: common/models.py:1262
+#: common/models.py:1269
msgid "Show expired stock"
msgstr ""
-#: common/models.py:1263
+#: common/models.py:1270
msgid "Show expired stock items on the homepage"
msgstr ""
-#: common/models.py:1269
+#: common/models.py:1276
msgid "Show stale stock"
msgstr ""
-#: common/models.py:1270
+#: common/models.py:1277
msgid "Show stale stock items on the homepage"
msgstr ""
-#: common/models.py:1276
+#: common/models.py:1283
msgid "Show pending builds"
msgstr ""
-#: common/models.py:1277
+#: common/models.py:1284
msgid "Show pending builds on the homepage"
msgstr ""
-#: common/models.py:1283
+#: common/models.py:1290
msgid "Show overdue builds"
msgstr ""
-#: common/models.py:1284
+#: common/models.py:1291
msgid "Show overdue builds on the homepage"
msgstr ""
-#: common/models.py:1290
+#: common/models.py:1297
msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:1291
+#: common/models.py:1298
msgid "Show outstanding POs on the homepage"
msgstr ""
-#: common/models.py:1297
+#: common/models.py:1304
msgid "Show overdue POs"
msgstr ""
-#: common/models.py:1298
+#: common/models.py:1305
msgid "Show overdue POs on the homepage"
msgstr ""
-#: common/models.py:1304
+#: common/models.py:1311
msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:1305
+#: common/models.py:1312
msgid "Show outstanding SOs on the homepage"
msgstr ""
-#: common/models.py:1311
+#: common/models.py:1318
msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:1312
+#: common/models.py:1319
msgid "Show overdue SOs on the homepage"
msgstr ""
-#: common/models.py:1317
+#: common/models.py:1324
msgid "Enable label printing"
msgstr ""
-#: common/models.py:1318
+#: common/models.py:1325
msgid "Enable label printing from the web interface"
msgstr ""
-#: common/models.py:1324
+#: common/models.py:1331
msgid "Inline label display"
msgstr ""
-#: common/models.py:1325
+#: common/models.py:1332
msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:1331
+#: common/models.py:1338
msgid "Inline report display"
msgstr ""
-#: common/models.py:1332
+#: common/models.py:1339
msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:1338
+#: common/models.py:1345
msgid "Search Parts"
msgstr ""
-#: common/models.py:1339
+#: common/models.py:1346
msgid "Display parts in search preview window"
msgstr ""
-#: common/models.py:1345
+#: common/models.py:1352
msgid "Seach Supplier Parts"
msgstr ""
-#: common/models.py:1346
+#: common/models.py:1353
msgid "Display supplier parts in search preview window"
msgstr ""
-#: common/models.py:1352
+#: common/models.py:1359
msgid "Search Manufacturer Parts"
msgstr ""
-#: common/models.py:1353
+#: common/models.py:1360
msgid "Display manufacturer parts in search preview window"
msgstr ""
-#: common/models.py:1359
+#: common/models.py:1366
msgid "Hide Inactive Parts"
msgstr ""
-#: common/models.py:1360
+#: common/models.py:1367
msgid "Excluded inactive parts from search preview window"
msgstr ""
-#: common/models.py:1366
+#: common/models.py:1373
msgid "Search Categories"
msgstr ""
-#: common/models.py:1367
+#: common/models.py:1374
msgid "Display part categories in search preview window"
msgstr ""
-#: common/models.py:1373
+#: common/models.py:1380
msgid "Search Stock"
msgstr ""
-#: common/models.py:1374
+#: common/models.py:1381
msgid "Display stock items in search preview window"
msgstr ""
-#: common/models.py:1380
+#: common/models.py:1387
msgid "Hide Unavailable Stock Items"
msgstr ""
-#: common/models.py:1381
+#: common/models.py:1388
msgid "Exclude stock items which are not available from the search preview window"
msgstr ""
-#: common/models.py:1387
+#: common/models.py:1394
msgid "Search Locations"
msgstr ""
-#: common/models.py:1388
+#: common/models.py:1395
msgid "Display stock locations in search preview window"
msgstr ""
-#: common/models.py:1394
+#: common/models.py:1401
msgid "Search Companies"
msgstr ""
-#: common/models.py:1395
+#: common/models.py:1402
msgid "Display companies in search preview window"
msgstr ""
-#: common/models.py:1401
+#: common/models.py:1408
msgid "Search Purchase Orders"
msgstr ""
-#: common/models.py:1402
+#: common/models.py:1409
msgid "Display purchase orders in search preview window"
msgstr ""
-#: common/models.py:1408
+#: common/models.py:1415
msgid "Exclude Inactive Purchase Orders"
msgstr ""
-#: common/models.py:1409
+#: common/models.py:1416
msgid "Exclude inactive purchase orders from search preview window"
msgstr ""
-#: common/models.py:1415
+#: common/models.py:1422
msgid "Search Sales Orders"
msgstr ""
-#: common/models.py:1416
+#: common/models.py:1423
msgid "Display sales orders in search preview window"
msgstr ""
-#: common/models.py:1422
+#: common/models.py:1429
msgid "Exclude Inactive Sales Orders"
msgstr ""
-#: common/models.py:1423
+#: common/models.py:1430
msgid "Exclude inactive sales orders from search preview window"
msgstr ""
-#: common/models.py:1429
+#: common/models.py:1436
msgid "Search Preview Results"
msgstr ""
-#: common/models.py:1430
+#: common/models.py:1437
msgid "Number of results to show in each section of the search preview window"
msgstr ""
-#: common/models.py:1436
+#: common/models.py:1443
msgid "Show Quantity in Forms"
msgstr ""
-#: common/models.py:1437
+#: common/models.py:1444
msgid "Display available part quantity in some forms"
msgstr ""
-#: common/models.py:1443
+#: common/models.py:1450
msgid "Escape Key Closes Forms"
msgstr ""
-#: common/models.py:1444
+#: common/models.py:1451
msgid "Use the escape key to close modal forms"
msgstr ""
-#: common/models.py:1450
+#: common/models.py:1457
msgid "Fixed Navbar"
msgstr ""
-#: common/models.py:1451
+#: common/models.py:1458
msgid "The navbar position is fixed to the top of the screen"
msgstr ""
-#: common/models.py:1457
+#: common/models.py:1464
msgid "Date Format"
msgstr ""
-#: common/models.py:1458
+#: common/models.py:1465
msgid "Preferred format for displaying dates"
msgstr ""
-#: common/models.py:1472 part/templates/part/detail.html:39
+#: common/models.py:1479 part/templates/part/detail.html:39
msgid "Part Scheduling"
msgstr ""
-#: common/models.py:1473
+#: common/models.py:1480
msgid "Display part scheduling information"
msgstr ""
-#: common/models.py:1537 company/forms.py:37
+#: common/models.py:1544 company/forms.py:37
msgid "Price break quantity"
msgstr ""
-#: common/models.py:1544 company/serializers.py:288
-#: company/templates/company/supplier_part.html:263 order/models.py:949
-#: templates/js/translated/part.js:998 templates/js/translated/part.js:1974
+#: common/models.py:1551 company/serializers.py:290
+#: company/templates/company/supplier_part.html:263 order/models.py:965
+#: templates/js/translated/part.js:1042 templates/js/translated/part.js:2070
msgid "Price"
msgstr ""
-#: common/models.py:1545
+#: common/models.py:1552
msgid "Unit price at specified quantity"
msgstr ""
-#: common/models.py:1705 common/models.py:1883
+#: common/models.py:1712 common/models.py:1890
msgid "Endpoint"
msgstr ""
-#: common/models.py:1706
+#: common/models.py:1713
msgid "Endpoint at which this webhook is received"
msgstr ""
-#: common/models.py:1715
+#: common/models.py:1722
msgid "Name for this webhook"
msgstr ""
-#: common/models.py:1720 part/models.py:911 plugin/models.py:99
+#: common/models.py:1727 part/models.py:911 plugin/models.py:99
#: templates/js/translated/table_filters.js:34
#: templates/js/translated/table_filters.js:96
#: templates/js/translated/table_filters.js:308
@@ -2457,79 +2474,89 @@ msgstr ""
msgid "Active"
msgstr ""
-#: common/models.py:1721
+#: common/models.py:1728
msgid "Is this webhook active"
msgstr ""
-#: common/models.py:1735
+#: common/models.py:1742
msgid "Token"
msgstr ""
-#: common/models.py:1736
+#: common/models.py:1743
msgid "Token for access"
msgstr ""
-#: common/models.py:1743
+#: common/models.py:1750
msgid "Secret"
msgstr ""
-#: common/models.py:1744
+#: common/models.py:1751
msgid "Shared secret for HMAC"
msgstr ""
-#: common/models.py:1850
+#: common/models.py:1857
msgid "Message ID"
msgstr ""
-#: common/models.py:1851
+#: common/models.py:1858
msgid "Unique identifier for this message"
msgstr ""
-#: common/models.py:1859
+#: common/models.py:1866
msgid "Host"
msgstr ""
-#: common/models.py:1860
+#: common/models.py:1867
msgid "Host from which this message was received"
msgstr ""
-#: common/models.py:1867
+#: common/models.py:1874
msgid "Header"
msgstr ""
-#: common/models.py:1868
+#: common/models.py:1875
msgid "Header of this message"
msgstr ""
-#: common/models.py:1874
+#: common/models.py:1881
msgid "Body"
msgstr ""
-#: common/models.py:1875
+#: common/models.py:1882
msgid "Body of this message"
msgstr ""
-#: common/models.py:1884
+#: common/models.py:1891
msgid "Endpoint on which this message was received"
msgstr ""
-#: common/models.py:1889
+#: common/models.py:1896
msgid "Worked on"
msgstr ""
-#: common/models.py:1890
+#: common/models.py:1897
msgid "Was the work on this message finished?"
msgstr ""
+#: common/notifications.py:292
+#, python-brace-format
+msgid "New {verbose_name}"
+msgstr ""
+
+#: common/notifications.py:294
+#, python-brace-format
+msgid "A new {verbose_name} has been created and ,assigned to you"
+msgstr ""
+
#: common/views.py:87 order/templates/order/purchase_order_detail.html:23
-#: order/views.py:102 part/views.py:191
+#: order/views.py:102 part/views.py:116
#: templates/patterns/wizard/upload.html:37
msgid "Upload File"
msgstr "파일 업로드"
#: common/views.py:88 order/views.py:103
#: part/templates/part/import_wizard/ajax_match_fields.html:45
-#: part/views.py:192 templates/patterns/wizard/match_fields.html:51
+#: part/views.py:117 templates/patterns/wizard/match_fields.html:51
msgid "Match Fields"
msgstr ""
@@ -2545,19 +2572,19 @@ msgstr ""
msgid "Parts imported"
msgstr ""
-#: common/views.py:507 order/templates/order/order_wizard/match_parts.html:19
+#: common/views.py:511 order/templates/order/order_wizard/match_parts.html:19
#: part/templates/part/import_wizard/match_references.html:19
#: templates/patterns/wizard/match_fields.html:26
#: templates/patterns/wizard/upload.html:35
msgid "Previous Step"
msgstr ""
-#: company/forms.py:16 part/forms.py:21
+#: company/forms.py:16 part/forms.py:18
#: templates/InvenTree/settings/mixins/urls.html:14
msgid "URL"
msgstr ""
-#: company/forms.py:17 part/forms.py:22
+#: company/forms.py:17 part/forms.py:19
msgid "Image URL"
msgstr "이미지 URL"
@@ -2571,7 +2598,7 @@ msgstr ""
#: company/models.py:104 company/templates/company/company_base.html:100
#: templates/InvenTree/settings/plugin_settings.html:55
-#: templates/js/translated/company.js:405
+#: templates/js/translated/company.js:399
msgid "Website"
msgstr "웹사이트"
@@ -2644,9 +2671,9 @@ msgstr ""
msgid "Does this company manufacture parts?"
msgstr ""
-#: company/models.py:144 company/serializers.py:294
-#: company/templates/company/company_base.html:106 part/serializers.py:137
-#: part/serializers.py:168 stock/serializers.py:162
+#: company/models.py:144 company/serializers.py:296
+#: company/templates/company/company_base.html:106 part/serializers.py:139
+#: part/serializers.py:170 stock/serializers.py:162
msgid "Currency"
msgstr ""
@@ -2667,10 +2694,10 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:90
#: company/templates/company/supplier_part.html:103
#: stock/templates/stock/item_base.html:212
-#: templates/js/translated/company.js:389
-#: templates/js/translated/company.js:488
-#: templates/js/translated/company.js:632
-#: templates/js/translated/company.js:917 templates/js/translated/part.js:235
+#: templates/js/translated/company.js:383
+#: templates/js/translated/company.js:484
+#: templates/js/translated/company.js:617
+#: templates/js/translated/company.js:902 templates/js/translated/part.js:235
#: templates/js/translated/table_filters.js:411
msgid "Manufacturer"
msgstr ""
@@ -2681,11 +2708,11 @@ msgstr ""
#: company/models.py:266 company/templates/company/manufacturer_part.html:101
#: company/templates/company/supplier_part.html:111
-#: templates/js/translated/company.js:255
-#: templates/js/translated/company.js:487
-#: templates/js/translated/company.js:648
-#: templates/js/translated/company.js:935 templates/js/translated/order.js:1907
-#: templates/js/translated/part.js:246 templates/js/translated/part.js:956
+#: templates/js/translated/company.js:256
+#: templates/js/translated/company.js:483
+#: templates/js/translated/company.js:633
+#: templates/js/translated/company.js:920 templates/js/translated/order.js:1907
+#: templates/js/translated/part.js:246 templates/js/translated/part.js:1000
msgid "MPN"
msgstr ""
@@ -2714,9 +2741,9 @@ msgstr ""
#: company/models.py:361
#: report/templates/report/inventree_test_report_base.html:95
-#: stock/models.py:2080 templates/js/translated/company.js:540
-#: templates/js/translated/company.js:763 templates/js/translated/part.js:776
-#: templates/js/translated/stock.js:1294
+#: stock/models.py:2084 templates/js/translated/company.js:531
+#: templates/js/translated/company.js:748 templates/js/translated/part.js:820
+#: templates/js/translated/stock.js:1304
msgid "Value"
msgstr ""
@@ -2724,10 +2751,10 @@ msgstr ""
msgid "Parameter value"
msgstr ""
-#: company/models.py:368 part/models.py:878 part/models.py:2339
+#: company/models.py:368 part/models.py:878 part/models.py:2327
#: part/templates/part/part_base.html:280
#: templates/InvenTree/settings/settings.html:351
-#: templates/js/translated/company.js:769 templates/js/translated/part.js:782
+#: templates/js/translated/company.js:754 templates/js/translated/part.js:826
msgid "Units"
msgstr ""
@@ -2740,13 +2767,14 @@ msgid "Linked manufacturer part must reference the same base part"
msgstr ""
#: company/models.py:487 company/templates/company/company_base.html:81
-#: company/templates/company/supplier_part.html:87 order/models.py:303
+#: company/templates/company/supplier_part.html:87 order/models.py:308
#: order/templates/order/order_base.html:112 part/bom.py:237 part/bom.py:265
#: stock/templates/stock/item_base.html:229
-#: templates/js/translated/company.js:254
-#: templates/js/translated/company.js:393
-#: templates/js/translated/company.js:891 templates/js/translated/order.js:1643
-#: templates/js/translated/part.js:216 templates/js/translated/part.js:924
+#: templates/email/overdue_purchase_order.html:16
+#: templates/js/translated/company.js:255
+#: templates/js/translated/company.js:387
+#: templates/js/translated/company.js:876 templates/js/translated/order.js:1643
+#: templates/js/translated/part.js:216 templates/js/translated/part.js:968
#: templates/js/translated/table_filters.js:415
msgid "Supplier"
msgstr ""
@@ -2756,9 +2784,9 @@ msgid "Select supplier"
msgstr ""
#: company/models.py:493 company/templates/company/supplier_part.html:97
-#: part/bom.py:238 part/bom.py:266 templates/js/translated/company.js:253
+#: part/bom.py:238 part/bom.py:266 templates/js/translated/company.js:254
#: templates/js/translated/order.js:1894 templates/js/translated/part.js:227
-#: templates/js/translated/part.js:942
+#: templates/js/translated/part.js:986
msgid "SKU"
msgstr ""
@@ -2779,23 +2807,23 @@ msgid "Supplier part description"
msgstr ""
#: company/models.py:518 company/templates/company/supplier_part.html:125
-#: part/models.py:2573 part/templates/part/upload_bom.html:59
+#: part/models.py:2561 part/templates/part/upload_bom.html:59
#: report/templates/report/inventree_po_report.html:92
#: report/templates/report/inventree_so_report.html:93 stock/serializers.py:387
msgid "Note"
msgstr ""
-#: company/models.py:522 part/models.py:1688
+#: company/models.py:522 part/models.py:1683
msgid "base cost"
msgstr ""
-#: company/models.py:522 part/models.py:1688
+#: company/models.py:522 part/models.py:1683
msgid "Minimum charge (e.g. stocking fee)"
msgstr ""
#: company/models.py:524 company/templates/company/supplier_part.html:118
#: stock/models.py:608 stock/templates/stock/item_base.html:245
-#: templates/js/translated/company.js:967 templates/js/translated/stock.js:1912
+#: templates/js/translated/company.js:952 templates/js/translated/stock.js:1922
msgid "Packaging"
msgstr ""
@@ -2803,7 +2831,7 @@ msgstr ""
msgid "Part packaging"
msgstr ""
-#: company/models.py:526 part/models.py:1690
+#: company/models.py:526 part/models.py:1685
msgid "multiple"
msgstr ""
@@ -2825,7 +2853,7 @@ msgstr ""
#: company/templates/company/company_base.html:8
#: company/templates/company/company_base.html:12
-#: templates/InvenTree/search.html:177 templates/js/translated/company.js:378
+#: templates/InvenTree/search.html:177 templates/js/translated/company.js:372
msgid "Company"
msgstr "회사"
@@ -2843,7 +2871,7 @@ msgid "Edit company information"
msgstr "회사 정보 수정"
#: company/templates/company/company_base.html:34
-#: templates/js/translated/company.js:321
+#: templates/js/translated/company.js:315
msgid "Edit Company"
msgstr "회사 수정"
@@ -2866,12 +2894,13 @@ msgstr "새 이미지 업로드"
msgid "Download image from URL"
msgstr "URL에서 이미지 다운로드"
-#: company/templates/company/company_base.html:86 order/models.py:649
+#: company/templates/company/company_base.html:86 order/models.py:665
#: order/templates/order/sales_order_base.html:116 stock/models.py:627
-#: stock/models.py:628 stock/serializers.py:758
+#: stock/models.py:628 stock/serializers.py:745
#: stock/templates/stock/item_base.html:401
-#: templates/js/translated/company.js:385 templates/js/translated/order.js:2458
-#: templates/js/translated/stock.js:2431
+#: templates/email/overdue_sales_order.html:16
+#: templates/js/translated/company.js:379 templates/js/translated/order.js:2458
+#: templates/js/translated/stock.js:2441
#: templates/js/translated/table_filters.js:419
msgid "Customer"
msgstr "고객"
@@ -2999,7 +3028,7 @@ msgid "Supplier List"
msgstr ""
#: company/templates/company/manufacturer_part.html:15 company/views.py:45
-#: part/templates/part/prices.html:170 templates/InvenTree/search.html:179
+#: part/templates/part/prices.html:172 templates/InvenTree/search.html:179
#: templates/navbar.html:49
msgid "Manufacturers"
msgstr ""
@@ -3012,12 +3041,12 @@ msgid "Order part"
msgstr ""
#: company/templates/company/manufacturer_part.html:39
-#: templates/js/translated/company.js:680
+#: templates/js/translated/company.js:665
msgid "Edit manufacturer part"
msgstr ""
#: company/templates/company/manufacturer_part.html:43
-#: templates/js/translated/company.js:681
+#: templates/js/translated/company.js:666
msgid "Delete manufacturer part"
msgstr ""
@@ -3032,7 +3061,7 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:119
#: company/templates/company/supplier_part.html:15 company/views.py:39
-#: part/templates/part/part_sidebar.html:35 part/templates/part/prices.html:166
+#: part/templates/part/part_sidebar.html:35 part/templates/part/prices.html:168
#: templates/InvenTree/search.html:189 templates/navbar.html:48
msgid "Suppliers"
msgstr ""
@@ -3092,18 +3121,18 @@ msgstr ""
#: company/templates/company/supplier_part.html:7
#: company/templates/company/supplier_part.html:24 stock/models.py:592
#: stock/templates/stock/item_base.html:238
-#: templates/js/translated/company.js:907 templates/js/translated/order.js:884
-#: templates/js/translated/stock.js:1869
+#: templates/js/translated/company.js:892 templates/js/translated/order.js:884
+#: templates/js/translated/stock.js:1879
msgid "Supplier Part"
msgstr ""
#: company/templates/company/supplier_part.html:38
-#: templates/js/translated/company.js:980
+#: templates/js/translated/company.js:965
msgid "Edit supplier part"
msgstr ""
#: company/templates/company/supplier_part.html:42
-#: templates/js/translated/company.js:981
+#: templates/js/translated/company.js:966
msgid "Delete supplier part"
msgstr ""
@@ -3123,7 +3152,7 @@ msgstr ""
#: company/templates/company/supplier_part.html:148
#: part/templates/part/detail.html:24 stock/templates/stock/location.html:177
-#: templates/js/translated/stock.js:380
+#: templates/js/translated/stock.js:379
msgid "New Stock Item"
msgstr ""
@@ -3144,7 +3173,7 @@ msgstr ""
#: company/templates/company/supplier_part.html:191
#: company/templates/company/supplier_part.html:305
-#: part/templates/part/prices.html:274 templates/js/translated/part.js:2046
+#: part/templates/part/prices.html:276 templates/js/translated/part.js:2142
msgid "Add Price Break"
msgstr ""
@@ -3153,12 +3182,12 @@ msgid "No price break information found"
msgstr ""
#: company/templates/company/supplier_part.html:231
-#: templates/js/translated/part.js:2056
+#: templates/js/translated/part.js:2152
msgid "Delete Price Break"
msgstr ""
#: company/templates/company/supplier_part.html:245
-#: templates/js/translated/part.js:2070
+#: templates/js/translated/part.js:2166
msgid "Edit Price Break"
msgstr ""
@@ -3180,9 +3209,9 @@ msgstr ""
#: stock/templates/stock/stock_app_base.html:10
#: templates/InvenTree/search.html:151
#: templates/InvenTree/settings/sidebar.html:43
-#: templates/js/translated/bom.js:554 templates/js/translated/part.js:678
-#: templates/js/translated/part.js:1226 templates/js/translated/part.js:1387
-#: templates/js/translated/stock.js:904 templates/js/translated/stock.js:1687
+#: templates/js/translated/bom.js:554 templates/js/translated/part.js:722
+#: templates/js/translated/part.js:1270 templates/js/translated/part.js:1431
+#: templates/js/translated/stock.js:903 templates/js/translated/stock.js:1697
#: templates/navbar.html:31
msgid "Stock"
msgstr ""
@@ -3209,7 +3238,7 @@ msgstr ""
#: stock/templates/stock/location.html:173
#: stock/templates/stock/location_sidebar.html:7
#: templates/InvenTree/search.html:153 templates/js/translated/search.js:223
-#: templates/js/translated/stock.js:2307 users/models.py:39
+#: templates/js/translated/stock.js:2317 users/models.py:39
msgid "Stock Items"
msgstr ""
@@ -3238,20 +3267,20 @@ msgstr ""
msgid "New Company"
msgstr "새 회사"
-#: company/views.py:112 part/views.py:576
+#: company/views.py:112 part/views.py:501
msgid "Download Image"
msgstr "이미지 다운로드"
-#: company/views.py:139 part/views.py:606
+#: company/views.py:139 part/views.py:531
msgid "Image size exceeds maximum allowable size for download"
msgstr ""
-#: company/views.py:146 part/views.py:613
+#: company/views.py:146 part/views.py:538
#, python-brace-format
msgid "Invalid response: {code}"
msgstr ""
-#: company/views.py:155 part/views.py:622
+#: company/views.py:155 part/views.py:547
msgid "Supplied URL is not a valid image file"
msgstr ""
@@ -3320,313 +3349,314 @@ msgstr ""
msgid "Part query filters (comma-separated value of key=value pairs)"
msgstr ""
-#: order/models.py:133
+#: order/models.py:134
msgid "Order description"
msgstr ""
-#: order/models.py:135 order/models.py:1236
+#: order/models.py:136 order/models.py:1252
msgid "Link to external page"
msgstr ""
-#: order/models.py:143
+#: order/models.py:144
msgid "Created By"
msgstr ""
-#: order/models.py:150
+#: order/models.py:151
msgid "User or group responsible for this order"
msgstr ""
-#: order/models.py:155
+#: order/models.py:156
msgid "Order notes"
msgstr ""
-#: order/models.py:289 order/models.py:639
+#: order/models.py:294 order/models.py:655
msgid "Order reference"
msgstr ""
-#: order/models.py:294 order/models.py:654
+#: order/models.py:299 order/models.py:670
msgid "Purchase order status"
msgstr ""
-#: order/models.py:304
+#: order/models.py:309
msgid "Company from which the items are being ordered"
msgstr ""
-#: order/models.py:307 order/templates/order/order_base.html:124
+#: order/models.py:312 order/templates/order/order_base.html:124
#: templates/js/translated/order.js:1652
msgid "Supplier Reference"
msgstr ""
-#: order/models.py:307
+#: order/models.py:312
msgid "Supplier order reference code"
msgstr ""
-#: order/models.py:314
+#: order/models.py:319
msgid "received by"
msgstr ""
-#: order/models.py:319
+#: order/models.py:324
msgid "Issue Date"
msgstr ""
-#: order/models.py:320
+#: order/models.py:325
msgid "Date order was issued"
msgstr ""
-#: order/models.py:325
+#: order/models.py:330
msgid "Target Delivery Date"
msgstr ""
-#: order/models.py:326
+#: order/models.py:331
msgid "Expected date for order delivery. Order will be overdue after this date."
msgstr ""
-#: order/models.py:332
+#: order/models.py:337
msgid "Date order was completed"
msgstr ""
-#: order/models.py:368
+#: order/models.py:373
msgid "Part supplier must match PO supplier"
msgstr ""
-#: order/models.py:512
+#: order/models.py:517
msgid "Quantity must be a positive number"
msgstr ""
-#: order/models.py:650
+#: order/models.py:666
msgid "Company to which the items are being sold"
msgstr ""
-#: order/models.py:656
+#: order/models.py:672
msgid "Customer Reference "
msgstr ""
-#: order/models.py:656
+#: order/models.py:672
msgid "Customer order reference code"
msgstr ""
-#: order/models.py:661
+#: order/models.py:677
msgid "Target date for order completion. Order will be overdue after this date."
msgstr ""
-#: order/models.py:664 order/models.py:1190
+#: order/models.py:680 order/models.py:1206
#: templates/js/translated/order.js:2505 templates/js/translated/order.js:2656
msgid "Shipment Date"
msgstr ""
-#: order/models.py:671
+#: order/models.py:687
msgid "shipped by"
msgstr ""
-#: order/models.py:726
+#: order/models.py:742
msgid "Order cannot be completed as no parts have been assigned"
msgstr ""
-#: order/models.py:730
+#: order/models.py:746
msgid "Only a pending order can be marked as complete"
msgstr ""
-#: order/models.py:733
+#: order/models.py:749
msgid "Order cannot be completed as there are incomplete shipments"
msgstr ""
-#: order/models.py:736
+#: order/models.py:752
msgid "Order cannot be completed as there are incomplete line items"
msgstr ""
-#: order/models.py:910
+#: order/models.py:926
msgid "Item quantity"
msgstr ""
-#: order/models.py:916
+#: order/models.py:932
msgid "Line item reference"
msgstr ""
-#: order/models.py:918
+#: order/models.py:934
msgid "Line item notes"
msgstr ""
-#: order/models.py:923
+#: order/models.py:939
msgid "Target shipping date for this line item"
msgstr ""
-#: order/models.py:941
+#: order/models.py:957
msgid "Context"
msgstr ""
-#: order/models.py:942
+#: order/models.py:958
msgid "Additional context for this line"
msgstr ""
-#: order/models.py:950
+#: order/models.py:966
msgid "Unit price"
msgstr ""
-#: order/models.py:980
+#: order/models.py:996
msgid "Supplier part must match supplier"
msgstr ""
-#: order/models.py:988
+#: order/models.py:1004
msgid "deleted"
msgstr ""
-#: order/models.py:994 order/models.py:1074 order/models.py:1099
-#: order/models.py:1184 order/models.py:1320
+#: order/models.py:1010 order/models.py:1090 order/models.py:1115
+#: order/models.py:1200 order/models.py:1336
#: templates/js/translated/order.js:3112
msgid "Order"
msgstr ""
-#: order/models.py:995 order/models.py:1074
+#: order/models.py:1011 order/models.py:1090
#: order/templates/order/order_base.html:9
#: order/templates/order/order_base.html:18
#: report/templates/report/inventree_po_report.html:76
#: stock/templates/stock/item_base.html:184
+#: templates/email/overdue_purchase_order.html:15
#: templates/js/translated/order.js:885 templates/js/translated/order.js:1621
-#: templates/js/translated/part.js:899 templates/js/translated/stock.js:1846
-#: templates/js/translated/stock.js:2412
+#: templates/js/translated/part.js:943 templates/js/translated/stock.js:1856
+#: templates/js/translated/stock.js:2422
msgid "Purchase Order"
msgstr ""
-#: order/models.py:1013
+#: order/models.py:1029
msgid "Supplier part"
msgstr ""
-#: order/models.py:1020 order/templates/order/order_base.html:169
+#: order/models.py:1036 order/templates/order/order_base.html:169
#: templates/js/translated/order.js:1318 templates/js/translated/order.js:2009
-#: templates/js/translated/part.js:993 templates/js/translated/part.js:1020
+#: templates/js/translated/part.js:1037 templates/js/translated/part.js:1064
#: templates/js/translated/table_filters.js:330
msgid "Received"
msgstr ""
-#: order/models.py:1021
+#: order/models.py:1037
msgid "Number of items received"
msgstr ""
-#: order/models.py:1028 part/templates/part/prices.html:179 stock/models.py:722
+#: order/models.py:1044 part/templates/part/prices.html:181 stock/models.py:722
#: stock/serializers.py:153 stock/templates/stock/item_base.html:191
-#: templates/js/translated/stock.js:1900
+#: templates/js/translated/stock.js:1910
msgid "Purchase Price"
msgstr ""
-#: order/models.py:1029
+#: order/models.py:1045
msgid "Unit purchase price"
msgstr ""
-#: order/models.py:1037
+#: order/models.py:1053
msgid "Where does the Purchaser want this item to be stored?"
msgstr ""
-#: order/models.py:1109 part/templates/part/part_pricing.html:112
-#: part/templates/part/prices.html:119 part/templates/part/prices.html:288
+#: order/models.py:1125 part/templates/part/part_pricing.html:115
+#: part/templates/part/prices.html:121 part/templates/part/prices.html:290
msgid "Sale Price"
msgstr ""
-#: order/models.py:1110
+#: order/models.py:1126
msgid "Unit sale price"
msgstr ""
-#: order/models.py:1115
+#: order/models.py:1131
msgid "Shipped quantity"
msgstr ""
-#: order/models.py:1191
+#: order/models.py:1207
msgid "Date of shipment"
msgstr ""
-#: order/models.py:1198
+#: order/models.py:1214
msgid "Checked By"
msgstr ""
-#: order/models.py:1199
+#: order/models.py:1215
msgid "User who checked this shipment"
msgstr ""
-#: order/models.py:1207
+#: order/models.py:1223
msgid "Shipment number"
msgstr ""
-#: order/models.py:1214
+#: order/models.py:1230
msgid "Shipment notes"
msgstr ""
-#: order/models.py:1221
+#: order/models.py:1237
msgid "Tracking Number"
msgstr ""
-#: order/models.py:1222
+#: order/models.py:1238
msgid "Shipment tracking information"
msgstr ""
-#: order/models.py:1229
+#: order/models.py:1245
msgid "Invoice Number"
msgstr ""
-#: order/models.py:1230
+#: order/models.py:1246
msgid "Reference number for associated invoice"
msgstr ""
-#: order/models.py:1248
+#: order/models.py:1264
msgid "Shipment has already been sent"
msgstr ""
-#: order/models.py:1251
+#: order/models.py:1267
msgid "Shipment has no allocated stock items"
msgstr ""
-#: order/models.py:1354 order/models.py:1356
+#: order/models.py:1370 order/models.py:1372
msgid "Stock item has not been assigned"
msgstr ""
-#: order/models.py:1360
+#: order/models.py:1376
msgid "Cannot allocate stock item to a line with a different part"
msgstr ""
-#: order/models.py:1362
+#: order/models.py:1378
msgid "Cannot allocate stock to a line without a part"
msgstr ""
-#: order/models.py:1365
+#: order/models.py:1381
msgid "Allocation quantity cannot exceed stock quantity"
msgstr ""
-#: order/models.py:1369
+#: order/models.py:1385
msgid "StockItem is over-allocated"
msgstr ""
-#: order/models.py:1375 order/serializers.py:1045
+#: order/models.py:1391 order/serializers.py:1047
msgid "Quantity must be 1 for serialized stock item"
msgstr ""
-#: order/models.py:1378
+#: order/models.py:1394
msgid "Sales order does not match shipment"
msgstr ""
-#: order/models.py:1379
+#: order/models.py:1395
msgid "Shipment does not match sales order"
msgstr ""
-#: order/models.py:1387
+#: order/models.py:1403
msgid "Line"
msgstr ""
-#: order/models.py:1395 order/serializers.py:1149 order/serializers.py:1273
+#: order/models.py:1411 order/serializers.py:1151 order/serializers.py:1275
#: templates/js/translated/model_renderers.js:301
msgid "Shipment"
msgstr ""
-#: order/models.py:1396
+#: order/models.py:1412
msgid "Sales order shipment reference"
msgstr ""
-#: order/models.py:1408 templates/InvenTree/notifications/notifications.html:70
+#: order/models.py:1424 templates/InvenTree/notifications/notifications.html:70
msgid "Item"
msgstr ""
-#: order/models.py:1409
+#: order/models.py:1425
msgid "Select stock item to allocate"
msgstr ""
-#: order/models.py:1412
+#: order/models.py:1428
msgid "Enter stock allocation quantity"
msgstr ""
@@ -3662,7 +3692,7 @@ msgstr ""
msgid "Purchase order must match supplier"
msgstr ""
-#: order/serializers.py:406 order/serializers.py:1117
+#: order/serializers.py:406 order/serializers.py:1119
msgid "Line Item"
msgstr ""
@@ -3710,42 +3740,60 @@ msgstr ""
msgid "Supplied barcode values must be unique"
msgstr ""
-#: order/serializers.py:866
+#: order/serializers.py:868
msgid "Sale price currency"
msgstr ""
-#: order/serializers.py:947
+#: order/serializers.py:949
msgid "No shipment details provided"
msgstr ""
-#: order/serializers.py:1006 order/serializers.py:1126
+#: order/serializers.py:1008 order/serializers.py:1128
msgid "Line item is not associated with this order"
msgstr ""
-#: order/serializers.py:1028
+#: order/serializers.py:1030
msgid "Quantity must be positive"
msgstr ""
-#: order/serializers.py:1139
+#: order/serializers.py:1141
msgid "Enter serial numbers to allocate"
msgstr ""
-#: order/serializers.py:1161 order/serializers.py:1281
+#: order/serializers.py:1163 order/serializers.py:1283
msgid "Shipment has already been shipped"
msgstr ""
-#: order/serializers.py:1164 order/serializers.py:1284
+#: order/serializers.py:1166 order/serializers.py:1286
msgid "Shipment is not associated with this order"
msgstr ""
-#: order/serializers.py:1214
+#: order/serializers.py:1216
msgid "No match found for the following serial numbers"
msgstr ""
-#: order/serializers.py:1224
+#: order/serializers.py:1226
msgid "The following serial numbers are already allocated"
msgstr ""
+#: order/tasks.py:26
+msgid "Overdue Purchase Order"
+msgstr ""
+
+#: order/tasks.py:31
+#, python-brace-format
+msgid "Purchase order {po} is now overdue"
+msgstr ""
+
+#: order/tasks.py:88
+msgid "Overdue Sales Order"
+msgstr ""
+
+#: order/tasks.py:93
+#, python-brace-format
+msgid "Sales order {so} is now overdue"
+msgstr ""
+
#: order/templates/order/order_base.html:33
msgid "Print purchase order report"
msgstr ""
@@ -3870,8 +3918,8 @@ msgstr ""
#: templates/js/translated/bom.js:77 templates/js/translated/build.js:427
#: templates/js/translated/build.js:579 templates/js/translated/build.js:1972
#: templates/js/translated/order.js:833 templates/js/translated/order.js:1265
-#: templates/js/translated/order.js:2731 templates/js/translated/stock.js:570
-#: templates/js/translated/stock.js:738
+#: templates/js/translated/order.js:2731 templates/js/translated/stock.js:569
+#: templates/js/translated/stock.js:737
#: templates/patterns/wizard/match_fields.html:70
msgid "Remove row"
msgstr ""
@@ -3990,7 +4038,7 @@ msgid "Pending Shipments"
msgstr ""
#: order/templates/order/sales_order_detail.html:70
-#: templates/attachment_table.html:6 templates/js/translated/bom.js:1053
+#: templates/attachment_table.html:6 templates/js/translated/bom.js:1047
#: templates/js/translated/build.js:1880
msgid "Actions"
msgstr ""
@@ -4021,47 +4069,47 @@ msgstr ""
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr ""
-#: part/api.py:481
+#: part/api.py:482
msgid "Incoming Purchase Order"
msgstr ""
-#: part/api.py:501
+#: part/api.py:502
msgid "Outgoing Sales Order"
msgstr ""
-#: part/api.py:519
+#: part/api.py:520
msgid "Stock produced by Build Order"
msgstr ""
-#: part/api.py:551
+#: part/api.py:552
msgid "Stock required for Build Order"
msgstr ""
-#: part/api.py:637
+#: part/api.py:638
msgid "Valid"
msgstr ""
-#: part/api.py:638
+#: part/api.py:639
msgid "Validate entire Bill of Materials"
msgstr ""
-#: part/api.py:644
+#: part/api.py:645
msgid "This option must be selected"
msgstr ""
-#: part/api.py:1010
+#: part/api.py:1011
msgid "Must be greater than zero"
msgstr ""
-#: part/api.py:1014
+#: part/api.py:1015
msgid "Must be a valid quantity"
msgstr ""
-#: part/api.py:1029
+#: part/api.py:1030
msgid "Specify location for initial part stock"
msgstr ""
-#: part/api.py:1060 part/api.py:1064 part/api.py:1079 part/api.py:1083
+#: part/api.py:1061 part/api.py:1065 part/api.py:1080 part/api.py:1084
msgid "This field is required"
msgstr ""
@@ -4080,17 +4128,13 @@ msgid "Available Stock"
msgstr ""
#: part/bom.py:130 part/templates/part/part_base.html:207
-#: templates/js/translated/part.js:517 templates/js/translated/part.js:537
-#: templates/js/translated/part.js:1229 templates/js/translated/part.js:1401
-#: templates/js/translated/part.js:1417
+#: templates/js/translated/part.js:561 templates/js/translated/part.js:581
+#: templates/js/translated/part.js:1273 templates/js/translated/part.js:1445
+#: templates/js/translated/part.js:1461
msgid "On Order"
msgstr ""
-#: part/forms.py:59
-msgid "Select part category"
-msgstr ""
-
-#: part/forms.py:69
+#: part/forms.py:60
msgid "Input quantity for price calculation"
msgstr ""
@@ -4106,7 +4150,7 @@ msgstr ""
msgid "Default keywords for parts in this category"
msgstr ""
-#: part/models.py:115 part/models.py:2415 part/templates/part/category.html:15
+#: part/models.py:115 part/models.py:2403 part/templates/part/category.html:15
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr ""
@@ -4123,7 +4167,7 @@ msgstr ""
#: part/templates/part/category_sidebar.html:9
#: templates/InvenTree/index.html:85 templates/InvenTree/search.html:82
#: templates/InvenTree/settings/sidebar.html:39
-#: templates/js/translated/part.js:1768 templates/js/translated/search.js:144
+#: templates/js/translated/part.js:1864 templates/js/translated/search.js:144
#: templates/navbar.html:24 users/models.py:37
msgid "Parts"
msgstr ""
@@ -4153,7 +4197,7 @@ msgstr ""
msgid "Duplicate IPN not allowed in part settings"
msgstr ""
-#: part/models.py:738 part/models.py:2469
+#: part/models.py:738 part/models.py:2457
msgid "Part name"
msgstr ""
@@ -4186,12 +4230,11 @@ msgstr ""
msgid "Part keywords to improve visibility in search results"
msgstr ""
-#: part/models.py:776 part/models.py:2171 part/models.py:2414
+#: part/models.py:776 part/models.py:2159 part/models.py:2402
#: part/templates/part/part_base.html:257
-#: part/templates/part/set_category.html:15
#: templates/InvenTree/notifications/notifications.html:65
#: templates/InvenTree/settings/settings.html:231
-#: templates/js/translated/part.js:1369
+#: templates/js/translated/part.js:1413 templates/js/translated/part.js:1639
msgid "Category"
msgstr ""
@@ -4200,8 +4243,8 @@ msgid "Part category"
msgstr ""
#: part/models.py:782 part/templates/part/part_base.html:266
-#: templates/js/translated/part.js:666 templates/js/translated/part.js:1322
-#: templates/js/translated/stock.js:1659
+#: templates/js/translated/part.js:710 templates/js/translated/part.js:1366
+#: templates/js/translated/stock.js:1669
msgid "IPN"
msgstr ""
@@ -4214,7 +4257,7 @@ msgid "Part revision or version number"
msgstr ""
#: part/models.py:790 part/templates/part/part_base.html:273
-#: report/models.py:170 templates/js/translated/part.js:670
+#: report/models.py:170 templates/js/translated/part.js:714
msgid "Revision"
msgstr ""
@@ -4302,317 +4345,321 @@ msgstr ""
msgid "Creation User"
msgstr ""
-#: part/models.py:1690
+#: part/models.py:1685
msgid "Sell multiple"
msgstr ""
-#: part/models.py:2218
+#: part/models.py:2206
msgid "Test templates can only be created for trackable parts"
msgstr ""
-#: part/models.py:2235
+#: part/models.py:2223
msgid "Test with this name already exists for this part"
msgstr ""
-#: part/models.py:2255 templates/js/translated/part.js:1819
-#: templates/js/translated/stock.js:1274
+#: part/models.py:2243 templates/js/translated/part.js:1915
+#: templates/js/translated/stock.js:1284
msgid "Test Name"
msgstr ""
-#: part/models.py:2256
+#: part/models.py:2244
msgid "Enter a name for the test"
msgstr ""
-#: part/models.py:2261
+#: part/models.py:2249
msgid "Test Description"
msgstr ""
-#: part/models.py:2262
+#: part/models.py:2250
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:2267 templates/js/translated/part.js:1828
+#: part/models.py:2255 templates/js/translated/part.js:1924
#: templates/js/translated/table_filters.js:294
msgid "Required"
msgstr ""
-#: part/models.py:2268
+#: part/models.py:2256
msgid "Is this test required to pass?"
msgstr ""
-#: part/models.py:2273 templates/js/translated/part.js:1836
+#: part/models.py:2261 templates/js/translated/part.js:1932
msgid "Requires Value"
msgstr ""
-#: part/models.py:2274
+#: part/models.py:2262
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:2279 templates/js/translated/part.js:1843
+#: part/models.py:2267 templates/js/translated/part.js:1939
msgid "Requires Attachment"
msgstr ""
-#: part/models.py:2280
+#: part/models.py:2268
msgid "Does this test require a file attachment when adding a test result?"
msgstr ""
-#: part/models.py:2288
+#: part/models.py:2276
#, python-brace-format
msgid "Illegal character in template name ({c})"
msgstr ""
-#: part/models.py:2324
+#: part/models.py:2312
msgid "Parameter template name must be unique"
msgstr ""
-#: part/models.py:2332
+#: part/models.py:2320
msgid "Parameter Name"
msgstr ""
-#: part/models.py:2339
+#: part/models.py:2327
msgid "Parameter Units"
msgstr ""
-#: part/models.py:2370
+#: part/models.py:2358
msgid "Parent Part"
msgstr ""
-#: part/models.py:2372 part/models.py:2420 part/models.py:2421
+#: part/models.py:2360 part/models.py:2408 part/models.py:2409
#: templates/InvenTree/settings/settings.html:226
msgid "Parameter Template"
msgstr ""
-#: part/models.py:2374
+#: part/models.py:2362
msgid "Data"
msgstr "데이터"
-#: part/models.py:2374
+#: part/models.py:2362
msgid "Parameter Value"
msgstr ""
-#: part/models.py:2425 templates/InvenTree/settings/settings.html:235
+#: part/models.py:2413 templates/InvenTree/settings/settings.html:235
msgid "Default Value"
msgstr ""
-#: part/models.py:2426
+#: part/models.py:2414
msgid "Default Parameter Value"
msgstr ""
-#: part/models.py:2461
+#: part/models.py:2449
msgid "Part ID or part name"
msgstr ""
-#: part/models.py:2464 templates/js/translated/model_renderers.js:200
+#: part/models.py:2452 templates/js/translated/model_renderers.js:200
msgid "Part ID"
msgstr ""
-#: part/models.py:2465
+#: part/models.py:2453
msgid "Unique part ID value"
msgstr ""
-#: part/models.py:2468
+#: part/models.py:2456
msgid "Part Name"
msgstr ""
-#: part/models.py:2472
+#: part/models.py:2460
msgid "Part IPN"
msgstr ""
-#: part/models.py:2473
+#: part/models.py:2461
msgid "Part IPN value"
msgstr ""
-#: part/models.py:2476
+#: part/models.py:2464
msgid "Level"
msgstr ""
-#: part/models.py:2477
+#: part/models.py:2465
msgid "BOM level"
msgstr ""
-#: part/models.py:2546
+#: part/models.py:2534
msgid "Select parent part"
msgstr ""
-#: part/models.py:2554
+#: part/models.py:2542
msgid "Sub part"
msgstr ""
-#: part/models.py:2555
+#: part/models.py:2543
msgid "Select part to be used in BOM"
msgstr ""
-#: part/models.py:2561
+#: part/models.py:2549
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:2563 part/templates/part/upload_bom.html:58
-#: templates/js/translated/bom.js:877 templates/js/translated/bom.js:971
+#: part/models.py:2551 part/templates/part/upload_bom.html:58
+#: templates/js/translated/bom.js:871 templates/js/translated/bom.js:965
#: templates/js/translated/table_filters.js:92
msgid "Optional"
msgstr ""
-#: part/models.py:2563
+#: part/models.py:2551
msgid "This BOM item is optional"
msgstr ""
-#: part/models.py:2566 part/templates/part/upload_bom.html:55
+#: part/models.py:2554 part/templates/part/upload_bom.html:55
msgid "Overage"
msgstr ""
-#: part/models.py:2567
+#: part/models.py:2555
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr ""
-#: part/models.py:2570
+#: part/models.py:2558
msgid "BOM item reference"
msgstr ""
-#: part/models.py:2573
+#: part/models.py:2561
msgid "BOM item notes"
msgstr ""
-#: part/models.py:2575
+#: part/models.py:2563
msgid "Checksum"
msgstr ""
-#: part/models.py:2575
+#: part/models.py:2563
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:2579 part/templates/part/upload_bom.html:57
-#: templates/js/translated/bom.js:988
+#: part/models.py:2567 part/templates/part/upload_bom.html:57
+#: templates/js/translated/bom.js:982
#: templates/js/translated/table_filters.js:68
#: templates/js/translated/table_filters.js:88
msgid "Inherited"
msgstr ""
-#: part/models.py:2580
+#: part/models.py:2568
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr ""
-#: part/models.py:2585 part/templates/part/upload_bom.html:56
-#: templates/js/translated/bom.js:980
+#: part/models.py:2573 part/templates/part/upload_bom.html:56
+#: templates/js/translated/bom.js:974
msgid "Allow Variants"
msgstr ""
-#: part/models.py:2586
+#: part/models.py:2574
msgid "Stock items for variant parts can be used for this BOM item"
msgstr ""
-#: part/models.py:2664 stock/models.py:460
+#: part/models.py:2652 stock/models.py:460
msgid "Quantity must be integer value for trackable parts"
msgstr ""
-#: part/models.py:2673 part/models.py:2675
+#: part/models.py:2661 part/models.py:2663
msgid "Sub part must be specified"
msgstr ""
-#: part/models.py:2780
+#: part/models.py:2768
msgid "BOM Item Substitute"
msgstr ""
-#: part/models.py:2801
+#: part/models.py:2789
msgid "Substitute part cannot be the same as the master part"
msgstr ""
-#: part/models.py:2814
+#: part/models.py:2802
msgid "Parent BOM item"
msgstr ""
-#: part/models.py:2822
+#: part/models.py:2810
msgid "Substitute part"
msgstr ""
-#: part/models.py:2833
+#: part/models.py:2825
msgid "Part 1"
msgstr ""
-#: part/models.py:2837
+#: part/models.py:2829
msgid "Part 2"
msgstr ""
-#: part/models.py:2837
+#: part/models.py:2829
msgid "Select Related Part"
msgstr ""
-#: part/models.py:2868
-msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique"
+#: part/models.py:2847
+msgid "Part relationship cannot be created between a part and itself"
msgstr ""
-#: part/serializers.py:138 part/serializers.py:169 stock/serializers.py:163
+#: part/models.py:2851
+msgid "Duplicate relationship already exists"
+msgstr ""
+
+#: part/serializers.py:140 part/serializers.py:171 stock/serializers.py:163
msgid "Purchase currency of this stock item"
msgstr ""
-#: part/serializers.py:794
+#: part/serializers.py:796
msgid "Select part to copy BOM from"
msgstr ""
-#: part/serializers.py:802
+#: part/serializers.py:804
msgid "Remove Existing Data"
msgstr ""
-#: part/serializers.py:803
+#: part/serializers.py:805
msgid "Remove existing BOM items before copying"
msgstr ""
-#: part/serializers.py:808
+#: part/serializers.py:810
msgid "Include Inherited"
msgstr ""
-#: part/serializers.py:809
+#: part/serializers.py:811
msgid "Include BOM items which are inherited from templated parts"
msgstr ""
-#: part/serializers.py:814
+#: part/serializers.py:816
msgid "Skip Invalid Rows"
msgstr ""
-#: part/serializers.py:815
+#: part/serializers.py:817
msgid "Enable this option to skip invalid rows"
msgstr ""
-#: part/serializers.py:820
+#: part/serializers.py:822
msgid "Copy Substitute Parts"
msgstr ""
-#: part/serializers.py:821
+#: part/serializers.py:823
msgid "Copy substitute parts when duplicate BOM items"
msgstr ""
-#: part/serializers.py:861
+#: part/serializers.py:863
msgid "Clear Existing BOM"
msgstr ""
-#: part/serializers.py:862
+#: part/serializers.py:864
msgid "Delete existing BOM items before uploading"
msgstr ""
-#: part/serializers.py:892
+#: part/serializers.py:894
msgid "No part column specified"
msgstr ""
-#: part/serializers.py:935
+#: part/serializers.py:937
msgid "Multiple matching parts found"
msgstr ""
-#: part/serializers.py:938
+#: part/serializers.py:940
msgid "No matching part found"
msgstr ""
-#: part/serializers.py:941
+#: part/serializers.py:943
msgid "Part is not designated as a component"
msgstr ""
-#: part/serializers.py:950
+#: part/serializers.py:952
msgid "Quantity not provided"
msgstr ""
-#: part/serializers.py:958
+#: part/serializers.py:960
msgid "Invalid quantity"
msgstr ""
-#: part/serializers.py:979
+#: part/serializers.py:981
msgid "At least one BOM item is required"
msgstr ""
@@ -5088,10 +5135,10 @@ msgid "Part is virtual (not a physical part)"
msgstr ""
#: part/templates/part/part_base.html:143
-#: templates/js/translated/company.js:623
-#: templates/js/translated/company.js:882
+#: templates/js/translated/company.js:608
+#: templates/js/translated/company.js:867
#: templates/js/translated/model_renderers.js:192
-#: templates/js/translated/part.js:581 templates/js/translated/part.js:658
+#: templates/js/translated/part.js:625 templates/js/translated/part.js:702
msgid "Inactive"
msgstr ""
@@ -5120,13 +5167,13 @@ msgstr ""
msgid "Allocated to Sales Orders"
msgstr ""
-#: part/templates/part/part_base.html:232 templates/js/translated/bom.js:1009
+#: part/templates/part/part_base.html:232 templates/js/translated/bom.js:1003
msgid "Can Build"
msgstr ""
-#: part/templates/part/part_base.html:238 templates/js/translated/part.js:520
-#: templates/js/translated/part.js:540 templates/js/translated/part.js:1233
-#: templates/js/translated/part.js:1405 templates/js/translated/part.js:1421
+#: part/templates/part/part_base.html:238 templates/js/translated/part.js:564
+#: templates/js/translated/part.js:584 templates/js/translated/part.js:1277
+#: templates/js/translated/part.js:1449 templates/js/translated/part.js:1465
msgid "Building"
msgstr ""
@@ -5143,7 +5190,7 @@ msgstr ""
msgid "Search for serial number"
msgstr "일련번호 검색"
-#: part/templates/part/part_base.html:443 part/templates/part/prices.html:147
+#: part/templates/part/part_base.html:443 part/templates/part/prices.html:149
msgid "Calculate"
msgstr ""
@@ -5161,54 +5208,55 @@ msgstr ""
#: part/templates/part/part_pricing.html:26
#: part/templates/part/part_pricing.html:52
-#: part/templates/part/part_pricing.html:100
-#: part/templates/part/part_pricing.html:115 part/templates/part/prices.html:28
-#: part/templates/part/prices.html:55 part/templates/part/prices.html:106
-#: part/templates/part/prices.html:123
+#: part/templates/part/part_pricing.html:103
+#: part/templates/part/part_pricing.html:118 part/templates/part/prices.html:28
+#: part/templates/part/prices.html:55 part/templates/part/prices.html:108
+#: part/templates/part/prices.html:125
msgid "Unit Cost"
msgstr ""
#: part/templates/part/part_pricing.html:32
#: part/templates/part/part_pricing.html:58
-#: part/templates/part/part_pricing.html:104
-#: part/templates/part/part_pricing.html:119 part/templates/part/prices.html:35
-#: part/templates/part/prices.html:62 part/templates/part/prices.html:111
-#: part/templates/part/prices.html:128
+#: part/templates/part/part_pricing.html:107
+#: part/templates/part/part_pricing.html:122 part/templates/part/prices.html:35
+#: part/templates/part/prices.html:62 part/templates/part/prices.html:113
+#: part/templates/part/prices.html:130
msgid "Total Cost"
msgstr ""
#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:43
-#: templates/js/translated/bom.js:963
+#: templates/js/translated/bom.js:957
msgid "No supplier pricing available"
msgstr ""
#: part/templates/part/part_pricing.html:48 part/templates/part/prices.html:52
-#: part/templates/part/prices.html:246
+#: part/templates/part/prices.html:248
msgid "BOM Pricing"
msgstr ""
-#: part/templates/part/part_pricing.html:65 part/templates/part/prices.html:72
+#: part/templates/part/part_pricing.html:66 part/templates/part/prices.html:72
msgid "Unit Purchase Price"
msgstr ""
-#: part/templates/part/part_pricing.html:71 part/templates/part/prices.html:79
+#: part/templates/part/part_pricing.html:72 part/templates/part/prices.html:79
msgid "Total Purchase Price"
msgstr ""
-#: part/templates/part/part_pricing.html:81 part/templates/part/prices.html:89
+#: part/templates/part/part_pricing.html:82 part/templates/part/prices.html:89
msgid "Note: BOM pricing is incomplete for this part"
msgstr ""
-#: part/templates/part/part_pricing.html:88 part/templates/part/prices.html:96
+#: part/templates/part/part_pricing.html:91 part/templates/part/prices.html:98
msgid "No BOM pricing available"
msgstr ""
-#: part/templates/part/part_pricing.html:97 part/templates/part/prices.html:105
+#: part/templates/part/part_pricing.html:100
+#: part/templates/part/prices.html:107
msgid "Internal Price"
msgstr ""
-#: part/templates/part/part_pricing.html:128
-#: part/templates/part/prices.html:137
+#: part/templates/part/part_pricing.html:131
+#: part/templates/part/prices.html:139
msgid "No pricing information is available for this part."
msgstr ""
@@ -5232,43 +5280,6 @@ msgstr ""
msgid "Select from existing images"
msgstr ""
-#: part/templates/part/partial_delete.html:9
-#, python-format
-msgid "Part '%(full_name)s' cannot be deleted as it is still marked as active.\n"
-"
Disable the \"Active\" part attribute and re-try.\n"
-" "
-msgstr ""
-
-#: part/templates/part/partial_delete.html:17
-#, python-format
-msgid "Are you sure you want to delete part '%(full_name)s'?"
-msgstr ""
-
-#: part/templates/part/partial_delete.html:22
-#, python-format
-msgid "This part is used in BOMs for %(count)s other parts. If you delete this part, the BOMs for the following parts will be updated"
-msgstr ""
-
-#: part/templates/part/partial_delete.html:32
-#, python-format
-msgid "There are %(count)s stock entries defined for this part. If you delete this part, the following stock entries will also be deleted:"
-msgstr ""
-
-#: part/templates/part/partial_delete.html:43
-#, python-format
-msgid "There are %(count)s manufacturers defined for this part. If you delete this part, the following manufacturer parts will also be deleted:"
-msgstr ""
-
-#: part/templates/part/partial_delete.html:54
-#, python-format
-msgid "There are %(count)s suppliers defined for this part. If you delete this part, the following supplier parts will also be deleted:"
-msgstr ""
-
-#: part/templates/part/partial_delete.html:67
-#, python-format
-msgid "There are %(count)s unique parts tracked for '%(full_name)s'. Deleting this part will permanently remove this tracking information."
-msgstr ""
-
#: part/templates/part/prices.html:19
msgid "Pricing ranges"
msgstr ""
@@ -5285,66 +5296,58 @@ msgstr ""
msgid "Show BOM cost"
msgstr ""
-#: part/templates/part/prices.html:120
+#: part/templates/part/prices.html:122
msgid "Show sale cost"
msgstr ""
-#: part/templates/part/prices.html:121
+#: part/templates/part/prices.html:123
msgid "Show sale price"
msgstr ""
-#: part/templates/part/prices.html:143
+#: part/templates/part/prices.html:145
msgid "Calculation parameters"
msgstr ""
-#: part/templates/part/prices.html:158 templates/js/translated/bom.js:957
+#: part/templates/part/prices.html:160 templates/js/translated/bom.js:951
msgid "Supplier Cost"
msgstr ""
-#: part/templates/part/prices.html:159 part/templates/part/prices.html:180
-#: part/templates/part/prices.html:204 part/templates/part/prices.html:234
-#: part/templates/part/prices.html:260 part/templates/part/prices.html:289
+#: part/templates/part/prices.html:161 part/templates/part/prices.html:182
+#: part/templates/part/prices.html:206 part/templates/part/prices.html:236
+#: part/templates/part/prices.html:262 part/templates/part/prices.html:291
msgid "Jump to overview"
msgstr ""
-#: part/templates/part/prices.html:184
+#: part/templates/part/prices.html:186
msgid "Stock Pricing"
msgstr ""
-#: part/templates/part/prices.html:193
+#: part/templates/part/prices.html:195
msgid "No stock pricing history is available for this part."
msgstr ""
-#: part/templates/part/prices.html:203
+#: part/templates/part/prices.html:205
msgid "Internal Cost"
msgstr ""
-#: part/templates/part/prices.html:218
+#: part/templates/part/prices.html:220
msgid "Add Internal Price Break"
msgstr ""
-#: part/templates/part/prices.html:233
+#: part/templates/part/prices.html:235
msgid "BOM Cost"
msgstr ""
-#: part/templates/part/prices.html:259
+#: part/templates/part/prices.html:261
msgid "Sale Cost"
msgstr ""
-#: part/templates/part/prices.html:300
+#: part/templates/part/prices.html:302
msgid "No sale pice history available for this part."
msgstr ""
-#: part/templates/part/set_category.html:9
-msgid "Set category for the following parts"
-msgstr ""
-
-#: part/templates/part/set_category.html:32
-msgid "Remove part"
-msgstr ""
-
-#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:543
-#: templates/js/translated/part.js:1221 templates/js/translated/part.js:1425
+#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:587
+#: templates/js/translated/part.js:1265 templates/js/translated/part.js:1469
msgid "No Stock"
msgstr ""
@@ -5407,56 +5410,39 @@ msgstr ""
msgid "{title} v{version}"
msgstr ""
-#: part/views.py:74
-msgid "Set Part Category"
-msgstr ""
-
-#: part/views.py:122
-#, python-brace-format
-msgid "Set category for {n} parts"
-msgstr ""
-
-#: part/views.py:193
+#: part/views.py:118
msgid "Match References"
msgstr ""
-#: part/views.py:494
+#: part/views.py:419
msgid "None"
msgstr ""
-#: part/views.py:556
+#: part/views.py:481
msgid "Part QR Code"
msgstr ""
-#: part/views.py:650
+#: part/views.py:575
msgid "Select Part Image"
msgstr ""
-#: part/views.py:676
+#: part/views.py:601
msgid "Updated part image"
msgstr ""
-#: part/views.py:679
+#: part/views.py:604
msgid "Part image not found"
msgstr ""
-#: part/views.py:768
-msgid "Confirm Part Deletion"
-msgstr ""
-
-#: part/views.py:776
-msgid "Part was deleted"
-msgstr ""
-
-#: part/views.py:785
+#: part/views.py:693
msgid "Part Pricing"
msgstr ""
-#: part/views.py:976
+#: part/views.py:884
msgid "Delete Part Category"
msgstr ""
-#: part/views.py:983
+#: part/views.py:891
msgid "Part category was deleted"
msgstr ""
@@ -5516,21 +5502,21 @@ msgstr ""
msgid "Label printing failed"
msgstr ""
-#: plugin/builtin/integration/core_notifications.py:28
+#: plugin/builtin/integration/core_notifications.py:29
msgid "InvenTree contributors"
msgstr ""
-#: plugin/builtin/integration/core_notifications.py:29
+#: plugin/builtin/integration/core_notifications.py:30
msgid "Integrated outgoing notificaton methods"
msgstr ""
-#: plugin/builtin/integration/core_notifications.py:33
-#: plugin/builtin/integration/core_notifications.py:52
-msgid "Enable email notifications"
-msgstr ""
-
#: plugin/builtin/integration/core_notifications.py:34
#: plugin/builtin/integration/core_notifications.py:53
+msgid "Enable email notifications"
+msgstr ""
+
+#: plugin/builtin/integration/core_notifications.py:35
+#: plugin/builtin/integration/core_notifications.py:54
msgid "Allow sending of emails for event notifications"
msgstr ""
@@ -5646,15 +5632,19 @@ msgstr ""
msgid "Either packagename of URL must be provided"
msgstr ""
-#: report/api.py:166
+#: report/api.py:179
msgid "No valid objects provided to template"
msgstr ""
-#: report/api.py:198 report/api.py:239
+#: report/api.py:215 report/api.py:256
#, python-brace-format
msgid "Template file '{template}' is missing or does not exist"
msgstr ""
+#: report/api.py:359
+msgid "Test report"
+msgstr ""
+
#: report/models.py:152
msgid "Template name"
msgstr ""
@@ -5757,7 +5747,7 @@ msgstr ""
#: templates/js/translated/build.js:1173 templates/js/translated/build.js:1671
#: templates/js/translated/model_renderers.js:106
#: templates/js/translated/order.js:115 templates/js/translated/order.js:3229
-#: templates/js/translated/order.js:3318 templates/js/translated/stock.js:435
+#: templates/js/translated/order.js:3318 templates/js/translated/stock.js:434
msgid "Serial Number"
msgstr "일련번호"
@@ -5766,19 +5756,19 @@ msgid "Test Results"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:93
-#: stock/models.py:2068
+#: stock/models.py:2072
msgid "Test"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:94
-#: stock/models.py:2074
+#: stock/models.py:2078
msgid "Result"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:97
#: templates/InvenTree/settings/plugin.html:51
#: templates/InvenTree/settings/plugin_settings.html:38
-#: templates/js/translated/order.js:1669 templates/js/translated/stock.js:2340
+#: templates/js/translated/order.js:1669 templates/js/translated/stock.js:2350
msgid "Date"
msgstr ""
@@ -5796,20 +5786,20 @@ msgid "Installed Items"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:137
-#: templates/js/translated/stock.js:555 templates/js/translated/stock.js:725
-#: templates/js/translated/stock.js:2589
+#: templates/js/translated/stock.js:554 templates/js/translated/stock.js:724
+#: templates/js/translated/stock.js:2599
msgid "Serial"
msgstr ""
-#: stock/api.py:504
+#: stock/api.py:505
msgid "Quantity is required"
msgstr ""
-#: stock/api.py:511
+#: stock/api.py:512
msgid "Valid part must be supplied"
msgstr ""
-#: stock/api.py:536
+#: stock/api.py:537
msgid "Serial numbers cannot be supplied for a non-trackable part"
msgstr ""
@@ -5917,7 +5907,7 @@ msgid "Destination Sales Order"
msgstr ""
#: stock/models.py:690 stock/templates/stock/item_base.html:429
-#: templates/js/translated/stock.js:1816
+#: templates/js/translated/stock.js:1826
msgid "Expiry Date"
msgstr ""
@@ -5971,79 +5961,79 @@ msgstr ""
msgid "Serial numbers already exist: {exists}"
msgstr ""
-#: stock/models.py:1321
+#: stock/models.py:1325
msgid "Stock item has been assigned to a sales order"
msgstr ""
-#: stock/models.py:1324
+#: stock/models.py:1328
msgid "Stock item is installed in another item"
msgstr ""
-#: stock/models.py:1327
+#: stock/models.py:1331
msgid "Stock item contains other items"
msgstr ""
-#: stock/models.py:1330
+#: stock/models.py:1334
msgid "Stock item has been assigned to a customer"
msgstr ""
-#: stock/models.py:1333
+#: stock/models.py:1337
msgid "Stock item is currently in production"
msgstr ""
-#: stock/models.py:1336
+#: stock/models.py:1340
msgid "Serialized stock cannot be merged"
msgstr ""
-#: stock/models.py:1343 stock/serializers.py:908
+#: stock/models.py:1347 stock/serializers.py:895
msgid "Duplicate stock items"
msgstr ""
-#: stock/models.py:1347
+#: stock/models.py:1351
msgid "Stock items must refer to the same part"
msgstr ""
-#: stock/models.py:1351
+#: stock/models.py:1355
msgid "Stock items must refer to the same supplier part"
msgstr ""
-#: stock/models.py:1355
+#: stock/models.py:1359
msgid "Stock status codes must match"
msgstr ""
-#: stock/models.py:1524
+#: stock/models.py:1528
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:1986
+#: stock/models.py:1990
msgid "Entry notes"
msgstr ""
-#: stock/models.py:2044
+#: stock/models.py:2048
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:2050
+#: stock/models.py:2054
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:2069
+#: stock/models.py:2073
msgid "Test name"
msgstr ""
-#: stock/models.py:2075
+#: stock/models.py:2079
msgid "Test result"
msgstr ""
-#: stock/models.py:2081
+#: stock/models.py:2085
msgid "Test output value"
msgstr ""
-#: stock/models.py:2088
+#: stock/models.py:2092
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:2094
+#: stock/models.py:2098
msgid "Test notes"
msgstr ""
@@ -6064,7 +6054,7 @@ msgstr ""
msgid "Enter serial numbers for new items"
msgstr ""
-#: stock/serializers.py:309 stock/serializers.py:865 stock/serializers.py:1098
+#: stock/serializers.py:309 stock/serializers.py:852 stock/serializers.py:1085
msgid "Destination stock location"
msgstr ""
@@ -6104,63 +6094,63 @@ msgstr ""
msgid "Destination location for returned item"
msgstr ""
-#: stock/serializers.py:720
+#: stock/serializers.py:707
msgid "Part must be salable"
msgstr ""
-#: stock/serializers.py:724
+#: stock/serializers.py:711
msgid "Item is allocated to a sales order"
msgstr ""
-#: stock/serializers.py:728
+#: stock/serializers.py:715
msgid "Item is allocated to a build order"
msgstr ""
-#: stock/serializers.py:759
+#: stock/serializers.py:746
msgid "Customer to assign stock items"
msgstr ""
-#: stock/serializers.py:765
+#: stock/serializers.py:752
msgid "Selected company is not a customer"
msgstr ""
-#: stock/serializers.py:773
+#: stock/serializers.py:760
msgid "Stock assignment notes"
msgstr ""
-#: stock/serializers.py:783 stock/serializers.py:1014
+#: stock/serializers.py:770 stock/serializers.py:1001
msgid "A list of stock items must be provided"
msgstr ""
-#: stock/serializers.py:872
+#: stock/serializers.py:859
msgid "Stock merging notes"
msgstr ""
-#: stock/serializers.py:877
+#: stock/serializers.py:864
msgid "Allow mismatched suppliers"
msgstr ""
-#: stock/serializers.py:878
+#: stock/serializers.py:865
msgid "Allow stock items with different supplier parts to be merged"
msgstr ""
-#: stock/serializers.py:883
+#: stock/serializers.py:870
msgid "Allow mismatched status"
msgstr ""
-#: stock/serializers.py:884
+#: stock/serializers.py:871
msgid "Allow stock items with different status codes to be merged"
msgstr ""
-#: stock/serializers.py:894
+#: stock/serializers.py:881
msgid "At least two stock items must be provided"
msgstr ""
-#: stock/serializers.py:976
+#: stock/serializers.py:963
msgid "StockItem primary key value"
msgstr ""
-#: stock/serializers.py:1004
+#: stock/serializers.py:991
msgid "Stock transaction notes"
msgstr ""
@@ -6185,7 +6175,7 @@ msgstr ""
msgid "Test Report"
msgstr ""
-#: stock/templates/stock/item.html:94
+#: stock/templates/stock/item.html:94 stock/templates/stock/item.html:298
msgid "Delete Test Data"
msgstr ""
@@ -6197,11 +6187,15 @@ msgstr ""
msgid "Installed Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:151 templates/js/translated/stock.js:2733
+#: stock/templates/stock/item.html:151 templates/js/translated/stock.js:2743
msgid "Install Stock Item"
msgstr ""
-#: stock/templates/stock/item.html:292 templates/js/translated/stock.js:1455
+#: stock/templates/stock/item.html:290
+msgid "Delete all test results for this stock item"
+msgstr ""
+
+#: stock/templates/stock/item.html:323 templates/js/translated/stock.js:1465
msgid "Add Test Result"
msgstr ""
@@ -6388,7 +6382,7 @@ msgid "Stale"
msgstr ""
#: stock/templates/stock/item_base.html:442
-#: templates/js/translated/stock.js:1832
+#: templates/js/translated/stock.js:1842
msgid "Last Updated"
msgstr ""
@@ -6529,7 +6523,7 @@ msgstr ""
msgid "Child Items"
msgstr ""
-#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:182
+#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:144
msgid "Convert Stock Item"
msgstr ""
@@ -6550,31 +6544,19 @@ msgstr "경고"
msgid "This action cannot be easily undone"
msgstr ""
-#: stock/views.py:113
+#: stock/views.py:111
msgid "Stock Location QR code"
msgstr ""
-#: stock/views.py:131
-msgid "Delete All Test Data"
-msgstr ""
-
-#: stock/views.py:149
-msgid "Confirm test data deletion"
-msgstr ""
-
-#: stock/views.py:150
-msgid "Check the confirmation box"
-msgstr ""
-
-#: stock/views.py:165
+#: stock/views.py:127
msgid "Stock Item QR Code"
msgstr ""
-#: stock/views.py:216
+#: stock/views.py:178
msgid "Delete Stock Location"
msgstr ""
-#: stock/views.py:229
+#: stock/views.py:191
msgid "Delete Stock Item"
msgstr ""
@@ -7317,8 +7299,8 @@ msgstr "InvenTree 버전 정보"
#: templates/about.html:11 templates/about.html:105
#: templates/js/translated/bom.js:133 templates/js/translated/bom.js:621
-#: templates/js/translated/modals.js:56 templates/js/translated/modals.js:595
-#: templates/js/translated/modals.js:689 templates/js/translated/modals.js:997
+#: templates/js/translated/modals.js:56 templates/js/translated/modals.js:601
+#: templates/js/translated/modals.js:695 templates/js/translated/modals.js:1003
#: templates/js/translated/order.js:928 templates/modals.html:15
#: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50
msgid "Close"
@@ -7390,6 +7372,10 @@ msgstr ""
msgid "Please confirm that %(email)s is an email address for user %(user_display)s."
msgstr ""
+#: templates/account/email_confirm.html:20 templates/js/translated/forms.js:630
+msgid "Confirm"
+msgstr "확인"
+
#: templates/account/email_confirm.html:27
#, python-format
msgid "This email confirmation link expired or is invalid. Please issue a new email confirmation request."
@@ -7562,7 +7548,7 @@ msgstr "첨부파일 추가"
msgid "Delete selected attachments"
msgstr ""
-#: templates/attachment_table.html:12 templates/js/translated/attachment.js:110
+#: templates/attachment_table.html:12 templates/js/translated/attachment.js:112
msgid "Delete Attachments"
msgstr ""
@@ -7596,15 +7582,15 @@ msgid "The following parts are low on required stock"
msgstr ""
#: templates/email/build_order_required_stock.html:18
-#: templates/js/translated/bom.js:1425
+#: templates/js/translated/bom.js:1419
msgid "Required Quantity"
msgstr ""
#: templates/email/build_order_required_stock.html:19
#: templates/email/low_stock_notification.html:18
-#: templates/js/translated/bom.js:890 templates/js/translated/build.js:1787
-#: templates/js/translated/build.js:2650 templates/js/translated/part.js:527
-#: templates/js/translated/part.js:530
+#: templates/js/translated/bom.js:884 templates/js/translated/build.js:1787
+#: templates/js/translated/build.js:2650 templates/js/translated/part.js:571
+#: templates/js/translated/part.js:574
#: templates/js/translated/table_filters.js:178
msgid "Available"
msgstr ""
@@ -7622,6 +7608,13 @@ msgstr ""
msgid "Minimum Quantity"
msgstr ""
+#: templates/email/new_order_assigned.html:9
+#: templates/email/overdue_build_order.html:9
+#: templates/email/overdue_purchase_order.html:9
+#: templates/email/overdue_sales_order.html:9
+msgid "Click on the following link to view this order"
+msgstr ""
+
#: templates/image_download.html:8
msgid "Specify URL for downloading image"
msgstr ""
@@ -7638,91 +7631,91 @@ msgstr ""
msgid "Remote image must not exceed maximum allowable file size"
msgstr ""
-#: templates/js/translated/api.js:235 templates/js/translated/modals.js:1067
+#: templates/js/translated/api.js:195 templates/js/translated/modals.js:1073
msgid "No Response"
msgstr ""
-#: templates/js/translated/api.js:236 templates/js/translated/modals.js:1068
+#: templates/js/translated/api.js:196 templates/js/translated/modals.js:1074
msgid "No response from the InvenTree server"
msgstr ""
-#: templates/js/translated/api.js:242
+#: templates/js/translated/api.js:202
msgid "Error 400: Bad request"
msgstr ""
-#: templates/js/translated/api.js:243
+#: templates/js/translated/api.js:203
msgid "API request returned error code 400"
msgstr ""
-#: templates/js/translated/api.js:247 templates/js/translated/modals.js:1077
+#: templates/js/translated/api.js:207 templates/js/translated/modals.js:1083
msgid "Error 401: Not Authenticated"
msgstr ""
-#: templates/js/translated/api.js:248 templates/js/translated/modals.js:1078
+#: templates/js/translated/api.js:208 templates/js/translated/modals.js:1084
msgid "Authentication credentials not supplied"
msgstr ""
-#: templates/js/translated/api.js:252 templates/js/translated/modals.js:1082
+#: templates/js/translated/api.js:212 templates/js/translated/modals.js:1088
msgid "Error 403: Permission Denied"
msgstr ""
-#: templates/js/translated/api.js:253 templates/js/translated/modals.js:1083
+#: templates/js/translated/api.js:213 templates/js/translated/modals.js:1089
msgid "You do not have the required permissions to access this function"
msgstr ""
-#: templates/js/translated/api.js:257 templates/js/translated/modals.js:1087
+#: templates/js/translated/api.js:217 templates/js/translated/modals.js:1093
msgid "Error 404: Resource Not Found"
msgstr ""
-#: templates/js/translated/api.js:258 templates/js/translated/modals.js:1088
+#: templates/js/translated/api.js:218 templates/js/translated/modals.js:1094
msgid "The requested resource could not be located on the server"
msgstr ""
-#: templates/js/translated/api.js:262
+#: templates/js/translated/api.js:222
msgid "Error 405: Method Not Allowed"
msgstr ""
-#: templates/js/translated/api.js:263
+#: templates/js/translated/api.js:223
msgid "HTTP method not allowed at URL"
msgstr ""
-#: templates/js/translated/api.js:267 templates/js/translated/modals.js:1092
+#: templates/js/translated/api.js:227 templates/js/translated/modals.js:1098
msgid "Error 408: Timeout"
msgstr "오류 408: 시간 초과"
-#: templates/js/translated/api.js:268 templates/js/translated/modals.js:1093
+#: templates/js/translated/api.js:228 templates/js/translated/modals.js:1099
msgid "Connection timeout while requesting data from server"
msgstr ""
-#: templates/js/translated/api.js:271
+#: templates/js/translated/api.js:231
msgid "Unhandled Error Code"
msgstr ""
-#: templates/js/translated/api.js:272
+#: templates/js/translated/api.js:232
msgid "Error code"
msgstr ""
-#: templates/js/translated/attachment.js:96
+#: templates/js/translated/attachment.js:98
msgid "All selected attachments will be deleted"
msgstr ""
-#: templates/js/translated/attachment.js:156
+#: templates/js/translated/attachment.js:152
msgid "No attachments found"
msgstr ""
-#: templates/js/translated/attachment.js:180
+#: templates/js/translated/attachment.js:176
msgid "Edit Attachment"
msgstr ""
-#: templates/js/translated/attachment.js:246
+#: templates/js/translated/attachment.js:242
msgid "Upload Date"
msgstr ""
-#: templates/js/translated/attachment.js:262
+#: templates/js/translated/attachment.js:264
msgid "Edit attachment"
msgstr ""
-#: templates/js/translated/attachment.js:269
+#: templates/js/translated/attachment.js:271
msgid "Delete attachment"
msgstr ""
@@ -7755,7 +7748,7 @@ msgid "Unknown response from server"
msgstr ""
#: templates/js/translated/barcode.js:182
-#: templates/js/translated/modals.js:1057
+#: templates/js/translated/modals.js:1063
msgid "Invalid server response"
msgstr ""
@@ -7783,7 +7776,7 @@ msgstr ""
msgid "Unlink"
msgstr ""
-#: templates/js/translated/barcode.js:456 templates/js/translated/stock.js:999
+#: templates/js/translated/barcode.js:456 templates/js/translated/stock.js:998
msgid "Remove stock item"
msgstr ""
@@ -7918,89 +7911,89 @@ msgstr ""
msgid "Edit BOM Item Substitutes"
msgstr ""
-#: templates/js/translated/bom.js:682
+#: templates/js/translated/bom.js:684
msgid "All selected BOM items will be deleted"
msgstr ""
-#: templates/js/translated/bom.js:697
+#: templates/js/translated/bom.js:699
msgid "Delete selected BOM items?"
msgstr ""
-#: templates/js/translated/bom.js:824
+#: templates/js/translated/bom.js:818
msgid "Load BOM for subassembly"
msgstr ""
-#: templates/js/translated/bom.js:834
+#: templates/js/translated/bom.js:828
msgid "Substitutes Available"
msgstr ""
-#: templates/js/translated/bom.js:838 templates/js/translated/build.js:1769
+#: templates/js/translated/bom.js:832 templates/js/translated/build.js:1769
msgid "Variant stock allowed"
msgstr ""
-#: templates/js/translated/bom.js:906 templates/js/translated/build.js:1814
+#: templates/js/translated/bom.js:900 templates/js/translated/build.js:1814
#: templates/js/translated/order.js:3562
msgid "No Stock Available"
msgstr ""
-#: templates/js/translated/bom.js:910 templates/js/translated/build.js:1818
+#: templates/js/translated/bom.js:904 templates/js/translated/build.js:1818
msgid "Includes variant and substitute stock"
msgstr ""
-#: templates/js/translated/bom.js:912 templates/js/translated/build.js:1820
-#: templates/js/translated/part.js:690
+#: templates/js/translated/bom.js:906 templates/js/translated/build.js:1820
+#: templates/js/translated/part.js:734
msgid "Includes variant stock"
msgstr ""
-#: templates/js/translated/bom.js:914 templates/js/translated/build.js:1822
+#: templates/js/translated/bom.js:908 templates/js/translated/build.js:1822
msgid "Includes substitute stock"
msgstr ""
-#: templates/js/translated/bom.js:928
+#: templates/js/translated/bom.js:922
msgid "Substitutes"
msgstr ""
-#: templates/js/translated/bom.js:943
+#: templates/js/translated/bom.js:937
msgid "Purchase Price Range"
msgstr ""
-#: templates/js/translated/bom.js:950
+#: templates/js/translated/bom.js:944
msgid "Purchase Price Average"
msgstr ""
-#: templates/js/translated/bom.js:999 templates/js/translated/bom.js:1090
+#: templates/js/translated/bom.js:993 templates/js/translated/bom.js:1084
msgid "View BOM"
msgstr ""
-#: templates/js/translated/bom.js:1061
+#: templates/js/translated/bom.js:1055
msgid "Validate BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:1063
+#: templates/js/translated/bom.js:1057
msgid "This line has been validated"
msgstr ""
-#: templates/js/translated/bom.js:1065
+#: templates/js/translated/bom.js:1059
msgid "Edit substitute parts"
msgstr ""
-#: templates/js/translated/bom.js:1067 templates/js/translated/bom.js:1228
+#: templates/js/translated/bom.js:1061 templates/js/translated/bom.js:1222
msgid "Edit BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:1069
+#: templates/js/translated/bom.js:1063
msgid "Delete BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:1164 templates/js/translated/build.js:1615
+#: templates/js/translated/bom.js:1158 templates/js/translated/build.js:1615
msgid "No BOM items found"
msgstr ""
-#: templates/js/translated/bom.js:1408 templates/js/translated/build.js:1753
+#: templates/js/translated/bom.js:1402 templates/js/translated/build.js:1753
msgid "Required Part"
msgstr ""
-#: templates/js/translated/bom.js:1430
+#: templates/js/translated/bom.js:1424
msgid "Inherited from parent BOM"
msgstr ""
@@ -8040,13 +8033,13 @@ msgstr ""
msgid "Complete Build Order"
msgstr ""
-#: templates/js/translated/build.js:259 templates/js/translated/stock.js:91
-#: templates/js/translated/stock.js:181
+#: templates/js/translated/build.js:259 templates/js/translated/stock.js:90
+#: templates/js/translated/stock.js:180
msgid "Next available serial number"
msgstr ""
-#: templates/js/translated/build.js:261 templates/js/translated/stock.js:93
-#: templates/js/translated/stock.js:183
+#: templates/js/translated/build.js:261 templates/js/translated/stock.js:92
+#: templates/js/translated/stock.js:182
msgid "Latest serial number"
msgstr ""
@@ -8259,9 +8252,9 @@ msgstr ""
msgid "No builds matching query"
msgstr ""
-#: templates/js/translated/build.js:2448 templates/js/translated/part.js:1314
-#: templates/js/translated/part.js:1729 templates/js/translated/stock.js:1619
-#: templates/js/translated/stock.js:2277
+#: templates/js/translated/build.js:2448 templates/js/translated/part.js:1358
+#: templates/js/translated/part.js:1825 templates/js/translated/stock.js:1629
+#: templates/js/translated/stock.js:2287
msgid "Select"
msgstr "선택"
@@ -8273,7 +8266,7 @@ msgstr ""
msgid "Progress"
msgstr ""
-#: templates/js/translated/build.js:2532 templates/js/translated/stock.js:2519
+#: templates/js/translated/build.js:2532 templates/js/translated/stock.js:2529
msgid "No user information"
msgstr ""
@@ -8285,107 +8278,107 @@ msgstr ""
msgid "No parts allocated for"
msgstr ""
-#: templates/js/translated/company.js:66
+#: templates/js/translated/company.js:65
msgid "Add Manufacturer"
msgstr ""
-#: templates/js/translated/company.js:79 templates/js/translated/company.js:169
+#: templates/js/translated/company.js:78 templates/js/translated/company.js:168
msgid "Add Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:100
+#: templates/js/translated/company.js:99
msgid "Edit Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:157 templates/js/translated/order.js:506
+#: templates/js/translated/company.js:156 templates/js/translated/order.js:506
msgid "Add Supplier"
msgstr ""
-#: templates/js/translated/company.js:185
+#: templates/js/translated/company.js:184
msgid "Add Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:200
+#: templates/js/translated/company.js:199
msgid "Edit Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:248
+#: templates/js/translated/company.js:249
msgid "All selected supplier parts will be deleted"
msgstr ""
-#: templates/js/translated/company.js:263
+#: templates/js/translated/company.js:264
msgid "Delete Supplier Parts"
msgstr ""
-#: templates/js/translated/company.js:342
+#: templates/js/translated/company.js:336
msgid "Add new Company"
msgstr ""
-#: templates/js/translated/company.js:419
+#: templates/js/translated/company.js:413
msgid "Parts Supplied"
msgstr ""
-#: templates/js/translated/company.js:428
+#: templates/js/translated/company.js:422
msgid "Parts Manufactured"
msgstr ""
-#: templates/js/translated/company.js:443
+#: templates/js/translated/company.js:437
msgid "No company information found"
msgstr ""
-#: templates/js/translated/company.js:482
+#: templates/js/translated/company.js:478
msgid "All selected manufacturer parts will be deleted"
msgstr ""
-#: templates/js/translated/company.js:496
+#: templates/js/translated/company.js:492
msgid "Delete Manufacturer Parts"
msgstr ""
-#: templates/js/translated/company.js:535
+#: templates/js/translated/company.js:526
msgid "All selected parameters will be deleted"
msgstr ""
-#: templates/js/translated/company.js:548
+#: templates/js/translated/company.js:539
msgid "Delete Parameters"
msgstr ""
-#: templates/js/translated/company.js:595
+#: templates/js/translated/company.js:580
msgid "No manufacturer parts found"
msgstr ""
-#: templates/js/translated/company.js:615
-#: templates/js/translated/company.js:874 templates/js/translated/part.js:565
-#: templates/js/translated/part.js:650
+#: templates/js/translated/company.js:600
+#: templates/js/translated/company.js:859 templates/js/translated/part.js:609
+#: templates/js/translated/part.js:694
msgid "Template part"
msgstr ""
-#: templates/js/translated/company.js:619
-#: templates/js/translated/company.js:878 templates/js/translated/part.js:569
-#: templates/js/translated/part.js:654
+#: templates/js/translated/company.js:604
+#: templates/js/translated/company.js:863 templates/js/translated/part.js:613
+#: templates/js/translated/part.js:698
msgid "Assembled part"
msgstr ""
-#: templates/js/translated/company.js:747 templates/js/translated/part.js:757
+#: templates/js/translated/company.js:732 templates/js/translated/part.js:801
msgid "No parameters found"
msgstr ""
-#: templates/js/translated/company.js:784 templates/js/translated/part.js:799
+#: templates/js/translated/company.js:769 templates/js/translated/part.js:843
msgid "Edit parameter"
msgstr ""
-#: templates/js/translated/company.js:785 templates/js/translated/part.js:800
+#: templates/js/translated/company.js:770 templates/js/translated/part.js:844
msgid "Delete parameter"
msgstr ""
-#: templates/js/translated/company.js:804 templates/js/translated/part.js:817
+#: templates/js/translated/company.js:789 templates/js/translated/part.js:861
msgid "Edit Parameter"
msgstr ""
-#: templates/js/translated/company.js:815 templates/js/translated/part.js:829
+#: templates/js/translated/company.js:800 templates/js/translated/part.js:873
msgid "Delete Parameter"
msgstr ""
-#: templates/js/translated/company.js:854
+#: templates/js/translated/company.js:839
msgid "No supplier parts found"
msgstr ""
@@ -8448,36 +8441,36 @@ msgstr ""
msgid "Keep this form open"
msgstr ""
-#: templates/js/translated/forms.js:756
+#: templates/js/translated/forms.js:757
msgid "Enter a valid number"
msgstr ""
-#: templates/js/translated/forms.js:1248 templates/modals.html:19
+#: templates/js/translated/forms.js:1249 templates/modals.html:19
#: templates/modals.html:43
msgid "Form errors exist"
msgstr ""
-#: templates/js/translated/forms.js:1681
+#: templates/js/translated/forms.js:1682
msgid "No results found"
msgstr ""
-#: templates/js/translated/forms.js:1896 templates/search.html:29
+#: templates/js/translated/forms.js:1897 templates/search.html:29
msgid "Searching"
msgstr ""
-#: templates/js/translated/forms.js:2149
+#: templates/js/translated/forms.js:2150
msgid "Clear input"
msgstr ""
-#: templates/js/translated/forms.js:2615
+#: templates/js/translated/forms.js:2616
msgid "File Column"
msgstr ""
-#: templates/js/translated/forms.js:2615
+#: templates/js/translated/forms.js:2616
msgid "Field Name"
msgstr ""
-#: templates/js/translated/forms.js:2627
+#: templates/js/translated/forms.js:2628
msgid "Select Columns"
msgstr ""
@@ -8498,7 +8491,7 @@ msgid "Labels sent to printer"
msgstr ""
#: templates/js/translated/label.js:60 templates/js/translated/report.js:118
-#: templates/js/translated/stock.js:1023
+#: templates/js/translated/stock.js:1022
msgid "Select Stock Items"
msgstr ""
@@ -8552,12 +8545,12 @@ msgid "Select Label Template"
msgstr ""
#: templates/js/translated/modals.js:82 templates/js/translated/modals.js:142
-#: templates/js/translated/modals.js:621
+#: templates/js/translated/modals.js:627
msgid "Cancel"
msgstr "취소"
#: templates/js/translated/modals.js:83 templates/js/translated/modals.js:141
-#: templates/js/translated/modals.js:688 templates/js/translated/modals.js:996
+#: templates/js/translated/modals.js:694 templates/js/translated/modals.js:1002
#: templates/modals.html:28 templates/modals.html:51
msgid "Submit"
msgstr "제출"
@@ -8566,47 +8559,47 @@ msgstr "제출"
msgid "Form Title"
msgstr ""
-#: templates/js/translated/modals.js:403
+#: templates/js/translated/modals.js:421
msgid "Waiting for server..."
msgstr ""
-#: templates/js/translated/modals.js:562
+#: templates/js/translated/modals.js:568
msgid "Show Error Information"
msgstr ""
-#: templates/js/translated/modals.js:620
+#: templates/js/translated/modals.js:626
msgid "Accept"
msgstr ""
-#: templates/js/translated/modals.js:677
+#: templates/js/translated/modals.js:683
msgid "Loading Data"
msgstr ""
-#: templates/js/translated/modals.js:948
+#: templates/js/translated/modals.js:954
msgid "Invalid response from server"
msgstr ""
-#: templates/js/translated/modals.js:948
+#: templates/js/translated/modals.js:954
msgid "Form data missing from server response"
msgstr ""
-#: templates/js/translated/modals.js:960
+#: templates/js/translated/modals.js:966
msgid "Error posting form data"
msgstr ""
-#: templates/js/translated/modals.js:1057
+#: templates/js/translated/modals.js:1063
msgid "JSON response missing form data"
msgstr ""
-#: templates/js/translated/modals.js:1072
+#: templates/js/translated/modals.js:1078
msgid "Error 400: Bad Request"
msgstr ""
-#: templates/js/translated/modals.js:1073
+#: templates/js/translated/modals.js:1079
msgid "Server returned error code 400"
msgstr ""
-#: templates/js/translated/modals.js:1096
+#: templates/js/translated/modals.js:1102
msgid "Error requesting form data"
msgstr ""
@@ -8656,11 +8649,11 @@ msgstr ""
msgid "Mark as read"
msgstr ""
-#: templates/js/translated/notification.js:259
+#: templates/js/translated/notification.js:260
msgid "No unread notifications"
msgstr ""
-#: templates/js/translated/notification.js:300 templates/notifications.html:10
+#: templates/js/translated/notification.js:302 templates/notifications.html:10
msgid "Notifications will load here"
msgstr ""
@@ -8804,7 +8797,7 @@ msgstr ""
msgid "Quantity to receive"
msgstr ""
-#: templates/js/translated/order.js:1225 templates/js/translated/stock.js:2080
+#: templates/js/translated/order.js:1225 templates/js/translated/stock.js:2090
msgid "Stock Status"
msgstr ""
@@ -8828,7 +8821,7 @@ msgstr ""
msgid "Receive Purchase Order Items"
msgstr ""
-#: templates/js/translated/order.js:1602 templates/js/translated/part.js:870
+#: templates/js/translated/order.js:1602 templates/js/translated/part.js:914
msgid "No purchase orders found"
msgstr ""
@@ -8863,7 +8856,7 @@ msgstr ""
#: templates/js/translated/order.js:1937 templates/js/translated/order.js:2139
#: templates/js/translated/order.js:3467 templates/js/translated/order.js:3978
-#: templates/js/translated/part.js:1948 templates/js/translated/part.js:2301
+#: templates/js/translated/part.js:2044 templates/js/translated/part.js:2397
msgid "Unit Price"
msgstr "단가"
@@ -8873,11 +8866,11 @@ msgid "Total Price"
msgstr ""
#: templates/js/translated/order.js:1993 templates/js/translated/order.js:3525
-#: templates/js/translated/part.js:979
+#: templates/js/translated/part.js:1023
msgid "This line item is overdue"
msgstr ""
-#: templates/js/translated/order.js:2052 templates/js/translated/part.js:1025
+#: templates/js/translated/order.js:2052 templates/js/translated/part.js:1069
msgid "Receive line item"
msgstr ""
@@ -8998,7 +8991,7 @@ msgid "Delete Stock Allocation"
msgstr ""
#: templates/js/translated/order.js:3243 templates/js/translated/order.js:3332
-#: templates/js/translated/stock.js:1535
+#: templates/js/translated/stock.js:1545
msgid "Shipped to customer"
msgstr ""
@@ -9138,165 +9131,209 @@ msgstr ""
msgid "Create Part Variant"
msgstr ""
+#: templates/js/translated/part.js:405
+msgid "Active Part"
+msgstr ""
+
+#: templates/js/translated/part.js:406
+msgid "Part cannot be deleted as it is currently active"
+msgstr ""
+
+#: templates/js/translated/part.js:420
+msgid "Deleting this part cannot be reversed"
+msgstr ""
+
+#: templates/js/translated/part.js:422
+msgid "Any stock items for this part will be deleted"
+msgstr ""
+
#: templates/js/translated/part.js:423
+msgid "This part will be removed from any Bills of Material"
+msgstr ""
+
+#: templates/js/translated/part.js:424
+msgid "All manufacturer and supplier information for this part will be deleted"
+msgstr ""
+
+#: templates/js/translated/part.js:431
+msgid "Delete Part"
+msgstr ""
+
+#: templates/js/translated/part.js:467
msgid "You are subscribed to notifications for this item"
msgstr ""
-#: templates/js/translated/part.js:425
+#: templates/js/translated/part.js:469
msgid "You have subscribed to notifications for this item"
msgstr ""
-#: templates/js/translated/part.js:430
+#: templates/js/translated/part.js:474
msgid "Subscribe to notifications for this item"
msgstr ""
-#: templates/js/translated/part.js:432
+#: templates/js/translated/part.js:476
msgid "You have unsubscribed to notifications for this item"
msgstr ""
-#: templates/js/translated/part.js:449
+#: templates/js/translated/part.js:493
msgid "Validating the BOM will mark each line item as valid"
msgstr ""
-#: templates/js/translated/part.js:459
+#: templates/js/translated/part.js:503
msgid "Validate Bill of Materials"
msgstr ""
-#: templates/js/translated/part.js:462
+#: templates/js/translated/part.js:506
msgid "Validated Bill of Materials"
msgstr ""
-#: templates/js/translated/part.js:487
+#: templates/js/translated/part.js:531
msgid "Copy Bill of Materials"
msgstr "부품 명세서 복사"
-#: templates/js/translated/part.js:513 templates/js/translated/part.js:1397
+#: templates/js/translated/part.js:557 templates/js/translated/part.js:1441
#: templates/js/translated/table_filters.js:452
msgid "Low stock"
msgstr ""
-#: templates/js/translated/part.js:523 templates/js/translated/part.js:1409
+#: templates/js/translated/part.js:567 templates/js/translated/part.js:1453
msgid "No stock available"
msgstr ""
-#: templates/js/translated/part.js:557 templates/js/translated/part.js:642
+#: templates/js/translated/part.js:601 templates/js/translated/part.js:686
msgid "Trackable part"
msgstr ""
-#: templates/js/translated/part.js:561 templates/js/translated/part.js:646
+#: templates/js/translated/part.js:605 templates/js/translated/part.js:690
msgid "Virtual part"
msgstr ""
-#: templates/js/translated/part.js:573
+#: templates/js/translated/part.js:617
msgid "Subscribed part"
msgstr ""
-#: templates/js/translated/part.js:577
+#: templates/js/translated/part.js:621
msgid "Salable part"
msgstr ""
-#: templates/js/translated/part.js:705
+#: templates/js/translated/part.js:749
msgid "No variants found"
msgstr ""
-#: templates/js/translated/part.js:1095
+#: templates/js/translated/part.js:1139
msgid "Delete part relationship"
msgstr ""
-#: templates/js/translated/part.js:1119
+#: templates/js/translated/part.js:1163
msgid "Delete Part Relationship"
msgstr ""
-#: templates/js/translated/part.js:1184 templates/js/translated/part.js:1480
+#: templates/js/translated/part.js:1228 templates/js/translated/part.js:1524
msgid "No parts found"
msgstr ""
-#: templates/js/translated/part.js:1223
+#: templates/js/translated/part.js:1267
msgid "Not available"
msgstr ""
-#: templates/js/translated/part.js:1374
+#: templates/js/translated/part.js:1418
msgid "No category"
msgstr ""
-#: templates/js/translated/part.js:1504 templates/js/translated/part.js:1664
-#: templates/js/translated/stock.js:2238
+#: templates/js/translated/part.js:1548 templates/js/translated/part.js:1760
+#: templates/js/translated/stock.js:2248
msgid "Display as list"
msgstr ""
-#: templates/js/translated/part.js:1520
+#: templates/js/translated/part.js:1564
msgid "Display as grid"
msgstr ""
-#: templates/js/translated/part.js:1683 templates/js/translated/stock.js:2257
+#: templates/js/translated/part.js:1630
+msgid "Set the part category for the selected parts"
+msgstr ""
+
+#: templates/js/translated/part.js:1635
+msgid "Set Part Category"
+msgstr ""
+
+#: templates/js/translated/part.js:1640
+msgid "Select Part Category"
+msgstr ""
+
+#: templates/js/translated/part.js:1653
+msgid "Category is required"
+msgstr ""
+
+#: templates/js/translated/part.js:1779 templates/js/translated/stock.js:2267
msgid "Display as tree"
msgstr ""
-#: templates/js/translated/part.js:1747
+#: templates/js/translated/part.js:1843
msgid "Subscribed category"
msgstr ""
-#: templates/js/translated/part.js:1761 templates/js/translated/stock.js:2301
+#: templates/js/translated/part.js:1857 templates/js/translated/stock.js:2311
msgid "Path"
msgstr ""
-#: templates/js/translated/part.js:1805
+#: templates/js/translated/part.js:1901
msgid "No test templates matching query"
msgstr ""
-#: templates/js/translated/part.js:1856 templates/js/translated/stock.js:1233
+#: templates/js/translated/part.js:1952 templates/js/translated/stock.js:1243
msgid "Edit test result"
msgstr ""
-#: templates/js/translated/part.js:1857 templates/js/translated/stock.js:1234
-#: templates/js/translated/stock.js:1493
+#: templates/js/translated/part.js:1953 templates/js/translated/stock.js:1244
+#: templates/js/translated/stock.js:1503
msgid "Delete test result"
msgstr ""
-#: templates/js/translated/part.js:1863
+#: templates/js/translated/part.js:1959
msgid "This test is defined for a parent part"
msgstr ""
-#: templates/js/translated/part.js:1885
+#: templates/js/translated/part.js:1981
msgid "Edit Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:1899
+#: templates/js/translated/part.js:1995
msgid "Delete Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:1924
+#: templates/js/translated/part.js:2020
#, python-brace-format
msgid "No ${human_name} information found"
msgstr ""
-#: templates/js/translated/part.js:1981
+#: templates/js/translated/part.js:2077
#, python-brace-format
msgid "Edit ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:1982
+#: templates/js/translated/part.js:2078
#, python-brace-format
msgid "Delete ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:2096
+#: templates/js/translated/part.js:2192
msgid "Current Stock"
msgstr ""
-#: templates/js/translated/part.js:2129
+#: templates/js/translated/part.js:2225
msgid "No scheduling information available for this part"
msgstr ""
-#: templates/js/translated/part.js:2155
+#: templates/js/translated/part.js:2251
msgid "Scheduled Stock Quantities"
msgstr ""
-#: templates/js/translated/part.js:2225
+#: templates/js/translated/part.js:2321
msgid "Single Price"
msgstr ""
-#: templates/js/translated/part.js:2244
+#: templates/js/translated/part.js:2340
msgid "Single Price Difference"
msgstr ""
@@ -9378,360 +9415,360 @@ msgstr ""
msgid "Remove results"
msgstr ""
-#: templates/js/translated/stock.js:73
+#: templates/js/translated/stock.js:72
msgid "Serialize Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:101
+#: templates/js/translated/stock.js:100
msgid "Confirm Stock Serialization"
msgstr ""
-#: templates/js/translated/stock.js:110
+#: templates/js/translated/stock.js:109
msgid "Parent stock location"
msgstr ""
-#: templates/js/translated/stock.js:139
+#: templates/js/translated/stock.js:138
msgid "Edit Stock Location"
msgstr ""
-#: templates/js/translated/stock.js:154
+#: templates/js/translated/stock.js:153
msgid "New Stock Location"
msgstr ""
-#: templates/js/translated/stock.js:194
+#: templates/js/translated/stock.js:193
msgid "This part cannot be serialized"
msgstr ""
-#: templates/js/translated/stock.js:233
+#: templates/js/translated/stock.js:232
msgid "Enter initial quantity for this stock item"
msgstr ""
-#: templates/js/translated/stock.js:239
+#: templates/js/translated/stock.js:238
msgid "Enter serial numbers for new stock (or leave blank)"
msgstr ""
-#: templates/js/translated/stock.js:304
+#: templates/js/translated/stock.js:303
msgid "Stock item duplicated"
msgstr ""
-#: templates/js/translated/stock.js:324
+#: templates/js/translated/stock.js:323
msgid "Duplicate Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:344
+#: templates/js/translated/stock.js:343
msgid "Edit Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:394
+#: templates/js/translated/stock.js:393
msgid "Created new stock item"
msgstr ""
-#: templates/js/translated/stock.js:407
+#: templates/js/translated/stock.js:406
msgid "Created multiple stock items"
msgstr ""
-#: templates/js/translated/stock.js:432
+#: templates/js/translated/stock.js:431
msgid "Find Serial Number"
msgstr "일련번호 찾기"
-#: templates/js/translated/stock.js:436 templates/js/translated/stock.js:437
+#: templates/js/translated/stock.js:435 templates/js/translated/stock.js:436
msgid "Enter serial number"
msgstr "일련번호를 입력하세요"
-#: templates/js/translated/stock.js:453
+#: templates/js/translated/stock.js:452
msgid "Enter a serial number"
msgstr "일련번호를 입력하세요"
-#: templates/js/translated/stock.js:473
+#: templates/js/translated/stock.js:472
msgid "No matching serial number"
msgstr "일치하는 일련번호가 없습니다"
-#: templates/js/translated/stock.js:482
+#: templates/js/translated/stock.js:481
msgid "More than one matching result found"
msgstr ""
-#: templates/js/translated/stock.js:605
+#: templates/js/translated/stock.js:604
msgid "Confirm stock assignment"
msgstr ""
-#: templates/js/translated/stock.js:606
+#: templates/js/translated/stock.js:605
msgid "Assign Stock to Customer"
msgstr ""
-#: templates/js/translated/stock.js:683
+#: templates/js/translated/stock.js:682
msgid "Warning: Merge operation cannot be reversed"
msgstr ""
-#: templates/js/translated/stock.js:684
+#: templates/js/translated/stock.js:683
msgid "Some information will be lost when merging stock items"
msgstr ""
-#: templates/js/translated/stock.js:686
+#: templates/js/translated/stock.js:685
msgid "Stock transaction history will be deleted for merged items"
msgstr ""
-#: templates/js/translated/stock.js:687
+#: templates/js/translated/stock.js:686
msgid "Supplier part information will be deleted for merged items"
msgstr ""
-#: templates/js/translated/stock.js:773
+#: templates/js/translated/stock.js:772
msgid "Confirm stock item merge"
msgstr ""
-#: templates/js/translated/stock.js:774
+#: templates/js/translated/stock.js:773
msgid "Merge Stock Items"
msgstr ""
-#: templates/js/translated/stock.js:869
+#: templates/js/translated/stock.js:868
msgid "Transfer Stock"
msgstr ""
-#: templates/js/translated/stock.js:870
+#: templates/js/translated/stock.js:869
msgid "Move"
msgstr ""
-#: templates/js/translated/stock.js:876
+#: templates/js/translated/stock.js:875
msgid "Count Stock"
msgstr ""
-#: templates/js/translated/stock.js:877
+#: templates/js/translated/stock.js:876
msgid "Count"
msgstr ""
-#: templates/js/translated/stock.js:881
+#: templates/js/translated/stock.js:880
msgid "Remove Stock"
msgstr ""
-#: templates/js/translated/stock.js:882
+#: templates/js/translated/stock.js:881
msgid "Take"
msgstr ""
-#: templates/js/translated/stock.js:886
+#: templates/js/translated/stock.js:885
msgid "Add Stock"
msgstr ""
-#: templates/js/translated/stock.js:887 users/models.py:215
+#: templates/js/translated/stock.js:886 users/models.py:215
msgid "Add"
msgstr ""
-#: templates/js/translated/stock.js:891
+#: templates/js/translated/stock.js:890
msgid "Delete Stock"
msgstr ""
-#: templates/js/translated/stock.js:984
+#: templates/js/translated/stock.js:983
msgid "Quantity cannot be adjusted for serialized stock"
msgstr ""
-#: templates/js/translated/stock.js:984
+#: templates/js/translated/stock.js:983
msgid "Specify stock quantity"
msgstr ""
-#: templates/js/translated/stock.js:1024
+#: templates/js/translated/stock.js:1023
msgid "You must select at least one available stock item"
msgstr ""
-#: templates/js/translated/stock.js:1047
+#: templates/js/translated/stock.js:1046
msgid "Confirm stock adjustment"
msgstr ""
-#: templates/js/translated/stock.js:1172
+#: templates/js/translated/stock.js:1182
msgid "PASS"
msgstr ""
-#: templates/js/translated/stock.js:1174
+#: templates/js/translated/stock.js:1184
msgid "FAIL"
msgstr ""
-#: templates/js/translated/stock.js:1179
+#: templates/js/translated/stock.js:1189
msgid "NO RESULT"
msgstr ""
-#: templates/js/translated/stock.js:1226
+#: templates/js/translated/stock.js:1236
msgid "Pass test"
msgstr ""
-#: templates/js/translated/stock.js:1229
+#: templates/js/translated/stock.js:1239
msgid "Add test result"
msgstr ""
-#: templates/js/translated/stock.js:1255
+#: templates/js/translated/stock.js:1265
msgid "No test results found"
msgstr ""
-#: templates/js/translated/stock.js:1311
+#: templates/js/translated/stock.js:1321
msgid "Test Date"
msgstr ""
-#: templates/js/translated/stock.js:1476
+#: templates/js/translated/stock.js:1486
msgid "Edit Test Result"
msgstr ""
-#: templates/js/translated/stock.js:1498
+#: templates/js/translated/stock.js:1508
msgid "Delete Test Result"
msgstr ""
-#: templates/js/translated/stock.js:1527
+#: templates/js/translated/stock.js:1537
msgid "In production"
msgstr ""
-#: templates/js/translated/stock.js:1531
+#: templates/js/translated/stock.js:1541
msgid "Installed in Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:1539
+#: templates/js/translated/stock.js:1549
msgid "Assigned to Sales Order"
msgstr ""
-#: templates/js/translated/stock.js:1545
+#: templates/js/translated/stock.js:1555
msgid "No stock location set"
msgstr ""
-#: templates/js/translated/stock.js:1712
+#: templates/js/translated/stock.js:1722
msgid "Stock item is in production"
msgstr ""
-#: templates/js/translated/stock.js:1717
+#: templates/js/translated/stock.js:1727
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:1720
+#: templates/js/translated/stock.js:1730
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:1723
+#: templates/js/translated/stock.js:1733
msgid "Serialized stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:1725
+#: templates/js/translated/stock.js:1735
msgid "Stock item has been fully allocated"
msgstr ""
-#: templates/js/translated/stock.js:1727
+#: templates/js/translated/stock.js:1737
msgid "Stock item has been partially allocated"
msgstr ""
-#: templates/js/translated/stock.js:1730
+#: templates/js/translated/stock.js:1740
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:1734
+#: templates/js/translated/stock.js:1744
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:1736
+#: templates/js/translated/stock.js:1746
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:1743
+#: templates/js/translated/stock.js:1753
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:1745
+#: templates/js/translated/stock.js:1755
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:1747
+#: templates/js/translated/stock.js:1757
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:1751
+#: templates/js/translated/stock.js:1761
#: templates/js/translated/table_filters.js:188
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:1802
+#: templates/js/translated/stock.js:1812
msgid "Stocktake"
msgstr ""
-#: templates/js/translated/stock.js:1884
+#: templates/js/translated/stock.js:1894
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:1922
+#: templates/js/translated/stock.js:1932
msgid "No stock items matching query"
msgstr ""
-#: templates/js/translated/stock.js:2095
+#: templates/js/translated/stock.js:2105
msgid "Set Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:2109
+#: templates/js/translated/stock.js:2119
msgid "Select Status Code"
msgstr ""
-#: templates/js/translated/stock.js:2110
+#: templates/js/translated/stock.js:2120
msgid "Status code must be selected"
msgstr ""
-#: templates/js/translated/stock.js:2365
+#: templates/js/translated/stock.js:2375
msgid "Details"
msgstr ""
-#: templates/js/translated/stock.js:2381
+#: templates/js/translated/stock.js:2391
msgid "Part information unavailable"
msgstr ""
-#: templates/js/translated/stock.js:2403
+#: templates/js/translated/stock.js:2413
msgid "Location no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2422
+#: templates/js/translated/stock.js:2432
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2441
+#: templates/js/translated/stock.js:2451
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2459
+#: templates/js/translated/stock.js:2469
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2482
+#: templates/js/translated/stock.js:2492
msgid "Added"
msgstr ""
-#: templates/js/translated/stock.js:2490
+#: templates/js/translated/stock.js:2500
msgid "Removed"
msgstr ""
-#: templates/js/translated/stock.js:2566
+#: templates/js/translated/stock.js:2576
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:2617 templates/js/translated/stock.js:2653
+#: templates/js/translated/stock.js:2627 templates/js/translated/stock.js:2663
msgid "Uninstall Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:2666
+#: templates/js/translated/stock.js:2676
msgid "Select stock item to uninstall"
msgstr ""
-#: templates/js/translated/stock.js:2687
+#: templates/js/translated/stock.js:2697
msgid "Install another stock item into this item"
msgstr ""
-#: templates/js/translated/stock.js:2688
+#: templates/js/translated/stock.js:2698
msgid "Stock items can only be installed if they meet the following criteria"
msgstr ""
-#: templates/js/translated/stock.js:2690
+#: templates/js/translated/stock.js:2700
msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:2691
+#: templates/js/translated/stock.js:2701
msgid "The Stock Item is currently available in stock"
msgstr ""
-#: templates/js/translated/stock.js:2692
+#: templates/js/translated/stock.js:2702
msgid "The Stock Item is not already installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:2693
+#: templates/js/translated/stock.js:2703
msgid "The Stock Item is tracked by either a batch code or serial number"
msgstr ""
-#: templates/js/translated/stock.js:2706
+#: templates/js/translated/stock.js:2716
msgid "Select part to install"
msgstr ""
diff --git a/InvenTree/locale/nl/LC_MESSAGES/django.po b/InvenTree/locale/nl/LC_MESSAGES/django.po
index cb99d4f47b..26d1304f92 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: 2022-06-05 14:26+0000\n"
-"PO-Revision-Date: 2022-06-05 14:34\n"
+"POT-Creation-Date: 2022-06-06 22:59+0000\n"
+"PO-Revision-Date: 2022-06-07 14:34\n"
"Last-Translator: \n"
"Language-Team: Dutch\n"
"Language: nl_NL\n"
@@ -17,7 +17,7 @@ msgstr ""
"X-Crowdin-File: /[inventree.InvenTree] l10/InvenTree/locale/en/LC_MESSAGES/django.po\n"
"X-Crowdin-File-ID: 154\n"
-#: InvenTree/api.py:46
+#: InvenTree/api.py:49
msgid "API endpoint not found"
msgstr "API eindpunt niet gevonden"
@@ -29,275 +29,273 @@ msgstr "Error details kunnen worden gevonden in het admin scherm"
msgid "Enter date"
msgstr "Voer datum in"
-#: InvenTree/forms.py:117 templates/account/email_confirm.html:20
-#: templates/js/translated/forms.js:630
-msgid "Confirm"
-msgstr "Bevestigen"
-
-#: InvenTree/forms.py:134
+#: InvenTree/forms.py:117
msgid "Confirm delete"
msgstr "Bevestig verwijdering"
-#: InvenTree/forms.py:135
+#: InvenTree/forms.py:118
msgid "Confirm item deletion"
msgstr "Bevestig item verwijdering"
-#: InvenTree/forms.py:167
+#: InvenTree/forms.py:150
msgid "Enter password"
msgstr "Voer wachtwoord in"
-#: InvenTree/forms.py:168
+#: InvenTree/forms.py:151
msgid "Enter new password"
msgstr "Voer een nieuw wachtwoord in"
-#: InvenTree/forms.py:175
+#: InvenTree/forms.py:158
msgid "Confirm password"
msgstr "Wachtwoord bevestigen"
-#: InvenTree/forms.py:176
+#: InvenTree/forms.py:159
msgid "Confirm new password"
msgstr "Nieuw wachtwoord bevestigen"
-#: InvenTree/forms.py:213
-msgid "Select Category"
-msgstr "Categorie selecteren"
-
-#: InvenTree/forms.py:234
+#: InvenTree/forms.py:184
msgid "Email (again)"
msgstr "E-mailadres (opnieuw)"
-#: InvenTree/forms.py:238
+#: InvenTree/forms.py:188
msgid "Email address confirmation"
msgstr "E-mailadres bevestiging"
-#: InvenTree/forms.py:259
+#: InvenTree/forms.py:209
msgid "You must type the same email each time."
msgstr "Er moet hetzelfde e-mailadres ingevoerd worden."
-#: InvenTree/helpers.py:402
+#: InvenTree/helpers.py:404
#, python-brace-format
msgid "Duplicate serial: {sn}"
msgstr "Duplicaat serienummer: {sn}"
-#: InvenTree/helpers.py:409 order/models.py:365 order/models.py:517
+#: InvenTree/helpers.py:411 order/models.py:370 order/models.py:522
msgid "Invalid quantity provided"
msgstr "Ongeldige hoeveelheid ingevoerd"
-#: InvenTree/helpers.py:412
+#: InvenTree/helpers.py:414
msgid "Empty serial number string"
msgstr "Leeg serienummer"
-#: InvenTree/helpers.py:444
+#: InvenTree/helpers.py:446
#, python-brace-format
msgid "Invalid group range: {g}"
msgstr "Ongeldig groepsbereik: {g}"
-#: InvenTree/helpers.py:447
+#: InvenTree/helpers.py:449
#, python-brace-format
msgid "Invalid group: {g}"
msgstr "Ongeldige groep: {g}"
-#: InvenTree/helpers.py:475
+#: InvenTree/helpers.py:477
#, python-brace-format
msgid "Invalid group sequence: {g}"
msgstr "Ongeldig groepsbereik: {g}"
-#: InvenTree/helpers.py:483
+#: InvenTree/helpers.py:485
#, python-brace-format
msgid "Invalid/no group {group}"
msgstr "Ongeldige/geen groep {group}"
-#: InvenTree/helpers.py:489
+#: InvenTree/helpers.py:491
msgid "No serial numbers found"
msgstr "Geen serienummers gevonden"
-#: InvenTree/helpers.py:493
+#: InvenTree/helpers.py:495
#, python-brace-format
msgid "Number of unique serial numbers ({s}) must match quantity ({q})"
msgstr "Hoeveelheid van unieke serienummers ({s}) moet overeenkomen met de hoeveelheid ({q})"
-#: InvenTree/models.py:174
+#: InvenTree/models.py:178
msgid "Missing file"
msgstr "Ontbrekend bestand"
-#: InvenTree/models.py:175
+#: InvenTree/models.py:179
msgid "Missing external link"
msgstr "Externe link ontbreekt"
-#: InvenTree/models.py:187 stock/models.py:2087
-#: templates/js/translated/attachment.js:101
-#: templates/js/translated/attachment.js:198
+#: InvenTree/models.py:191 stock/models.py:2091
+#: templates/js/translated/attachment.js:103
+#: templates/js/translated/attachment.js:194
msgid "Attachment"
msgstr "Bijlage"
-#: InvenTree/models.py:188
+#: InvenTree/models.py:192
msgid "Select file to attach"
msgstr "Bestand als bijlage selecteren"
-#: InvenTree/models.py:194 company/models.py:123 company/models.py:272
-#: company/models.py:506 order/models.py:135 order/models.py:1235
+#: InvenTree/models.py:198 company/models.py:123 company/models.py:272
+#: company/models.py:506 order/models.py:136 order/models.py:1251
#: part/models.py:795
#: report/templates/report/inventree_build_order_base.html:165
-#: templates/js/translated/company.js:655
-#: templates/js/translated/company.js:946 templates/js/translated/order.js:2676
-#: templates/js/translated/part.js:1441
+#: templates/js/translated/company.js:640
+#: templates/js/translated/company.js:931 templates/js/translated/order.js:2676
+#: templates/js/translated/part.js:1485
msgid "Link"
msgstr "Link"
-#: InvenTree/models.py:195 build/models.py:320 part/models.py:796
+#: InvenTree/models.py:199 build/models.py:320 part/models.py:796
#: stock/models.py:642
msgid "Link to external URL"
msgstr "Link naar externe URL"
-#: InvenTree/models.py:198 templates/js/translated/attachment.js:102
-#: templates/js/translated/attachment.js:242
+#: InvenTree/models.py:202 templates/js/translated/attachment.js:104
+#: templates/js/translated/attachment.js:238
msgid "Comment"
msgstr "Opmerking"
-#: InvenTree/models.py:198
+#: InvenTree/models.py:202
msgid "File comment"
msgstr "Bestand opmerking"
-#: InvenTree/models.py:204 InvenTree/models.py:205 common/models.py:1499
-#: common/models.py:1500 common/models.py:1728 common/models.py:1729
-#: common/models.py:1991 common/models.py:1992 part/models.py:2153
-#: part/models.py:2173 plugin/models.py:238 plugin/models.py:239
+#: InvenTree/models.py:208 InvenTree/models.py:209 common/models.py:1506
+#: common/models.py:1507 common/models.py:1735 common/models.py:1736
+#: common/models.py:1998 common/models.py:1999 part/models.py:2141
+#: part/models.py:2161 plugin/models.py:238 plugin/models.py:239
#: report/templates/report/inventree_test_report_base.html:96
-#: templates/js/translated/stock.js:2513
+#: templates/js/translated/stock.js:2523
msgid "User"
msgstr "Gebruiker"
-#: InvenTree/models.py:208
+#: InvenTree/models.py:212
msgid "upload date"
msgstr "uploaddatum"
-#: InvenTree/models.py:230
+#: InvenTree/models.py:234
msgid "Filename must not be empty"
msgstr "Bestandsnaam mag niet leeg zijn"
-#: InvenTree/models.py:253
+#: InvenTree/models.py:257
msgid "Invalid attachment directory"
msgstr "Foute bijlagemap"
-#: InvenTree/models.py:263
+#: InvenTree/models.py:267
#, python-brace-format
msgid "Filename contains illegal character '{c}'"
msgstr "Bestandsnaam bevat illegale teken '{c}'"
-#: InvenTree/models.py:266
+#: InvenTree/models.py:270
msgid "Filename missing extension"
msgstr "Bestandsnaam mist extensie"
-#: InvenTree/models.py:273
+#: InvenTree/models.py:277
msgid "Attachment with this filename already exists"
msgstr "Bijlage met deze bestandsnaam bestaat al"
-#: InvenTree/models.py:280
+#: InvenTree/models.py:284
msgid "Error renaming file"
msgstr "Fout bij hernoemen bestand"
-#: InvenTree/models.py:314
+#: InvenTree/models.py:318
msgid "Invalid choice"
msgstr "Ongeldige keuze"
-#: InvenTree/models.py:333 InvenTree/models.py:334 common/models.py:1714
+#: InvenTree/models.py:337 InvenTree/models.py:338 common/models.py:1721
#: company/models.py:354 label/models.py:101 part/models.py:739
-#: part/models.py:2331 plugin/models.py:93 report/models.py:151
+#: part/models.py:2319 plugin/models.py:93 report/models.py:151
#: templates/InvenTree/notifications/notifications.html:84
#: templates/InvenTree/settings/mixins/urls.html:13
#: templates/InvenTree/settings/plugin.html:49
#: templates/InvenTree/settings/plugin.html:132
#: templates/InvenTree/settings/plugin_settings.html:23
#: templates/InvenTree/settings/settings.html:346
-#: templates/js/translated/company.js:539
-#: templates/js/translated/company.js:757 templates/js/translated/part.js:615
-#: templates/js/translated/part.js:767 templates/js/translated/part.js:1736
-#: templates/js/translated/stock.js:2283
+#: templates/js/translated/company.js:530
+#: templates/js/translated/company.js:742 templates/js/translated/part.js:659
+#: templates/js/translated/part.js:811 templates/js/translated/part.js:1832
+#: templates/js/translated/stock.js:2293
msgid "Name"
msgstr "Naam"
-#: InvenTree/models.py:340 build/models.py:197
+#: InvenTree/models.py:344 build/models.py:197
#: build/templates/build/detail.html:24 company/models.py:278
#: company/models.py:512 company/templates/company/company_base.html:71
#: company/templates/company/manufacturer_part.html:75
#: company/templates/company/supplier_part.html:73 label/models.py:108
-#: order/models.py:133 part/models.py:762 part/templates/part/category.html:74
-#: part/templates/part/part_base.html:167
-#: part/templates/part/set_category.html:14 report/models.py:164
+#: order/models.py:134 part/models.py:762 part/templates/part/category.html:74
+#: part/templates/part/part_base.html:167 report/models.py:164
#: report/models.py:509 report/models.py:550
#: report/templates/report/inventree_build_order_base.html:118
#: stock/templates/stock/location.html:103
#: templates/InvenTree/settings/plugin_settings.html:33
-#: templates/js/translated/bom.js:553 templates/js/translated/bom.js:851
-#: templates/js/translated/build.js:2476 templates/js/translated/company.js:401
-#: templates/js/translated/company.js:666
-#: templates/js/translated/company.js:957 templates/js/translated/order.js:1656
+#: templates/js/translated/bom.js:553 templates/js/translated/bom.js:845
+#: templates/js/translated/build.js:2476 templates/js/translated/company.js:395
+#: templates/js/translated/company.js:651
+#: templates/js/translated/company.js:942 templates/js/translated/order.js:1656
#: templates/js/translated/order.js:1888 templates/js/translated/order.js:2476
-#: templates/js/translated/part.js:674 templates/js/translated/part.js:1082
-#: templates/js/translated/part.js:1355 templates/js/translated/part.js:1755
-#: templates/js/translated/part.js:1824 templates/js/translated/stock.js:1676
-#: templates/js/translated/stock.js:2295 templates/js/translated/stock.js:2350
+#: templates/js/translated/part.js:718 templates/js/translated/part.js:1126
+#: templates/js/translated/part.js:1399 templates/js/translated/part.js:1851
+#: templates/js/translated/part.js:1920 templates/js/translated/stock.js:1686
+#: templates/js/translated/stock.js:2305 templates/js/translated/stock.js:2360
msgid "Description"
msgstr "Omschrijving"
-#: InvenTree/models.py:341
+#: InvenTree/models.py:345
msgid "Description (optional)"
msgstr "Omschrijving (optioneel)"
-#: InvenTree/models.py:349
+#: InvenTree/models.py:353
msgid "parent"
msgstr "bovenliggende"
-#: InvenTree/serializers.py:52 part/models.py:2652
+#: InvenTree/models.py:466
+msgid "Server Error"
+msgstr ""
+
+#: InvenTree/models.py:467
+msgid "An error has been logged by the server."
+msgstr ""
+
+#: InvenTree/serializers.py:52 part/models.py:2640
msgid "Must be a valid number"
msgstr "Moet een geldig nummer zijn"
-#: InvenTree/serializers.py:271
+#: InvenTree/serializers.py:263
msgid "Filename"
msgstr "Bestandsnaam"
-#: InvenTree/serializers.py:306
+#: InvenTree/serializers.py:298
msgid "Invalid value"
msgstr "Ongeldige waarde"
-#: InvenTree/serializers.py:328
+#: InvenTree/serializers.py:320
msgid "Data File"
msgstr "Data bestand"
-#: InvenTree/serializers.py:329
+#: InvenTree/serializers.py:321
msgid "Select data file for upload"
msgstr "Selecteer een bestand om te uploaden"
-#: InvenTree/serializers.py:350
+#: InvenTree/serializers.py:342
msgid "Unsupported file type"
msgstr "Niet ondersteund bestandstype"
-#: InvenTree/serializers.py:356
+#: InvenTree/serializers.py:348
msgid "File is too large"
msgstr "Bestand is te groot"
-#: InvenTree/serializers.py:377
+#: InvenTree/serializers.py:369
msgid "No columns found in file"
msgstr "Geen kolommen gevonden in het bestand"
-#: InvenTree/serializers.py:380
+#: InvenTree/serializers.py:372
msgid "No data rows found in file"
msgstr "Geen data rijen gevonden in dit bestand"
-#: InvenTree/serializers.py:503
+#: InvenTree/serializers.py:495
msgid "No data rows provided"
msgstr "Geen data rijen opgegeven"
-#: InvenTree/serializers.py:506
+#: InvenTree/serializers.py:498
msgid "No data columns supplied"
msgstr "Geen gegevenskolommen opgegeven"
-#: InvenTree/serializers.py:583
+#: InvenTree/serializers.py:575
#, python-brace-format
msgid "Missing required column: '{name}'"
msgstr "Verplichte kolom ontbreekt: '{name}'"
-#: InvenTree/serializers.py:592
+#: InvenTree/serializers.py:584
#, python-brace-format
msgid "Duplicate column: '{col}'"
msgstr "Dubbele kolom: '{col}'"
@@ -440,7 +438,7 @@ msgstr "Kwijt"
msgid "Returned"
msgstr "Retour"
-#: InvenTree/status_codes.py:141 order/models.py:1114
+#: InvenTree/status_codes.py:141 order/models.py:1130
#: templates/js/translated/order.js:3264 templates/js/translated/order.js:3607
msgid "Shipped"
msgstr "Verzonden"
@@ -525,7 +523,7 @@ msgstr "Splits van bovenliggend item"
msgid "Split child item"
msgstr "Splits onderliggende item"
-#: InvenTree/status_codes.py:281 templates/js/translated/stock.js:2020
+#: InvenTree/status_codes.py:281 templates/js/translated/stock.js:2030
msgid "Merged stock items"
msgstr "Samengevoegde voorraadartikelen"
@@ -597,27 +595,27 @@ msgstr "Overschot mag niet groter zijn dan 100%"
msgid "Invalid value for overage"
msgstr "Ongeldige waarde voor overschot"
-#: InvenTree/views.py:522
+#: InvenTree/views.py:521
msgid "Delete Item"
msgstr "Verwijder Artikel"
-#: InvenTree/views.py:571
+#: InvenTree/views.py:570
msgid "Check box to confirm item deletion"
msgstr "Selectievakje aanvinken om verwijdering van artikel te bevestigen"
-#: InvenTree/views.py:586 templates/InvenTree/settings/user.html:22
+#: InvenTree/views.py:585 templates/InvenTree/settings/user.html:22
msgid "Edit User Information"
msgstr "Gebruikersgegevens bewerken"
-#: InvenTree/views.py:598 templates/InvenTree/settings/user.html:19
+#: InvenTree/views.py:597 templates/InvenTree/settings/user.html:19
msgid "Set Password"
msgstr "Wachtwoord instellen"
-#: InvenTree/views.py:618
+#: InvenTree/views.py:617
msgid "Password fields must match"
msgstr "Wachtwoordvelden komen niet overeen"
-#: InvenTree/views.py:842 templates/navbar.html:152
+#: InvenTree/views.py:807 templates/navbar.html:152
msgid "System Information"
msgstr "Systeeminformatie"
@@ -628,6 +626,7 @@ msgstr "Ongeldige keuze voor bovenliggende productie"
#: build/models.py:131 build/templates/build/build_base.html:9
#: build/templates/build/build_base.html:27
#: report/templates/report/inventree_build_order_base.html:106
+#: templates/email/overdue_build_order.html:15
#: templates/js/translated/build.js:727
msgid "Build Order"
msgstr "Productieopdracht"
@@ -646,12 +645,12 @@ msgstr "Productieopdrachten"
msgid "Build Order Reference"
msgstr "Productieopdracht Referentie"
-#: build/models.py:189 order/models.py:288 order/models.py:638
-#: order/models.py:916 part/models.py:2570
+#: build/models.py:189 order/models.py:293 order/models.py:654
+#: order/models.py:932 part/models.py:2558
#: part/templates/part/upload_bom.html:54
#: report/templates/report/inventree_po_report.html:91
#: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:688 templates/js/translated/bom.js:858
+#: templates/js/translated/bom.js:690 templates/js/translated/bom.js:852
#: templates/js/translated/build.js:1777 templates/js/translated/order.js:1919
#: templates/js/translated/order.js:2120 templates/js/translated/order.js:3448
#: templates/js/translated/order.js:3959
@@ -673,13 +672,12 @@ msgstr "Productieopdracht waar dit productie aan is toegewezen"
#: build/models.py:215 build/templates/build/build_base.html:77
#: build/templates/build/detail.html:29 company/models.py:647
-#: order/models.py:1012 order/models.py:1103 part/models.py:336
-#: part/models.py:2099 part/models.py:2114 part/models.py:2133
-#: part/models.py:2151 part/models.py:2250 part/models.py:2370
-#: part/models.py:2460 part/models.py:2545 part/models.py:2821
-#: part/serializers.py:793 part/templates/part/part_app_base.html:8
+#: order/models.py:1028 order/models.py:1119 part/models.py:336
+#: part/models.py:2087 part/models.py:2102 part/models.py:2121
+#: part/models.py:2139 part/models.py:2238 part/models.py:2358
+#: part/models.py:2448 part/models.py:2533 part/models.py:2809
+#: part/serializers.py:795 part/templates/part/part_app_base.html:8
#: part/templates/part/part_pricing.html:12
-#: part/templates/part/set_category.html:13
#: part/templates/part/upload_bom.html:52
#: report/templates/report/inventree_build_order_base.html:110
#: report/templates/report/inventree_po_report.html:89
@@ -687,22 +685,23 @@ msgstr "Productieopdracht waar dit productie aan is toegewezen"
#: templates/InvenTree/search.html:80
#: templates/email/build_order_required_stock.html:17
#: templates/email/low_stock_notification.html:16
+#: templates/email/overdue_build_order.html:16
#: templates/js/translated/barcode.js:435 templates/js/translated/bom.js:552
-#: templates/js/translated/bom.js:687 templates/js/translated/bom.js:805
+#: templates/js/translated/bom.js:689 templates/js/translated/bom.js:799
#: templates/js/translated/build.js:1153 templates/js/translated/build.js:1647
#: templates/js/translated/build.js:2083 templates/js/translated/build.js:2481
-#: templates/js/translated/company.js:252
-#: templates/js/translated/company.js:486
-#: templates/js/translated/company.js:607
-#: templates/js/translated/company.js:866 templates/js/translated/order.js:100
+#: templates/js/translated/company.js:253
+#: templates/js/translated/company.js:482
+#: templates/js/translated/company.js:592
+#: templates/js/translated/company.js:851 templates/js/translated/order.js:100
#: templates/js/translated/order.js:883 templates/js/translated/order.js:1315
#: templates/js/translated/order.js:1873 templates/js/translated/order.js:2819
#: templates/js/translated/order.js:3217 templates/js/translated/order.js:3432
-#: templates/js/translated/part.js:1067 templates/js/translated/part.js:1137
-#: templates/js/translated/part.js:1333 templates/js/translated/stock.js:531
-#: templates/js/translated/stock.js:696 templates/js/translated/stock.js:903
-#: templates/js/translated/stock.js:1633 templates/js/translated/stock.js:2376
-#: templates/js/translated/stock.js:2571 templates/js/translated/stock.js:2705
+#: templates/js/translated/part.js:1111 templates/js/translated/part.js:1181
+#: templates/js/translated/part.js:1377 templates/js/translated/stock.js:530
+#: templates/js/translated/stock.js:695 templates/js/translated/stock.js:902
+#: templates/js/translated/stock.js:1643 templates/js/translated/stock.js:2386
+#: templates/js/translated/stock.js:2581 templates/js/translated/stock.js:2715
msgid "Part"
msgstr "Onderdeel"
@@ -768,12 +767,12 @@ msgstr "Batchcode"
msgid "Batch code for this build output"
msgstr "Batchcode voor deze productieuitvoer"
-#: build/models.py:282 order/models.py:137 part/models.py:932
+#: build/models.py:282 order/models.py:138 part/models.py:932
#: part/templates/part/part_base.html:305 templates/js/translated/order.js:2489
msgid "Creation Date"
msgstr "Aanmaakdatum"
-#: build/models.py:286 order/models.py:660
+#: build/models.py:286 order/models.py:676
msgid "Target completion date"
msgstr "Verwachte opleveringsdatum"
@@ -781,7 +780,7 @@ msgstr "Verwachte opleveringsdatum"
msgid "Target date for build completion. Build will be overdue after this date."
msgstr "Doeldatum voor productie voltooiing. Productie zal achterstallig zijn na deze datum."
-#: build/models.py:290 order/models.py:331
+#: build/models.py:290 order/models.py:336
#: templates/js/translated/build.js:2558
msgid "Completion Date"
msgstr "Opleveringsdatum"
@@ -799,7 +798,7 @@ msgid "User who issued this build order"
msgstr "Gebruiker die de productie-opdracht heeft gegeven"
#: build/models.py:313 build/templates/build/build_base.html:190
-#: build/templates/build/detail.html:115 order/models.py:151
+#: build/templates/build/detail.html:115 order/models.py:152
#: order/templates/order/order_base.html:176
#: order/templates/order/sales_order_base.html:183 part/models.py:936
#: report/templates/report/inventree_build_order_base.html:159
@@ -822,20 +821,20 @@ msgstr "Externe Link"
#: build/models.py:324 build/serializers.py:374
#: build/templates/build/sidebar.html:21 company/models.py:134
#: company/models.py:519 company/templates/company/sidebar.html:25
-#: order/models.py:155 order/models.py:918 order/models.py:1213
+#: order/models.py:156 order/models.py:934 order/models.py:1229
#: order/templates/order/po_sidebar.html:11
#: order/templates/order/so_sidebar.html:17 part/models.py:921
#: part/templates/part/part_sidebar.html:59
#: report/templates/report/inventree_build_order_base.html:173
-#: stock/models.py:713 stock/models.py:1985 stock/models.py:2093
+#: stock/models.py:713 stock/models.py:1989 stock/models.py:2097
#: stock/serializers.py:315 stock/serializers.py:444 stock/serializers.py:486
-#: stock/serializers.py:772 stock/serializers.py:871 stock/serializers.py:1003
+#: stock/serializers.py:759 stock/serializers.py:858 stock/serializers.py:990
#: stock/templates/stock/stock_sidebar.html:25
-#: templates/js/translated/barcode.js:100 templates/js/translated/bom.js:1044
-#: templates/js/translated/company.js:962 templates/js/translated/order.js:2040
+#: templates/js/translated/barcode.js:100 templates/js/translated/bom.js:1038
+#: templates/js/translated/company.js:947 templates/js/translated/order.js:2040
#: templates/js/translated/order.js:2191 templates/js/translated/order.js:2687
#: templates/js/translated/order.js:3632 templates/js/translated/order.js:4030
-#: templates/js/translated/stock.js:1307 templates/js/translated/stock.js:1916
+#: templates/js/translated/stock.js:1317 templates/js/translated/stock.js:1926
msgid "Notes"
msgstr "Opmerkingen"
@@ -855,44 +854,44 @@ msgstr "Productie uitvoer is al voltooid"
msgid "Build output does not match Build Order"
msgstr "Product komt niet overeen met de Productieopdracht"
-#: build/models.py:1108
+#: build/models.py:1111
msgid "Build item must specify a build output, as master part is marked as trackable"
msgstr "Productieartikel moet een productieuitvoer specificeren, omdat het hoofdonderdeel gemarkeerd is als traceerbaar"
-#: build/models.py:1117
+#: build/models.py:1120
#, python-brace-format
msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})"
msgstr "Toegewezen hoeveelheid ({q}) mag de beschikbare voorraad ({a}) niet overschrijden"
-#: build/models.py:1127
+#: build/models.py:1130
msgid "Stock item is over-allocated"
msgstr "Voorraad item is te veel toegewezen"
-#: build/models.py:1133 order/models.py:1372
+#: build/models.py:1136 order/models.py:1388
msgid "Allocation quantity must be greater than zero"
msgstr "Toewijzing hoeveelheid moet groter zijn dan nul"
-#: build/models.py:1139
+#: build/models.py:1142
msgid "Quantity must be 1 for serialized stock"
msgstr "Hoeveelheid moet 1 zijn voor geserialiseerde voorraad"
-#: build/models.py:1196
+#: build/models.py:1199
msgid "Selected stock item not found in BOM"
msgstr "Geselecteerd voorraadartikel niet gevonden in stuklijst"
-#: build/models.py:1265 stock/templates/stock/item_base.html:177
+#: build/models.py:1268 stock/templates/stock/item_base.html:177
#: templates/InvenTree/search.html:137 templates/js/translated/build.js:2454
#: templates/navbar.html:38
msgid "Build"
msgstr "Product"
-#: build/models.py:1266
+#: build/models.py:1269
msgid "Build to allocate parts"
msgstr "Product om onderdelen toe te wijzen"
-#: build/models.py:1282 build/serializers.py:603 order/serializers.py:994
-#: order/serializers.py:1015 stock/serializers.py:382 stock/serializers.py:703
-#: stock/serializers.py:829 stock/templates/stock/item_base.html:10
+#: build/models.py:1285 build/serializers.py:603 order/serializers.py:996
+#: order/serializers.py:1017 stock/serializers.py:382 stock/serializers.py:690
+#: stock/serializers.py:816 stock/templates/stock/item_base.html:10
#: stock/templates/stock/item_base.html:23
#: stock/templates/stock/item_base.html:199
#: templates/js/translated/build.js:738 templates/js/translated/build.js:743
@@ -900,22 +899,22 @@ msgstr "Product om onderdelen toe te wijzen"
#: templates/js/translated/order.js:101 templates/js/translated/order.js:2820
#: templates/js/translated/order.js:3124 templates/js/translated/order.js:3129
#: templates/js/translated/order.js:3224 templates/js/translated/order.js:3314
-#: templates/js/translated/stock.js:532 templates/js/translated/stock.js:697
-#: templates/js/translated/stock.js:2449
+#: templates/js/translated/stock.js:531 templates/js/translated/stock.js:696
+#: templates/js/translated/stock.js:2459
msgid "Stock Item"
msgstr "Voorraadartikel"
-#: build/models.py:1283
+#: build/models.py:1286
msgid "Source stock item"
msgstr "Bron voorraadartikel"
-#: build/models.py:1295 build/serializers.py:183
+#: build/models.py:1298 build/serializers.py:183
#: build/templates/build/build_base.html:82
-#: build/templates/build/detail.html:34 common/models.py:1536
+#: build/templates/build/detail.html:34 common/models.py:1543
#: company/forms.py:36 company/templates/company/supplier_part.html:258
-#: order/models.py:909 order/models.py:1412 order/serializers.py:1134
-#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:68
-#: part/forms.py:83 part/forms.py:98 part/models.py:2561
+#: order/models.py:925 order/models.py:1428 order/serializers.py:1136
+#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:59
+#: part/forms.py:74 part/forms.py:89 part/models.py:2549
#: part/templates/part/detail.html:935 part/templates/part/detail.html:1021
#: part/templates/part/part_pricing.html:16
#: part/templates/part/upload_bom.html:53
@@ -926,8 +925,8 @@ msgstr "Bron voorraadartikel"
#: report/templates/report/inventree_test_report_base.html:139
#: stock/serializers.py:279 stock/templates/stock/item_base.html:292
#: stock/templates/stock/item_base.html:300
-#: templates/js/translated/barcode.js:437 templates/js/translated/bom.js:689
-#: templates/js/translated/bom.js:866 templates/js/translated/build.js:422
+#: templates/js/translated/barcode.js:437 templates/js/translated/bom.js:691
+#: templates/js/translated/bom.js:860 templates/js/translated/build.js:422
#: templates/js/translated/build.js:574 templates/js/translated/build.js:765
#: templates/js/translated/build.js:1175 templates/js/translated/build.js:1673
#: templates/js/translated/build.js:2086
@@ -937,23 +936,23 @@ msgstr "Bron voorraadartikel"
#: templates/js/translated/order.js:2821 templates/js/translated/order.js:3143
#: templates/js/translated/order.js:3231 templates/js/translated/order.js:3320
#: templates/js/translated/order.js:3454 templates/js/translated/order.js:3965
-#: templates/js/translated/part.js:967 templates/js/translated/part.js:1969
-#: templates/js/translated/part.js:2200 templates/js/translated/part.js:2234
-#: templates/js/translated/part.js:2312 templates/js/translated/stock.js:403
-#: templates/js/translated/stock.js:557 templates/js/translated/stock.js:727
-#: templates/js/translated/stock.js:2498 templates/js/translated/stock.js:2583
+#: templates/js/translated/part.js:1011 templates/js/translated/part.js:2065
+#: templates/js/translated/part.js:2296 templates/js/translated/part.js:2330
+#: templates/js/translated/part.js:2408 templates/js/translated/stock.js:402
+#: templates/js/translated/stock.js:556 templates/js/translated/stock.js:726
+#: templates/js/translated/stock.js:2508 templates/js/translated/stock.js:2593
msgid "Quantity"
msgstr "Hoeveelheid"
-#: build/models.py:1296
+#: build/models.py:1299
msgid "Stock quantity to allocate to build"
msgstr "Voorraad hoeveelheid toe te wijzen aan productie"
-#: build/models.py:1304
+#: build/models.py:1307
msgid "Install into"
msgstr "Installeren in"
-#: build/models.py:1305
+#: build/models.py:1308
msgid "Destination stock item"
msgstr "Bestemming voorraadartikel"
@@ -982,9 +981,9 @@ msgstr "Deze productieuitvoer is niet volledig toegewezen"
msgid "Enter quantity for build output"
msgstr "Voer hoeveelheid in voor productie uitvoer"
-#: build/serializers.py:198 build/serializers.py:623 order/models.py:363
-#: order/serializers.py:280 order/serializers.py:435 part/serializers.py:512
-#: part/serializers.py:956 stock/models.py:470 stock/models.py:1239
+#: build/serializers.py:198 build/serializers.py:623 order/models.py:368
+#: order/serializers.py:280 order/serializers.py:435 part/serializers.py:514
+#: part/serializers.py:958 stock/models.py:470 stock/models.py:1239
#: stock/serializers.py:288
msgid "Quantity must be greater than zero"
msgstr "Hoeveelheid moet groter zijn dan nul"
@@ -997,9 +996,9 @@ msgstr "Hoeveelheid als geheel getal vereist voor traceerbare onderdelen"
msgid "Integer quantity required, as the bill of materials contains trackable parts"
msgstr "Geheel getal vereist omdat de stuklijst traceerbare onderdelen bevat"
-#: build/serializers.py:222 order/serializers.py:448 order/serializers.py:1138
+#: build/serializers.py:222 order/serializers.py:448 order/serializers.py:1140
#: stock/serializers.py:297 templates/js/translated/order.js:1186
-#: templates/js/translated/stock.js:238 templates/js/translated/stock.js:404
+#: templates/js/translated/stock.js:237 templates/js/translated/stock.js:403
msgid "Serial Numbers"
msgstr "Serienummers"
@@ -1015,7 +1014,7 @@ msgstr "Serienummers automatisch toewijzen"
msgid "Automatically allocate required items with matching serial numbers"
msgstr "Vereiste artikelen automatisch toewijzen met overeenkomende serienummers"
-#: build/serializers.py:268 stock/api.py:552
+#: build/serializers.py:268 stock/api.py:553
msgid "The following serial numbers already exist"
msgstr "De volgende serienummers bestaan al"
@@ -1025,16 +1024,16 @@ msgstr "Een lijst van productieuitvoeren moet worden verstrekt"
#: build/serializers.py:356 order/serializers.py:421 order/serializers.py:525
#: stock/serializers.py:308 stock/serializers.py:439 stock/serializers.py:481
-#: stock/serializers.py:864 stock/serializers.py:1097
+#: stock/serializers.py:851 stock/serializers.py:1084
#: stock/templates/stock/item_base.html:390
#: templates/js/translated/barcode.js:436
#: templates/js/translated/barcode.js:618 templates/js/translated/build.js:750
#: templates/js/translated/build.js:1685 templates/js/translated/order.js:1213
#: templates/js/translated/order.js:3136 templates/js/translated/order.js:3239
#: templates/js/translated/order.js:3247 templates/js/translated/order.js:3328
-#: templates/js/translated/part.js:180 templates/js/translated/stock.js:533
-#: templates/js/translated/stock.js:698 templates/js/translated/stock.js:905
-#: templates/js/translated/stock.js:1787 templates/js/translated/stock.js:2390
+#: templates/js/translated/part.js:180 templates/js/translated/stock.js:532
+#: templates/js/translated/stock.js:697 templates/js/translated/stock.js:904
+#: templates/js/translated/stock.js:1797 templates/js/translated/stock.js:2400
msgid "Location"
msgstr "Locatie"
@@ -1043,12 +1042,12 @@ msgid "Location for completed build outputs"
msgstr "Locatie van voltooide productieuitvoeren"
#: build/serializers.py:363 build/templates/build/build_base.html:142
-#: build/templates/build/detail.html:62 order/models.py:654
+#: build/templates/build/detail.html:62 order/models.py:670
#: order/serializers.py:458 stock/templates/stock/item_base.html:423
#: templates/js/translated/barcode.js:182 templates/js/translated/build.js:2510
#: templates/js/translated/order.js:1320 templates/js/translated/order.js:1660
-#: templates/js/translated/order.js:2481 templates/js/translated/stock.js:1762
-#: templates/js/translated/stock.js:2467 templates/js/translated/stock.js:2599
+#: templates/js/translated/order.js:2481 templates/js/translated/stock.js:1772
+#: templates/js/translated/stock.js:2477 templates/js/translated/stock.js:2609
msgid "Status"
msgstr "Status"
@@ -1108,8 +1107,8 @@ msgstr "Productieorder heeft onvolledige uitvoeren"
msgid "No build outputs have been created for this build order"
msgstr "Er zijn geen productuitvoeren aangemaakt voor deze productieorder"
-#: build/serializers.py:535 build/serializers.py:580 part/models.py:2679
-#: part/models.py:2813
+#: build/serializers.py:535 build/serializers.py:580 part/models.py:2667
+#: part/models.py:2801
msgid "BOM Item"
msgstr "Stuklijstartikel"
@@ -1125,11 +1124,11 @@ msgstr "Productieuitvoer moet naar dezelfde productie wijzen"
msgid "bom_item.part must point to the same part as the build order"
msgstr "bom_item.part moet naar hetzelfde onderdeel wijzen als de productieorder"
-#: build/serializers.py:609 stock/serializers.py:716
+#: build/serializers.py:609 stock/serializers.py:703
msgid "Item must be in stock"
msgstr "Artikel moet op voorraad zijn"
-#: build/serializers.py:667 order/serializers.py:1052
+#: build/serializers.py:667 order/serializers.py:1054
#, python-brace-format
msgid "Available quantity ({q}) exceeded"
msgstr "Beschikbare hoeveelheid ({q}) overschreden"
@@ -1146,7 +1145,7 @@ msgstr "Productieuitvoer kan niet worden gespecificeerd voor de toewijzing van n
msgid "This stock item has already been allocated to this build output"
msgstr "Dit voorraadartikel is al toegewezen aan deze productieoutput"
-#: build/serializers.py:708 order/serializers.py:1298
+#: build/serializers.py:708 order/serializers.py:1300
msgid "Allocation items must be provided"
msgstr ""
@@ -1178,10 +1177,19 @@ msgstr "Vervangende Voorraad"
msgid "Allow allocation of substitute parts"
msgstr "Toewijzing van vervangende onderdelen toestaan"
-#: build/tasks.py:96
+#: build/tasks.py:100
msgid "Stock required for build order"
msgstr "Voorraad vereist voor productieorder"
+#: build/tasks.py:118
+msgid "Overdue Build Order"
+msgstr ""
+
+#: build/tasks.py:123
+#, python-brace-format
+msgid "Build order {bo} is now overdue"
+msgstr ""
+
#: build/templates/build/build_base.html:39
#: order/templates/order/order_base.html:28
#: order/templates/order/sales_order_base.html:38
@@ -1244,13 +1252,13 @@ msgid "Stock has not been fully allocated to this Build Order"
msgstr "Voorraad is niet volledig toegewezen aan deze productieopdracht"
#: build/templates/build/build_base.html:151
-#: build/templates/build/detail.html:131 order/models.py:922
+#: build/templates/build/detail.html:131 order/models.py:938
#: order/templates/order/order_base.html:162
#: order/templates/order/sales_order_base.html:164
#: report/templates/report/inventree_build_order_base.html:126
#: templates/js/translated/build.js:2550 templates/js/translated/order.js:1677
#: templates/js/translated/order.js:1987 templates/js/translated/order.js:2497
-#: templates/js/translated/order.js:3517 templates/js/translated/part.js:971
+#: templates/js/translated/order.js:3517 templates/js/translated/part.js:1015
msgid "Target Date"
msgstr "Streefdatum"
@@ -1277,13 +1285,14 @@ msgid "Completed"
msgstr "Voltooid"
#: build/templates/build/build_base.html:176
-#: build/templates/build/detail.html:94 order/models.py:1100
-#: order/models.py:1185 order/models.py:1320
+#: build/templates/build/detail.html:94 order/models.py:1116
+#: order/models.py:1201 order/models.py:1336
#: order/templates/order/sales_order_base.html:9
#: order/templates/order/sales_order_base.html:28
#: report/templates/report/inventree_build_order_base.html:136
#: report/templates/report/inventree_so_report.html:77
#: stock/templates/stock/item_base.html:370
+#: templates/email/overdue_sales_order.html:15
#: templates/js/translated/order.js:2436
msgid "Sales Order"
msgstr "Verkooporder"
@@ -1319,7 +1328,7 @@ msgstr "Voorraadbron"
msgid "Stock can be taken from any available location."
msgstr "Voorraad kan worden genomen van elke beschikbare locatie."
-#: build/templates/build/detail.html:49 order/models.py:1034
+#: build/templates/build/detail.html:49 order/models.py:1050
#: templates/js/translated/order.js:1321 templates/js/translated/order.js:2029
msgid "Destination"
msgstr "Bestemming"
@@ -1336,8 +1345,8 @@ msgstr "Toegewezen Onderdelen"
#: stock/templates/stock/item_base.html:170
#: templates/js/translated/build.js:1179
#: templates/js/translated/model_renderers.js:112
-#: templates/js/translated/stock.js:971 templates/js/translated/stock.js:1776
-#: templates/js/translated/stock.js:2606
+#: templates/js/translated/stock.js:970 templates/js/translated/stock.js:1786
+#: templates/js/translated/stock.js:2616
#: templates/js/translated/table_filters.js:151
#: templates/js/translated/table_filters.js:242
msgid "Batch"
@@ -1716,7 +1725,7 @@ msgstr "Kopiëer Categorieparameter Sjablonen"
msgid "Copy category parameter templates when creating a part"
msgstr "Kopieer categorieparameter sjablonen bij het aanmaken van een onderdeel"
-#: common/models.py:820 part/models.py:2372 report/models.py:157
+#: common/models.py:820 part/models.py:2360 report/models.py:157
#: templates/js/translated/table_filters.js:38
#: templates/js/translated/table_filters.js:444
msgid "Template"
@@ -1726,7 +1735,7 @@ msgstr "Sjabloon"
msgid "Parts are templates by default"
msgstr "Onderdelen zijn standaard sjablonen"
-#: common/models.py:827 part/models.py:884 templates/js/translated/bom.js:1390
+#: common/models.py:827 part/models.py:884 templates/js/translated/bom.js:1384
#: templates/js/translated/table_filters.js:168
#: templates/js/translated/table_filters.js:460
msgid "Assembly"
@@ -1880,576 +1889,584 @@ msgid "Default page size for PDF reports"
msgstr "Standaard paginagrootte voor PDF rapporten"
#: common/models.py:968
-msgid "Test Reports"
-msgstr "Testrapporten"
+msgid "Enable Test Reports"
+msgstr ""
#: common/models.py:969
msgid "Enable generation of test reports"
msgstr "Activeer het genereren van testrapporten"
#: common/models.py:975
+msgid "Attach Test Reports"
+msgstr ""
+
+#: common/models.py:976
+msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item"
+msgstr ""
+
+#: common/models.py:982
msgid "Batch Code Template"
msgstr "Batchcode Sjabloon"
-#: common/models.py:976
+#: common/models.py:983
msgid "Template for generating default batch codes for stock items"
msgstr "Sjabloon voor het genereren van standaard batchcodes voor voorraadartikelen"
-#: common/models.py:981
+#: common/models.py:988
msgid "Stock Expiry"
msgstr "Verlopen Voorraad"
-#: common/models.py:982
+#: common/models.py:989
msgid "Enable stock expiry functionality"
msgstr "Verlopen voorraad functionaliteit inschakelen"
-#: common/models.py:988
+#: common/models.py:995
msgid "Sell Expired Stock"
msgstr "Verkoop Verlopen Voorraad"
-#: common/models.py:989
+#: common/models.py:996
msgid "Allow sale of expired stock"
msgstr "Verkoop verlopen voorraad toestaan"
-#: common/models.py:995
+#: common/models.py:1002
msgid "Stock Stale Time"
msgstr "Voorraad Vervaltijd"
-#: common/models.py:996
+#: common/models.py:1003
msgid "Number of days stock items are considered stale before expiring"
msgstr ""
-#: common/models.py:998
+#: common/models.py:1005
msgid "days"
msgstr "dagen"
-#: common/models.py:1003
+#: common/models.py:1010
msgid "Build Expired Stock"
msgstr ""
-#: common/models.py:1004
+#: common/models.py:1011
msgid "Allow building with expired stock"
msgstr ""
-#: common/models.py:1010
+#: common/models.py:1017
msgid "Stock Ownership Control"
msgstr ""
-#: common/models.py:1011
+#: common/models.py:1018
msgid "Enable ownership control over stock locations and items"
msgstr ""
-#: common/models.py:1017
+#: common/models.py:1024
msgid "Build Order Reference Prefix"
msgstr ""
-#: common/models.py:1018
+#: common/models.py:1025
msgid "Prefix value for build order reference"
msgstr ""
-#: common/models.py:1023
+#: common/models.py:1030
msgid "Build Order Reference Regex"
msgstr ""
-#: common/models.py:1024
+#: common/models.py:1031
msgid "Regular expression pattern for matching build order reference"
msgstr ""
-#: common/models.py:1028
+#: common/models.py:1035
msgid "Sales Order Reference Prefix"
msgstr ""
-#: common/models.py:1029
+#: common/models.py:1036
msgid "Prefix value for sales order reference"
msgstr ""
-#: common/models.py:1034
+#: common/models.py:1041
msgid "Sales Order Default Shipment"
msgstr ""
-#: common/models.py:1035
+#: common/models.py:1042
msgid "Enable creation of default shipment with sales orders"
msgstr ""
-#: common/models.py:1041
+#: common/models.py:1048
msgid "Purchase Order Reference Prefix"
msgstr ""
-#: common/models.py:1042
+#: common/models.py:1049
msgid "Prefix value for purchase order reference"
msgstr ""
-#: common/models.py:1048
+#: common/models.py:1055
msgid "Enable password forgot"
msgstr ""
-#: common/models.py:1049
+#: common/models.py:1056
msgid "Enable password forgot function on the login pages"
msgstr ""
-#: common/models.py:1055
+#: common/models.py:1062
msgid "Enable registration"
msgstr ""
-#: common/models.py:1056
+#: common/models.py:1063
msgid "Enable self-registration for users on the login pages"
msgstr ""
-#: common/models.py:1062
+#: common/models.py:1069
msgid "Enable SSO"
msgstr ""
-#: common/models.py:1063
+#: common/models.py:1070
msgid "Enable SSO on the login pages"
msgstr ""
-#: common/models.py:1069
+#: common/models.py:1076
msgid "Email required"
msgstr ""
-#: common/models.py:1070
+#: common/models.py:1077
msgid "Require user to supply mail on signup"
msgstr ""
-#: common/models.py:1076
+#: common/models.py:1083
msgid "Auto-fill SSO users"
msgstr ""
-#: common/models.py:1077
+#: common/models.py:1084
msgid "Automatically fill out user-details from SSO account-data"
msgstr ""
-#: common/models.py:1083
+#: common/models.py:1090
msgid "Mail twice"
msgstr ""
-#: common/models.py:1084
+#: common/models.py:1091
msgid "On signup ask users twice for their mail"
msgstr ""
-#: common/models.py:1090
+#: common/models.py:1097
msgid "Password twice"
msgstr ""
-#: common/models.py:1091
+#: common/models.py:1098
msgid "On signup ask users twice for their password"
msgstr ""
-#: common/models.py:1097
+#: common/models.py:1104
msgid "Group on signup"
msgstr ""
-#: common/models.py:1098
+#: common/models.py:1105
msgid "Group to which new users are assigned on registration"
msgstr ""
-#: common/models.py:1104
+#: common/models.py:1111
msgid "Enforce MFA"
msgstr ""
-#: common/models.py:1105
+#: common/models.py:1112
msgid "Users must use multifactor security."
msgstr ""
-#: common/models.py:1111
+#: common/models.py:1118
msgid "Check plugins on startup"
msgstr ""
-#: common/models.py:1112
+#: common/models.py:1119
msgid "Check that all plugins are installed on startup - enable in container enviroments"
msgstr ""
-#: common/models.py:1120
+#: common/models.py:1127
msgid "Enable URL integration"
msgstr ""
-#: common/models.py:1121
+#: common/models.py:1128
msgid "Enable plugins to add URL routes"
msgstr ""
-#: common/models.py:1128
+#: common/models.py:1135
msgid "Enable navigation integration"
msgstr ""
-#: common/models.py:1129
+#: common/models.py:1136
msgid "Enable plugins to integrate into navigation"
msgstr ""
-#: common/models.py:1136
+#: common/models.py:1143
msgid "Enable app integration"
msgstr ""
-#: common/models.py:1137
+#: common/models.py:1144
msgid "Enable plugins to add apps"
msgstr ""
-#: common/models.py:1144
+#: common/models.py:1151
msgid "Enable schedule integration"
msgstr ""
-#: common/models.py:1145
+#: common/models.py:1152
msgid "Enable plugins to run scheduled tasks"
msgstr ""
-#: common/models.py:1152
+#: common/models.py:1159
msgid "Enable event integration"
msgstr ""
-#: common/models.py:1153
+#: common/models.py:1160
msgid "Enable plugins to respond to internal events"
msgstr ""
-#: common/models.py:1170 common/models.py:1492
+#: common/models.py:1177 common/models.py:1499
msgid "Settings key (must be unique - case insensitive"
msgstr "Instellingssleutel (moet uniek zijn - hoofdletter ongevoelig"
-#: common/models.py:1192
+#: common/models.py:1199
msgid "Show subscribed parts"
msgstr ""
-#: common/models.py:1193
+#: common/models.py:1200
msgid "Show subscribed parts on the homepage"
msgstr ""
-#: common/models.py:1199
+#: common/models.py:1206
msgid "Show subscribed categories"
msgstr ""
-#: common/models.py:1200
+#: common/models.py:1207
msgid "Show subscribed part categories on the homepage"
msgstr ""
-#: common/models.py:1206
+#: common/models.py:1213
msgid "Show latest parts"
msgstr "Toon laatste onderdelen"
-#: common/models.py:1207
+#: common/models.py:1214
msgid "Show latest parts on the homepage"
msgstr "Toon laatste onderdelen op de startpagina"
-#: common/models.py:1213
+#: common/models.py:1220
msgid "Recent Part Count"
msgstr ""
-#: common/models.py:1214
+#: common/models.py:1221
msgid "Number of recent parts to display on index page"
msgstr ""
-#: common/models.py:1220
+#: common/models.py:1227
msgid "Show unvalidated BOMs"
msgstr ""
-#: common/models.py:1221
+#: common/models.py:1228
msgid "Show BOMs that await validation on the homepage"
msgstr ""
-#: common/models.py:1227
+#: common/models.py:1234
msgid "Show recent stock changes"
msgstr ""
-#: common/models.py:1228
+#: common/models.py:1235
msgid "Show recently changed stock items on the homepage"
msgstr ""
-#: common/models.py:1234
+#: common/models.py:1241
msgid "Recent Stock Count"
msgstr ""
-#: common/models.py:1235
+#: common/models.py:1242
msgid "Number of recent stock items to display on index page"
msgstr ""
-#: common/models.py:1241
+#: common/models.py:1248
msgid "Show low stock"
msgstr ""
-#: common/models.py:1242
+#: common/models.py:1249
msgid "Show low stock items on the homepage"
msgstr ""
-#: common/models.py:1248
+#: common/models.py:1255
msgid "Show depleted stock"
msgstr ""
-#: common/models.py:1249
+#: common/models.py:1256
msgid "Show depleted stock items on the homepage"
msgstr ""
-#: common/models.py:1255
+#: common/models.py:1262
msgid "Show needed stock"
msgstr ""
-#: common/models.py:1256
+#: common/models.py:1263
msgid "Show stock items needed for builds on the homepage"
msgstr ""
-#: common/models.py:1262
+#: common/models.py:1269
msgid "Show expired stock"
msgstr ""
-#: common/models.py:1263
+#: common/models.py:1270
msgid "Show expired stock items on the homepage"
msgstr ""
-#: common/models.py:1269
+#: common/models.py:1276
msgid "Show stale stock"
msgstr ""
-#: common/models.py:1270
+#: common/models.py:1277
msgid "Show stale stock items on the homepage"
msgstr ""
-#: common/models.py:1276
+#: common/models.py:1283
msgid "Show pending builds"
msgstr ""
-#: common/models.py:1277
+#: common/models.py:1284
msgid "Show pending builds on the homepage"
msgstr ""
-#: common/models.py:1283
+#: common/models.py:1290
msgid "Show overdue builds"
msgstr ""
-#: common/models.py:1284
+#: common/models.py:1291
msgid "Show overdue builds on the homepage"
msgstr ""
-#: common/models.py:1290
+#: common/models.py:1297
msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:1291
+#: common/models.py:1298
msgid "Show outstanding POs on the homepage"
msgstr ""
-#: common/models.py:1297
+#: common/models.py:1304
msgid "Show overdue POs"
msgstr ""
-#: common/models.py:1298
+#: common/models.py:1305
msgid "Show overdue POs on the homepage"
msgstr ""
-#: common/models.py:1304
+#: common/models.py:1311
msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:1305
+#: common/models.py:1312
msgid "Show outstanding SOs on the homepage"
msgstr ""
-#: common/models.py:1311
+#: common/models.py:1318
msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:1312
+#: common/models.py:1319
msgid "Show overdue SOs on the homepage"
msgstr ""
-#: common/models.py:1317
+#: common/models.py:1324
msgid "Enable label printing"
msgstr ""
-#: common/models.py:1318
+#: common/models.py:1325
msgid "Enable label printing from the web interface"
msgstr ""
-#: common/models.py:1324
+#: common/models.py:1331
msgid "Inline label display"
msgstr ""
-#: common/models.py:1325
+#: common/models.py:1332
msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:1331
+#: common/models.py:1338
msgid "Inline report display"
msgstr ""
-#: common/models.py:1332
+#: common/models.py:1339
msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:1338
+#: common/models.py:1345
msgid "Search Parts"
msgstr ""
-#: common/models.py:1339
+#: common/models.py:1346
msgid "Display parts in search preview window"
msgstr ""
-#: common/models.py:1345
+#: common/models.py:1352
msgid "Seach Supplier Parts"
msgstr ""
-#: common/models.py:1346
+#: common/models.py:1353
msgid "Display supplier parts in search preview window"
msgstr ""
-#: common/models.py:1352
+#: common/models.py:1359
msgid "Search Manufacturer Parts"
msgstr ""
-#: common/models.py:1353
+#: common/models.py:1360
msgid "Display manufacturer parts in search preview window"
msgstr ""
-#: common/models.py:1359
+#: common/models.py:1366
msgid "Hide Inactive Parts"
msgstr ""
-#: common/models.py:1360
+#: common/models.py:1367
msgid "Excluded inactive parts from search preview window"
msgstr ""
-#: common/models.py:1366
+#: common/models.py:1373
msgid "Search Categories"
msgstr ""
-#: common/models.py:1367
+#: common/models.py:1374
msgid "Display part categories in search preview window"
msgstr ""
-#: common/models.py:1373
+#: common/models.py:1380
msgid "Search Stock"
msgstr ""
-#: common/models.py:1374
+#: common/models.py:1381
msgid "Display stock items in search preview window"
msgstr ""
-#: common/models.py:1380
+#: common/models.py:1387
msgid "Hide Unavailable Stock Items"
msgstr ""
-#: common/models.py:1381
+#: common/models.py:1388
msgid "Exclude stock items which are not available from the search preview window"
msgstr ""
-#: common/models.py:1387
+#: common/models.py:1394
msgid "Search Locations"
msgstr ""
-#: common/models.py:1388
+#: common/models.py:1395
msgid "Display stock locations in search preview window"
msgstr ""
-#: common/models.py:1394
+#: common/models.py:1401
msgid "Search Companies"
msgstr ""
-#: common/models.py:1395
+#: common/models.py:1402
msgid "Display companies in search preview window"
msgstr ""
-#: common/models.py:1401
+#: common/models.py:1408
msgid "Search Purchase Orders"
msgstr ""
-#: common/models.py:1402
+#: common/models.py:1409
msgid "Display purchase orders in search preview window"
msgstr ""
-#: common/models.py:1408
+#: common/models.py:1415
msgid "Exclude Inactive Purchase Orders"
msgstr ""
-#: common/models.py:1409
+#: common/models.py:1416
msgid "Exclude inactive purchase orders from search preview window"
msgstr ""
-#: common/models.py:1415
+#: common/models.py:1422
msgid "Search Sales Orders"
msgstr ""
-#: common/models.py:1416
+#: common/models.py:1423
msgid "Display sales orders in search preview window"
msgstr ""
-#: common/models.py:1422
+#: common/models.py:1429
msgid "Exclude Inactive Sales Orders"
msgstr ""
-#: common/models.py:1423
+#: common/models.py:1430
msgid "Exclude inactive sales orders from search preview window"
msgstr ""
-#: common/models.py:1429
+#: common/models.py:1436
msgid "Search Preview Results"
msgstr ""
-#: common/models.py:1430
+#: common/models.py:1437
msgid "Number of results to show in each section of the search preview window"
msgstr ""
-#: common/models.py:1436
+#: common/models.py:1443
msgid "Show Quantity in Forms"
msgstr ""
-#: common/models.py:1437
+#: common/models.py:1444
msgid "Display available part quantity in some forms"
msgstr ""
-#: common/models.py:1443
+#: common/models.py:1450
msgid "Escape Key Closes Forms"
msgstr ""
-#: common/models.py:1444
+#: common/models.py:1451
msgid "Use the escape key to close modal forms"
msgstr ""
-#: common/models.py:1450
+#: common/models.py:1457
msgid "Fixed Navbar"
msgstr ""
-#: common/models.py:1451
+#: common/models.py:1458
msgid "The navbar position is fixed to the top of the screen"
msgstr ""
-#: common/models.py:1457
+#: common/models.py:1464
msgid "Date Format"
msgstr ""
-#: common/models.py:1458
+#: common/models.py:1465
msgid "Preferred format for displaying dates"
msgstr ""
-#: common/models.py:1472 part/templates/part/detail.html:39
+#: common/models.py:1479 part/templates/part/detail.html:39
msgid "Part Scheduling"
msgstr ""
-#: common/models.py:1473
+#: common/models.py:1480
msgid "Display part scheduling information"
msgstr ""
-#: common/models.py:1537 company/forms.py:37
+#: common/models.py:1544 company/forms.py:37
msgid "Price break quantity"
msgstr ""
-#: common/models.py:1544 company/serializers.py:288
-#: company/templates/company/supplier_part.html:263 order/models.py:949
-#: templates/js/translated/part.js:998 templates/js/translated/part.js:1974
+#: common/models.py:1551 company/serializers.py:290
+#: company/templates/company/supplier_part.html:263 order/models.py:965
+#: templates/js/translated/part.js:1042 templates/js/translated/part.js:2070
msgid "Price"
msgstr ""
-#: common/models.py:1545
+#: common/models.py:1552
msgid "Unit price at specified quantity"
msgstr ""
-#: common/models.py:1705 common/models.py:1883
+#: common/models.py:1712 common/models.py:1890
msgid "Endpoint"
msgstr ""
-#: common/models.py:1706
+#: common/models.py:1713
msgid "Endpoint at which this webhook is received"
msgstr ""
-#: common/models.py:1715
+#: common/models.py:1722
msgid "Name for this webhook"
msgstr ""
-#: common/models.py:1720 part/models.py:911 plugin/models.py:99
+#: common/models.py:1727 part/models.py:911 plugin/models.py:99
#: templates/js/translated/table_filters.js:34
#: templates/js/translated/table_filters.js:96
#: templates/js/translated/table_filters.js:308
@@ -2457,79 +2474,89 @@ msgstr ""
msgid "Active"
msgstr ""
-#: common/models.py:1721
+#: common/models.py:1728
msgid "Is this webhook active"
msgstr ""
-#: common/models.py:1735
+#: common/models.py:1742
msgid "Token"
msgstr ""
-#: common/models.py:1736
+#: common/models.py:1743
msgid "Token for access"
msgstr ""
-#: common/models.py:1743
+#: common/models.py:1750
msgid "Secret"
msgstr ""
-#: common/models.py:1744
+#: common/models.py:1751
msgid "Shared secret for HMAC"
msgstr ""
-#: common/models.py:1850
+#: common/models.py:1857
msgid "Message ID"
msgstr ""
-#: common/models.py:1851
+#: common/models.py:1858
msgid "Unique identifier for this message"
msgstr ""
-#: common/models.py:1859
+#: common/models.py:1866
msgid "Host"
msgstr ""
-#: common/models.py:1860
+#: common/models.py:1867
msgid "Host from which this message was received"
msgstr ""
-#: common/models.py:1867
+#: common/models.py:1874
msgid "Header"
msgstr ""
-#: common/models.py:1868
+#: common/models.py:1875
msgid "Header of this message"
msgstr ""
-#: common/models.py:1874
+#: common/models.py:1881
msgid "Body"
msgstr ""
-#: common/models.py:1875
+#: common/models.py:1882
msgid "Body of this message"
msgstr ""
-#: common/models.py:1884
+#: common/models.py:1891
msgid "Endpoint on which this message was received"
msgstr ""
-#: common/models.py:1889
+#: common/models.py:1896
msgid "Worked on"
msgstr ""
-#: common/models.py:1890
+#: common/models.py:1897
msgid "Was the work on this message finished?"
msgstr ""
+#: common/notifications.py:292
+#, python-brace-format
+msgid "New {verbose_name}"
+msgstr ""
+
+#: common/notifications.py:294
+#, python-brace-format
+msgid "A new {verbose_name} has been created and ,assigned to you"
+msgstr ""
+
#: common/views.py:87 order/templates/order/purchase_order_detail.html:23
-#: order/views.py:102 part/views.py:191
+#: order/views.py:102 part/views.py:116
#: templates/patterns/wizard/upload.html:37
msgid "Upload File"
msgstr ""
#: common/views.py:88 order/views.py:103
#: part/templates/part/import_wizard/ajax_match_fields.html:45
-#: part/views.py:192 templates/patterns/wizard/match_fields.html:51
+#: part/views.py:117 templates/patterns/wizard/match_fields.html:51
msgid "Match Fields"
msgstr ""
@@ -2545,19 +2572,19 @@ msgstr ""
msgid "Parts imported"
msgstr ""
-#: common/views.py:507 order/templates/order/order_wizard/match_parts.html:19
+#: common/views.py:511 order/templates/order/order_wizard/match_parts.html:19
#: part/templates/part/import_wizard/match_references.html:19
#: templates/patterns/wizard/match_fields.html:26
#: templates/patterns/wizard/upload.html:35
msgid "Previous Step"
msgstr ""
-#: company/forms.py:16 part/forms.py:21
+#: company/forms.py:16 part/forms.py:18
#: templates/InvenTree/settings/mixins/urls.html:14
msgid "URL"
msgstr ""
-#: company/forms.py:17 part/forms.py:22
+#: company/forms.py:17 part/forms.py:19
msgid "Image URL"
msgstr ""
@@ -2571,7 +2598,7 @@ msgstr ""
#: company/models.py:104 company/templates/company/company_base.html:100
#: templates/InvenTree/settings/plugin_settings.html:55
-#: templates/js/translated/company.js:405
+#: templates/js/translated/company.js:399
msgid "Website"
msgstr ""
@@ -2644,9 +2671,9 @@ msgstr "is fabrikant"
msgid "Does this company manufacture parts?"
msgstr "Fabriceert dit bedrijf onderdelen?"
-#: company/models.py:144 company/serializers.py:294
-#: company/templates/company/company_base.html:106 part/serializers.py:137
-#: part/serializers.py:168 stock/serializers.py:162
+#: company/models.py:144 company/serializers.py:296
+#: company/templates/company/company_base.html:106 part/serializers.py:139
+#: part/serializers.py:170 stock/serializers.py:162
msgid "Currency"
msgstr ""
@@ -2667,10 +2694,10 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:90
#: company/templates/company/supplier_part.html:103
#: stock/templates/stock/item_base.html:212
-#: templates/js/translated/company.js:389
-#: templates/js/translated/company.js:488
-#: templates/js/translated/company.js:632
-#: templates/js/translated/company.js:917 templates/js/translated/part.js:235
+#: templates/js/translated/company.js:383
+#: templates/js/translated/company.js:484
+#: templates/js/translated/company.js:617
+#: templates/js/translated/company.js:902 templates/js/translated/part.js:235
#: templates/js/translated/table_filters.js:411
msgid "Manufacturer"
msgstr "Fabrikant"
@@ -2681,11 +2708,11 @@ msgstr "Fabrikant selecteren"
#: company/models.py:266 company/templates/company/manufacturer_part.html:101
#: company/templates/company/supplier_part.html:111
-#: templates/js/translated/company.js:255
-#: templates/js/translated/company.js:487
-#: templates/js/translated/company.js:648
-#: templates/js/translated/company.js:935 templates/js/translated/order.js:1907
-#: templates/js/translated/part.js:246 templates/js/translated/part.js:956
+#: templates/js/translated/company.js:256
+#: templates/js/translated/company.js:483
+#: templates/js/translated/company.js:633
+#: templates/js/translated/company.js:920 templates/js/translated/order.js:1907
+#: templates/js/translated/part.js:246 templates/js/translated/part.js:1000
msgid "MPN"
msgstr ""
@@ -2714,9 +2741,9 @@ msgstr ""
#: company/models.py:361
#: report/templates/report/inventree_test_report_base.html:95
-#: stock/models.py:2080 templates/js/translated/company.js:540
-#: templates/js/translated/company.js:763 templates/js/translated/part.js:776
-#: templates/js/translated/stock.js:1294
+#: stock/models.py:2084 templates/js/translated/company.js:531
+#: templates/js/translated/company.js:748 templates/js/translated/part.js:820
+#: templates/js/translated/stock.js:1304
msgid "Value"
msgstr "Waarde"
@@ -2724,10 +2751,10 @@ msgstr "Waarde"
msgid "Parameter value"
msgstr "Parameterwaarde"
-#: company/models.py:368 part/models.py:878 part/models.py:2339
+#: company/models.py:368 part/models.py:878 part/models.py:2327
#: part/templates/part/part_base.html:280
#: templates/InvenTree/settings/settings.html:351
-#: templates/js/translated/company.js:769 templates/js/translated/part.js:782
+#: templates/js/translated/company.js:754 templates/js/translated/part.js:826
msgid "Units"
msgstr "Eenheden"
@@ -2740,13 +2767,14 @@ msgid "Linked manufacturer part must reference the same base part"
msgstr "Gekoppeld fabrikant onderdeel moet verwijzen naar hetzelfde basis onderdeel"
#: company/models.py:487 company/templates/company/company_base.html:81
-#: company/templates/company/supplier_part.html:87 order/models.py:303
+#: company/templates/company/supplier_part.html:87 order/models.py:308
#: order/templates/order/order_base.html:112 part/bom.py:237 part/bom.py:265
#: stock/templates/stock/item_base.html:229
-#: templates/js/translated/company.js:254
-#: templates/js/translated/company.js:393
-#: templates/js/translated/company.js:891 templates/js/translated/order.js:1643
-#: templates/js/translated/part.js:216 templates/js/translated/part.js:924
+#: templates/email/overdue_purchase_order.html:16
+#: templates/js/translated/company.js:255
+#: templates/js/translated/company.js:387
+#: templates/js/translated/company.js:876 templates/js/translated/order.js:1643
+#: templates/js/translated/part.js:216 templates/js/translated/part.js:968
#: templates/js/translated/table_filters.js:415
msgid "Supplier"
msgstr "Leverancier"
@@ -2756,9 +2784,9 @@ msgid "Select supplier"
msgstr "Leverancier selecteren"
#: company/models.py:493 company/templates/company/supplier_part.html:97
-#: part/bom.py:238 part/bom.py:266 templates/js/translated/company.js:253
+#: part/bom.py:238 part/bom.py:266 templates/js/translated/company.js:254
#: templates/js/translated/order.js:1894 templates/js/translated/part.js:227
-#: templates/js/translated/part.js:942
+#: templates/js/translated/part.js:986
msgid "SKU"
msgstr ""
@@ -2779,23 +2807,23 @@ msgid "Supplier part description"
msgstr ""
#: company/models.py:518 company/templates/company/supplier_part.html:125
-#: part/models.py:2573 part/templates/part/upload_bom.html:59
+#: part/models.py:2561 part/templates/part/upload_bom.html:59
#: report/templates/report/inventree_po_report.html:92
#: report/templates/report/inventree_so_report.html:93 stock/serializers.py:387
msgid "Note"
msgstr "Opmerking"
-#: company/models.py:522 part/models.py:1688
+#: company/models.py:522 part/models.py:1683
msgid "base cost"
msgstr "basisprijs"
-#: company/models.py:522 part/models.py:1688
+#: company/models.py:522 part/models.py:1683
msgid "Minimum charge (e.g. stocking fee)"
msgstr "Minimale kosten (bijv. voorraadkosten)"
#: company/models.py:524 company/templates/company/supplier_part.html:118
#: stock/models.py:608 stock/templates/stock/item_base.html:245
-#: templates/js/translated/company.js:967 templates/js/translated/stock.js:1912
+#: templates/js/translated/company.js:952 templates/js/translated/stock.js:1922
msgid "Packaging"
msgstr ""
@@ -2803,7 +2831,7 @@ msgstr ""
msgid "Part packaging"
msgstr ""
-#: company/models.py:526 part/models.py:1690
+#: company/models.py:526 part/models.py:1685
msgid "multiple"
msgstr ""
@@ -2825,7 +2853,7 @@ msgstr ""
#: company/templates/company/company_base.html:8
#: company/templates/company/company_base.html:12
-#: templates/InvenTree/search.html:177 templates/js/translated/company.js:378
+#: templates/InvenTree/search.html:177 templates/js/translated/company.js:372
msgid "Company"
msgstr ""
@@ -2843,7 +2871,7 @@ msgid "Edit company information"
msgstr ""
#: company/templates/company/company_base.html:34
-#: templates/js/translated/company.js:321
+#: templates/js/translated/company.js:315
msgid "Edit Company"
msgstr ""
@@ -2866,12 +2894,13 @@ msgstr ""
msgid "Download image from URL"
msgstr ""
-#: company/templates/company/company_base.html:86 order/models.py:649
+#: company/templates/company/company_base.html:86 order/models.py:665
#: order/templates/order/sales_order_base.html:116 stock/models.py:627
-#: stock/models.py:628 stock/serializers.py:758
+#: stock/models.py:628 stock/serializers.py:745
#: stock/templates/stock/item_base.html:401
-#: templates/js/translated/company.js:385 templates/js/translated/order.js:2458
-#: templates/js/translated/stock.js:2431
+#: templates/email/overdue_sales_order.html:16
+#: templates/js/translated/company.js:379 templates/js/translated/order.js:2458
+#: templates/js/translated/stock.js:2441
#: templates/js/translated/table_filters.js:419
msgid "Customer"
msgstr ""
@@ -2999,7 +3028,7 @@ msgid "Supplier List"
msgstr ""
#: company/templates/company/manufacturer_part.html:15 company/views.py:45
-#: part/templates/part/prices.html:170 templates/InvenTree/search.html:179
+#: part/templates/part/prices.html:172 templates/InvenTree/search.html:179
#: templates/navbar.html:49
msgid "Manufacturers"
msgstr "Fabrikanten"
@@ -3012,12 +3041,12 @@ msgid "Order part"
msgstr ""
#: company/templates/company/manufacturer_part.html:39
-#: templates/js/translated/company.js:680
+#: templates/js/translated/company.js:665
msgid "Edit manufacturer part"
msgstr "Fabrikant onderdeel bewerken"
#: company/templates/company/manufacturer_part.html:43
-#: templates/js/translated/company.js:681
+#: templates/js/translated/company.js:666
msgid "Delete manufacturer part"
msgstr "Fabrikant onderdeel verwijderen"
@@ -3032,7 +3061,7 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:119
#: company/templates/company/supplier_part.html:15 company/views.py:39
-#: part/templates/part/part_sidebar.html:35 part/templates/part/prices.html:166
+#: part/templates/part/part_sidebar.html:35 part/templates/part/prices.html:168
#: templates/InvenTree/search.html:189 templates/navbar.html:48
msgid "Suppliers"
msgstr ""
@@ -3092,18 +3121,18 @@ msgstr ""
#: company/templates/company/supplier_part.html:7
#: company/templates/company/supplier_part.html:24 stock/models.py:592
#: stock/templates/stock/item_base.html:238
-#: templates/js/translated/company.js:907 templates/js/translated/order.js:884
-#: templates/js/translated/stock.js:1869
+#: templates/js/translated/company.js:892 templates/js/translated/order.js:884
+#: templates/js/translated/stock.js:1879
msgid "Supplier Part"
msgstr ""
#: company/templates/company/supplier_part.html:38
-#: templates/js/translated/company.js:980
+#: templates/js/translated/company.js:965
msgid "Edit supplier part"
msgstr ""
#: company/templates/company/supplier_part.html:42
-#: templates/js/translated/company.js:981
+#: templates/js/translated/company.js:966
msgid "Delete supplier part"
msgstr ""
@@ -3123,7 +3152,7 @@ msgstr ""
#: company/templates/company/supplier_part.html:148
#: part/templates/part/detail.html:24 stock/templates/stock/location.html:177
-#: templates/js/translated/stock.js:380
+#: templates/js/translated/stock.js:379
msgid "New Stock Item"
msgstr ""
@@ -3144,7 +3173,7 @@ msgstr ""
#: company/templates/company/supplier_part.html:191
#: company/templates/company/supplier_part.html:305
-#: part/templates/part/prices.html:274 templates/js/translated/part.js:2046
+#: part/templates/part/prices.html:276 templates/js/translated/part.js:2142
msgid "Add Price Break"
msgstr ""
@@ -3153,12 +3182,12 @@ msgid "No price break information found"
msgstr ""
#: company/templates/company/supplier_part.html:231
-#: templates/js/translated/part.js:2056
+#: templates/js/translated/part.js:2152
msgid "Delete Price Break"
msgstr ""
#: company/templates/company/supplier_part.html:245
-#: templates/js/translated/part.js:2070
+#: templates/js/translated/part.js:2166
msgid "Edit Price Break"
msgstr ""
@@ -3180,9 +3209,9 @@ msgstr ""
#: stock/templates/stock/stock_app_base.html:10
#: templates/InvenTree/search.html:151
#: templates/InvenTree/settings/sidebar.html:43
-#: templates/js/translated/bom.js:554 templates/js/translated/part.js:678
-#: templates/js/translated/part.js:1226 templates/js/translated/part.js:1387
-#: templates/js/translated/stock.js:904 templates/js/translated/stock.js:1687
+#: templates/js/translated/bom.js:554 templates/js/translated/part.js:722
+#: templates/js/translated/part.js:1270 templates/js/translated/part.js:1431
+#: templates/js/translated/stock.js:903 templates/js/translated/stock.js:1697
#: templates/navbar.html:31
msgid "Stock"
msgstr ""
@@ -3209,7 +3238,7 @@ msgstr ""
#: stock/templates/stock/location.html:173
#: stock/templates/stock/location_sidebar.html:7
#: templates/InvenTree/search.html:153 templates/js/translated/search.js:223
-#: templates/js/translated/stock.js:2307 users/models.py:39
+#: templates/js/translated/stock.js:2317 users/models.py:39
msgid "Stock Items"
msgstr ""
@@ -3238,20 +3267,20 @@ msgstr ""
msgid "New Company"
msgstr ""
-#: company/views.py:112 part/views.py:576
+#: company/views.py:112 part/views.py:501
msgid "Download Image"
msgstr ""
-#: company/views.py:139 part/views.py:606
+#: company/views.py:139 part/views.py:531
msgid "Image size exceeds maximum allowable size for download"
msgstr ""
-#: company/views.py:146 part/views.py:613
+#: company/views.py:146 part/views.py:538
#, python-brace-format
msgid "Invalid response: {code}"
msgstr ""
-#: company/views.py:155 part/views.py:622
+#: company/views.py:155 part/views.py:547
msgid "Supplied URL is not a valid image file"
msgstr ""
@@ -3320,313 +3349,314 @@ msgstr ""
msgid "Part query filters (comma-separated value of key=value pairs)"
msgstr ""
-#: order/models.py:133
+#: order/models.py:134
msgid "Order description"
msgstr ""
-#: order/models.py:135 order/models.py:1236
+#: order/models.py:136 order/models.py:1252
msgid "Link to external page"
msgstr ""
-#: order/models.py:143
+#: order/models.py:144
msgid "Created By"
msgstr ""
-#: order/models.py:150
+#: order/models.py:151
msgid "User or group responsible for this order"
msgstr ""
-#: order/models.py:155
+#: order/models.py:156
msgid "Order notes"
msgstr ""
-#: order/models.py:289 order/models.py:639
+#: order/models.py:294 order/models.py:655
msgid "Order reference"
msgstr ""
-#: order/models.py:294 order/models.py:654
+#: order/models.py:299 order/models.py:670
msgid "Purchase order status"
msgstr ""
-#: order/models.py:304
+#: order/models.py:309
msgid "Company from which the items are being ordered"
msgstr ""
-#: order/models.py:307 order/templates/order/order_base.html:124
+#: order/models.py:312 order/templates/order/order_base.html:124
#: templates/js/translated/order.js:1652
msgid "Supplier Reference"
msgstr ""
-#: order/models.py:307
+#: order/models.py:312
msgid "Supplier order reference code"
msgstr ""
-#: order/models.py:314
+#: order/models.py:319
msgid "received by"
msgstr ""
-#: order/models.py:319
+#: order/models.py:324
msgid "Issue Date"
msgstr ""
-#: order/models.py:320
+#: order/models.py:325
msgid "Date order was issued"
msgstr ""
-#: order/models.py:325
+#: order/models.py:330
msgid "Target Delivery Date"
msgstr ""
-#: order/models.py:326
+#: order/models.py:331
msgid "Expected date for order delivery. Order will be overdue after this date."
msgstr ""
-#: order/models.py:332
+#: order/models.py:337
msgid "Date order was completed"
msgstr ""
-#: order/models.py:368
+#: order/models.py:373
msgid "Part supplier must match PO supplier"
msgstr ""
-#: order/models.py:512
+#: order/models.py:517
msgid "Quantity must be a positive number"
msgstr ""
-#: order/models.py:650
+#: order/models.py:666
msgid "Company to which the items are being sold"
msgstr ""
-#: order/models.py:656
+#: order/models.py:672
msgid "Customer Reference "
msgstr ""
-#: order/models.py:656
+#: order/models.py:672
msgid "Customer order reference code"
msgstr ""
-#: order/models.py:661
+#: order/models.py:677
msgid "Target date for order completion. Order will be overdue after this date."
msgstr ""
-#: order/models.py:664 order/models.py:1190
+#: order/models.py:680 order/models.py:1206
#: templates/js/translated/order.js:2505 templates/js/translated/order.js:2656
msgid "Shipment Date"
msgstr ""
-#: order/models.py:671
+#: order/models.py:687
msgid "shipped by"
msgstr ""
-#: order/models.py:726
+#: order/models.py:742
msgid "Order cannot be completed as no parts have been assigned"
msgstr ""
-#: order/models.py:730
+#: order/models.py:746
msgid "Only a pending order can be marked as complete"
msgstr ""
-#: order/models.py:733
+#: order/models.py:749
msgid "Order cannot be completed as there are incomplete shipments"
msgstr ""
-#: order/models.py:736
+#: order/models.py:752
msgid "Order cannot be completed as there are incomplete line items"
msgstr ""
-#: order/models.py:910
+#: order/models.py:926
msgid "Item quantity"
msgstr ""
-#: order/models.py:916
+#: order/models.py:932
msgid "Line item reference"
msgstr ""
-#: order/models.py:918
+#: order/models.py:934
msgid "Line item notes"
msgstr ""
-#: order/models.py:923
+#: order/models.py:939
msgid "Target shipping date for this line item"
msgstr ""
-#: order/models.py:941
+#: order/models.py:957
msgid "Context"
msgstr ""
-#: order/models.py:942
+#: order/models.py:958
msgid "Additional context for this line"
msgstr ""
-#: order/models.py:950
+#: order/models.py:966
msgid "Unit price"
msgstr ""
-#: order/models.py:980
+#: order/models.py:996
msgid "Supplier part must match supplier"
msgstr ""
-#: order/models.py:988
+#: order/models.py:1004
msgid "deleted"
msgstr ""
-#: order/models.py:994 order/models.py:1074 order/models.py:1099
-#: order/models.py:1184 order/models.py:1320
+#: order/models.py:1010 order/models.py:1090 order/models.py:1115
+#: order/models.py:1200 order/models.py:1336
#: templates/js/translated/order.js:3112
msgid "Order"
msgstr ""
-#: order/models.py:995 order/models.py:1074
+#: order/models.py:1011 order/models.py:1090
#: order/templates/order/order_base.html:9
#: order/templates/order/order_base.html:18
#: report/templates/report/inventree_po_report.html:76
#: stock/templates/stock/item_base.html:184
+#: templates/email/overdue_purchase_order.html:15
#: templates/js/translated/order.js:885 templates/js/translated/order.js:1621
-#: templates/js/translated/part.js:899 templates/js/translated/stock.js:1846
-#: templates/js/translated/stock.js:2412
+#: templates/js/translated/part.js:943 templates/js/translated/stock.js:1856
+#: templates/js/translated/stock.js:2422
msgid "Purchase Order"
msgstr ""
-#: order/models.py:1013
+#: order/models.py:1029
msgid "Supplier part"
msgstr ""
-#: order/models.py:1020 order/templates/order/order_base.html:169
+#: order/models.py:1036 order/templates/order/order_base.html:169
#: templates/js/translated/order.js:1318 templates/js/translated/order.js:2009
-#: templates/js/translated/part.js:993 templates/js/translated/part.js:1020
+#: templates/js/translated/part.js:1037 templates/js/translated/part.js:1064
#: templates/js/translated/table_filters.js:330
msgid "Received"
msgstr ""
-#: order/models.py:1021
+#: order/models.py:1037
msgid "Number of items received"
msgstr ""
-#: order/models.py:1028 part/templates/part/prices.html:179 stock/models.py:722
+#: order/models.py:1044 part/templates/part/prices.html:181 stock/models.py:722
#: stock/serializers.py:153 stock/templates/stock/item_base.html:191
-#: templates/js/translated/stock.js:1900
+#: templates/js/translated/stock.js:1910
msgid "Purchase Price"
msgstr ""
-#: order/models.py:1029
+#: order/models.py:1045
msgid "Unit purchase price"
msgstr ""
-#: order/models.py:1037
+#: order/models.py:1053
msgid "Where does the Purchaser want this item to be stored?"
msgstr ""
-#: order/models.py:1109 part/templates/part/part_pricing.html:112
-#: part/templates/part/prices.html:119 part/templates/part/prices.html:288
+#: order/models.py:1125 part/templates/part/part_pricing.html:115
+#: part/templates/part/prices.html:121 part/templates/part/prices.html:290
msgid "Sale Price"
msgstr ""
-#: order/models.py:1110
+#: order/models.py:1126
msgid "Unit sale price"
msgstr ""
-#: order/models.py:1115
+#: order/models.py:1131
msgid "Shipped quantity"
msgstr ""
-#: order/models.py:1191
+#: order/models.py:1207
msgid "Date of shipment"
msgstr ""
-#: order/models.py:1198
+#: order/models.py:1214
msgid "Checked By"
msgstr ""
-#: order/models.py:1199
+#: order/models.py:1215
msgid "User who checked this shipment"
msgstr ""
-#: order/models.py:1207
+#: order/models.py:1223
msgid "Shipment number"
msgstr ""
-#: order/models.py:1214
+#: order/models.py:1230
msgid "Shipment notes"
msgstr ""
-#: order/models.py:1221
+#: order/models.py:1237
msgid "Tracking Number"
msgstr ""
-#: order/models.py:1222
+#: order/models.py:1238
msgid "Shipment tracking information"
msgstr ""
-#: order/models.py:1229
+#: order/models.py:1245
msgid "Invoice Number"
msgstr ""
-#: order/models.py:1230
+#: order/models.py:1246
msgid "Reference number for associated invoice"
msgstr ""
-#: order/models.py:1248
+#: order/models.py:1264
msgid "Shipment has already been sent"
msgstr ""
-#: order/models.py:1251
+#: order/models.py:1267
msgid "Shipment has no allocated stock items"
msgstr ""
-#: order/models.py:1354 order/models.py:1356
+#: order/models.py:1370 order/models.py:1372
msgid "Stock item has not been assigned"
msgstr ""
-#: order/models.py:1360
+#: order/models.py:1376
msgid "Cannot allocate stock item to a line with a different part"
msgstr ""
-#: order/models.py:1362
+#: order/models.py:1378
msgid "Cannot allocate stock to a line without a part"
msgstr ""
-#: order/models.py:1365
+#: order/models.py:1381
msgid "Allocation quantity cannot exceed stock quantity"
msgstr ""
-#: order/models.py:1369
+#: order/models.py:1385
msgid "StockItem is over-allocated"
msgstr ""
-#: order/models.py:1375 order/serializers.py:1045
+#: order/models.py:1391 order/serializers.py:1047
msgid "Quantity must be 1 for serialized stock item"
msgstr ""
-#: order/models.py:1378
+#: order/models.py:1394
msgid "Sales order does not match shipment"
msgstr ""
-#: order/models.py:1379
+#: order/models.py:1395
msgid "Shipment does not match sales order"
msgstr ""
-#: order/models.py:1387
+#: order/models.py:1403
msgid "Line"
msgstr ""
-#: order/models.py:1395 order/serializers.py:1149 order/serializers.py:1273
+#: order/models.py:1411 order/serializers.py:1151 order/serializers.py:1275
#: templates/js/translated/model_renderers.js:301
msgid "Shipment"
msgstr ""
-#: order/models.py:1396
+#: order/models.py:1412
msgid "Sales order shipment reference"
msgstr ""
-#: order/models.py:1408 templates/InvenTree/notifications/notifications.html:70
+#: order/models.py:1424 templates/InvenTree/notifications/notifications.html:70
msgid "Item"
msgstr ""
-#: order/models.py:1409
+#: order/models.py:1425
msgid "Select stock item to allocate"
msgstr ""
-#: order/models.py:1412
+#: order/models.py:1428
msgid "Enter stock allocation quantity"
msgstr ""
@@ -3662,7 +3692,7 @@ msgstr ""
msgid "Purchase order must match supplier"
msgstr ""
-#: order/serializers.py:406 order/serializers.py:1117
+#: order/serializers.py:406 order/serializers.py:1119
msgid "Line Item"
msgstr ""
@@ -3710,42 +3740,60 @@ msgstr ""
msgid "Supplied barcode values must be unique"
msgstr ""
-#: order/serializers.py:866
+#: order/serializers.py:868
msgid "Sale price currency"
msgstr ""
-#: order/serializers.py:947
+#: order/serializers.py:949
msgid "No shipment details provided"
msgstr ""
-#: order/serializers.py:1006 order/serializers.py:1126
+#: order/serializers.py:1008 order/serializers.py:1128
msgid "Line item is not associated with this order"
msgstr ""
-#: order/serializers.py:1028
+#: order/serializers.py:1030
msgid "Quantity must be positive"
msgstr ""
-#: order/serializers.py:1139
+#: order/serializers.py:1141
msgid "Enter serial numbers to allocate"
msgstr ""
-#: order/serializers.py:1161 order/serializers.py:1281
+#: order/serializers.py:1163 order/serializers.py:1283
msgid "Shipment has already been shipped"
msgstr ""
-#: order/serializers.py:1164 order/serializers.py:1284
+#: order/serializers.py:1166 order/serializers.py:1286
msgid "Shipment is not associated with this order"
msgstr ""
-#: order/serializers.py:1214
+#: order/serializers.py:1216
msgid "No match found for the following serial numbers"
msgstr ""
-#: order/serializers.py:1224
+#: order/serializers.py:1226
msgid "The following serial numbers are already allocated"
msgstr ""
+#: order/tasks.py:26
+msgid "Overdue Purchase Order"
+msgstr ""
+
+#: order/tasks.py:31
+#, python-brace-format
+msgid "Purchase order {po} is now overdue"
+msgstr ""
+
+#: order/tasks.py:88
+msgid "Overdue Sales Order"
+msgstr ""
+
+#: order/tasks.py:93
+#, python-brace-format
+msgid "Sales order {so} is now overdue"
+msgstr ""
+
#: order/templates/order/order_base.html:33
msgid "Print purchase order report"
msgstr ""
@@ -3870,8 +3918,8 @@ msgstr ""
#: templates/js/translated/bom.js:77 templates/js/translated/build.js:427
#: templates/js/translated/build.js:579 templates/js/translated/build.js:1972
#: templates/js/translated/order.js:833 templates/js/translated/order.js:1265
-#: templates/js/translated/order.js:2731 templates/js/translated/stock.js:570
-#: templates/js/translated/stock.js:738
+#: templates/js/translated/order.js:2731 templates/js/translated/stock.js:569
+#: templates/js/translated/stock.js:737
#: templates/patterns/wizard/match_fields.html:70
msgid "Remove row"
msgstr ""
@@ -3990,7 +4038,7 @@ msgid "Pending Shipments"
msgstr ""
#: order/templates/order/sales_order_detail.html:70
-#: templates/attachment_table.html:6 templates/js/translated/bom.js:1053
+#: templates/attachment_table.html:6 templates/js/translated/bom.js:1047
#: templates/js/translated/build.js:1880
msgid "Actions"
msgstr ""
@@ -4021,47 +4069,47 @@ msgstr ""
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr ""
-#: part/api.py:481
+#: part/api.py:482
msgid "Incoming Purchase Order"
msgstr ""
-#: part/api.py:501
+#: part/api.py:502
msgid "Outgoing Sales Order"
msgstr ""
-#: part/api.py:519
+#: part/api.py:520
msgid "Stock produced by Build Order"
msgstr ""
-#: part/api.py:551
+#: part/api.py:552
msgid "Stock required for Build Order"
msgstr ""
-#: part/api.py:637
+#: part/api.py:638
msgid "Valid"
msgstr ""
-#: part/api.py:638
+#: part/api.py:639
msgid "Validate entire Bill of Materials"
msgstr ""
-#: part/api.py:644
+#: part/api.py:645
msgid "This option must be selected"
msgstr ""
-#: part/api.py:1010
+#: part/api.py:1011
msgid "Must be greater than zero"
msgstr ""
-#: part/api.py:1014
+#: part/api.py:1015
msgid "Must be a valid quantity"
msgstr ""
-#: part/api.py:1029
+#: part/api.py:1030
msgid "Specify location for initial part stock"
msgstr ""
-#: part/api.py:1060 part/api.py:1064 part/api.py:1079 part/api.py:1083
+#: part/api.py:1061 part/api.py:1065 part/api.py:1080 part/api.py:1084
msgid "This field is required"
msgstr ""
@@ -4080,17 +4128,13 @@ msgid "Available Stock"
msgstr ""
#: part/bom.py:130 part/templates/part/part_base.html:207
-#: templates/js/translated/part.js:517 templates/js/translated/part.js:537
-#: templates/js/translated/part.js:1229 templates/js/translated/part.js:1401
-#: templates/js/translated/part.js:1417
+#: templates/js/translated/part.js:561 templates/js/translated/part.js:581
+#: templates/js/translated/part.js:1273 templates/js/translated/part.js:1445
+#: templates/js/translated/part.js:1461
msgid "On Order"
msgstr ""
-#: part/forms.py:59
-msgid "Select part category"
-msgstr ""
-
-#: part/forms.py:69
+#: part/forms.py:60
msgid "Input quantity for price calculation"
msgstr ""
@@ -4106,7 +4150,7 @@ msgstr ""
msgid "Default keywords for parts in this category"
msgstr ""
-#: part/models.py:115 part/models.py:2415 part/templates/part/category.html:15
+#: part/models.py:115 part/models.py:2403 part/templates/part/category.html:15
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr ""
@@ -4123,7 +4167,7 @@ msgstr ""
#: part/templates/part/category_sidebar.html:9
#: templates/InvenTree/index.html:85 templates/InvenTree/search.html:82
#: templates/InvenTree/settings/sidebar.html:39
-#: templates/js/translated/part.js:1768 templates/js/translated/search.js:144
+#: templates/js/translated/part.js:1864 templates/js/translated/search.js:144
#: templates/navbar.html:24 users/models.py:37
msgid "Parts"
msgstr ""
@@ -4153,7 +4197,7 @@ msgstr ""
msgid "Duplicate IPN not allowed in part settings"
msgstr ""
-#: part/models.py:738 part/models.py:2469
+#: part/models.py:738 part/models.py:2457
msgid "Part name"
msgstr ""
@@ -4186,12 +4230,11 @@ msgstr ""
msgid "Part keywords to improve visibility in search results"
msgstr ""
-#: part/models.py:776 part/models.py:2171 part/models.py:2414
+#: part/models.py:776 part/models.py:2159 part/models.py:2402
#: part/templates/part/part_base.html:257
-#: part/templates/part/set_category.html:15
#: templates/InvenTree/notifications/notifications.html:65
#: templates/InvenTree/settings/settings.html:231
-#: templates/js/translated/part.js:1369
+#: templates/js/translated/part.js:1413 templates/js/translated/part.js:1639
msgid "Category"
msgstr ""
@@ -4200,8 +4243,8 @@ msgid "Part category"
msgstr ""
#: part/models.py:782 part/templates/part/part_base.html:266
-#: templates/js/translated/part.js:666 templates/js/translated/part.js:1322
-#: templates/js/translated/stock.js:1659
+#: templates/js/translated/part.js:710 templates/js/translated/part.js:1366
+#: templates/js/translated/stock.js:1669
msgid "IPN"
msgstr ""
@@ -4214,7 +4257,7 @@ msgid "Part revision or version number"
msgstr ""
#: part/models.py:790 part/templates/part/part_base.html:273
-#: report/models.py:170 templates/js/translated/part.js:670
+#: report/models.py:170 templates/js/translated/part.js:714
msgid "Revision"
msgstr ""
@@ -4302,317 +4345,321 @@ msgstr ""
msgid "Creation User"
msgstr ""
-#: part/models.py:1690
+#: part/models.py:1685
msgid "Sell multiple"
msgstr ""
-#: part/models.py:2218
+#: part/models.py:2206
msgid "Test templates can only be created for trackable parts"
msgstr ""
-#: part/models.py:2235
+#: part/models.py:2223
msgid "Test with this name already exists for this part"
msgstr ""
-#: part/models.py:2255 templates/js/translated/part.js:1819
-#: templates/js/translated/stock.js:1274
+#: part/models.py:2243 templates/js/translated/part.js:1915
+#: templates/js/translated/stock.js:1284
msgid "Test Name"
msgstr ""
-#: part/models.py:2256
+#: part/models.py:2244
msgid "Enter a name for the test"
msgstr ""
-#: part/models.py:2261
+#: part/models.py:2249
msgid "Test Description"
msgstr ""
-#: part/models.py:2262
+#: part/models.py:2250
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:2267 templates/js/translated/part.js:1828
+#: part/models.py:2255 templates/js/translated/part.js:1924
#: templates/js/translated/table_filters.js:294
msgid "Required"
msgstr ""
-#: part/models.py:2268
+#: part/models.py:2256
msgid "Is this test required to pass?"
msgstr ""
-#: part/models.py:2273 templates/js/translated/part.js:1836
+#: part/models.py:2261 templates/js/translated/part.js:1932
msgid "Requires Value"
msgstr ""
-#: part/models.py:2274
+#: part/models.py:2262
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:2279 templates/js/translated/part.js:1843
+#: part/models.py:2267 templates/js/translated/part.js:1939
msgid "Requires Attachment"
msgstr ""
-#: part/models.py:2280
+#: part/models.py:2268
msgid "Does this test require a file attachment when adding a test result?"
msgstr ""
-#: part/models.py:2288
+#: part/models.py:2276
#, python-brace-format
msgid "Illegal character in template name ({c})"
msgstr ""
-#: part/models.py:2324
+#: part/models.py:2312
msgid "Parameter template name must be unique"
msgstr ""
-#: part/models.py:2332
+#: part/models.py:2320
msgid "Parameter Name"
msgstr ""
-#: part/models.py:2339
+#: part/models.py:2327
msgid "Parameter Units"
msgstr ""
-#: part/models.py:2370
+#: part/models.py:2358
msgid "Parent Part"
msgstr ""
-#: part/models.py:2372 part/models.py:2420 part/models.py:2421
+#: part/models.py:2360 part/models.py:2408 part/models.py:2409
#: templates/InvenTree/settings/settings.html:226
msgid "Parameter Template"
msgstr ""
-#: part/models.py:2374
+#: part/models.py:2362
msgid "Data"
msgstr ""
-#: part/models.py:2374
+#: part/models.py:2362
msgid "Parameter Value"
msgstr ""
-#: part/models.py:2425 templates/InvenTree/settings/settings.html:235
+#: part/models.py:2413 templates/InvenTree/settings/settings.html:235
msgid "Default Value"
msgstr ""
-#: part/models.py:2426
+#: part/models.py:2414
msgid "Default Parameter Value"
msgstr ""
-#: part/models.py:2461
+#: part/models.py:2449
msgid "Part ID or part name"
msgstr ""
-#: part/models.py:2464 templates/js/translated/model_renderers.js:200
+#: part/models.py:2452 templates/js/translated/model_renderers.js:200
msgid "Part ID"
msgstr ""
-#: part/models.py:2465
+#: part/models.py:2453
msgid "Unique part ID value"
msgstr ""
-#: part/models.py:2468
+#: part/models.py:2456
msgid "Part Name"
msgstr ""
-#: part/models.py:2472
+#: part/models.py:2460
msgid "Part IPN"
msgstr ""
-#: part/models.py:2473
+#: part/models.py:2461
msgid "Part IPN value"
msgstr ""
-#: part/models.py:2476
+#: part/models.py:2464
msgid "Level"
msgstr ""
-#: part/models.py:2477
+#: part/models.py:2465
msgid "BOM level"
msgstr ""
-#: part/models.py:2546
+#: part/models.py:2534
msgid "Select parent part"
msgstr ""
-#: part/models.py:2554
+#: part/models.py:2542
msgid "Sub part"
msgstr ""
-#: part/models.py:2555
+#: part/models.py:2543
msgid "Select part to be used in BOM"
msgstr ""
-#: part/models.py:2561
+#: part/models.py:2549
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:2563 part/templates/part/upload_bom.html:58
-#: templates/js/translated/bom.js:877 templates/js/translated/bom.js:971
+#: part/models.py:2551 part/templates/part/upload_bom.html:58
+#: templates/js/translated/bom.js:871 templates/js/translated/bom.js:965
#: templates/js/translated/table_filters.js:92
msgid "Optional"
msgstr ""
-#: part/models.py:2563
+#: part/models.py:2551
msgid "This BOM item is optional"
msgstr ""
-#: part/models.py:2566 part/templates/part/upload_bom.html:55
+#: part/models.py:2554 part/templates/part/upload_bom.html:55
msgid "Overage"
msgstr ""
-#: part/models.py:2567
+#: part/models.py:2555
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr ""
-#: part/models.py:2570
+#: part/models.py:2558
msgid "BOM item reference"
msgstr ""
-#: part/models.py:2573
+#: part/models.py:2561
msgid "BOM item notes"
msgstr ""
-#: part/models.py:2575
+#: part/models.py:2563
msgid "Checksum"
msgstr ""
-#: part/models.py:2575
+#: part/models.py:2563
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:2579 part/templates/part/upload_bom.html:57
-#: templates/js/translated/bom.js:988
+#: part/models.py:2567 part/templates/part/upload_bom.html:57
+#: templates/js/translated/bom.js:982
#: templates/js/translated/table_filters.js:68
#: templates/js/translated/table_filters.js:88
msgid "Inherited"
msgstr ""
-#: part/models.py:2580
+#: part/models.py:2568
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr ""
-#: part/models.py:2585 part/templates/part/upload_bom.html:56
-#: templates/js/translated/bom.js:980
+#: part/models.py:2573 part/templates/part/upload_bom.html:56
+#: templates/js/translated/bom.js:974
msgid "Allow Variants"
msgstr ""
-#: part/models.py:2586
+#: part/models.py:2574
msgid "Stock items for variant parts can be used for this BOM item"
msgstr ""
-#: part/models.py:2664 stock/models.py:460
+#: part/models.py:2652 stock/models.py:460
msgid "Quantity must be integer value for trackable parts"
msgstr ""
-#: part/models.py:2673 part/models.py:2675
+#: part/models.py:2661 part/models.py:2663
msgid "Sub part must be specified"
msgstr ""
-#: part/models.py:2780
+#: part/models.py:2768
msgid "BOM Item Substitute"
msgstr ""
-#: part/models.py:2801
+#: part/models.py:2789
msgid "Substitute part cannot be the same as the master part"
msgstr ""
-#: part/models.py:2814
+#: part/models.py:2802
msgid "Parent BOM item"
msgstr ""
-#: part/models.py:2822
+#: part/models.py:2810
msgid "Substitute part"
msgstr ""
-#: part/models.py:2833
+#: part/models.py:2825
msgid "Part 1"
msgstr ""
-#: part/models.py:2837
+#: part/models.py:2829
msgid "Part 2"
msgstr ""
-#: part/models.py:2837
+#: part/models.py:2829
msgid "Select Related Part"
msgstr ""
-#: part/models.py:2868
-msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique"
+#: part/models.py:2847
+msgid "Part relationship cannot be created between a part and itself"
msgstr ""
-#: part/serializers.py:138 part/serializers.py:169 stock/serializers.py:163
+#: part/models.py:2851
+msgid "Duplicate relationship already exists"
+msgstr ""
+
+#: part/serializers.py:140 part/serializers.py:171 stock/serializers.py:163
msgid "Purchase currency of this stock item"
msgstr ""
-#: part/serializers.py:794
+#: part/serializers.py:796
msgid "Select part to copy BOM from"
msgstr ""
-#: part/serializers.py:802
+#: part/serializers.py:804
msgid "Remove Existing Data"
msgstr ""
-#: part/serializers.py:803
+#: part/serializers.py:805
msgid "Remove existing BOM items before copying"
msgstr ""
-#: part/serializers.py:808
+#: part/serializers.py:810
msgid "Include Inherited"
msgstr ""
-#: part/serializers.py:809
+#: part/serializers.py:811
msgid "Include BOM items which are inherited from templated parts"
msgstr ""
-#: part/serializers.py:814
+#: part/serializers.py:816
msgid "Skip Invalid Rows"
msgstr ""
-#: part/serializers.py:815
+#: part/serializers.py:817
msgid "Enable this option to skip invalid rows"
msgstr ""
-#: part/serializers.py:820
+#: part/serializers.py:822
msgid "Copy Substitute Parts"
msgstr ""
-#: part/serializers.py:821
+#: part/serializers.py:823
msgid "Copy substitute parts when duplicate BOM items"
msgstr ""
-#: part/serializers.py:861
+#: part/serializers.py:863
msgid "Clear Existing BOM"
msgstr ""
-#: part/serializers.py:862
+#: part/serializers.py:864
msgid "Delete existing BOM items before uploading"
msgstr ""
-#: part/serializers.py:892
+#: part/serializers.py:894
msgid "No part column specified"
msgstr ""
-#: part/serializers.py:935
+#: part/serializers.py:937
msgid "Multiple matching parts found"
msgstr ""
-#: part/serializers.py:938
+#: part/serializers.py:940
msgid "No matching part found"
msgstr ""
-#: part/serializers.py:941
+#: part/serializers.py:943
msgid "Part is not designated as a component"
msgstr ""
-#: part/serializers.py:950
+#: part/serializers.py:952
msgid "Quantity not provided"
msgstr ""
-#: part/serializers.py:958
+#: part/serializers.py:960
msgid "Invalid quantity"
msgstr ""
-#: part/serializers.py:979
+#: part/serializers.py:981
msgid "At least one BOM item is required"
msgstr ""
@@ -5088,10 +5135,10 @@ msgid "Part is virtual (not a physical part)"
msgstr ""
#: part/templates/part/part_base.html:143
-#: templates/js/translated/company.js:623
-#: templates/js/translated/company.js:882
+#: templates/js/translated/company.js:608
+#: templates/js/translated/company.js:867
#: templates/js/translated/model_renderers.js:192
-#: templates/js/translated/part.js:581 templates/js/translated/part.js:658
+#: templates/js/translated/part.js:625 templates/js/translated/part.js:702
msgid "Inactive"
msgstr ""
@@ -5120,13 +5167,13 @@ msgstr ""
msgid "Allocated to Sales Orders"
msgstr ""
-#: part/templates/part/part_base.html:232 templates/js/translated/bom.js:1009
+#: part/templates/part/part_base.html:232 templates/js/translated/bom.js:1003
msgid "Can Build"
msgstr ""
-#: part/templates/part/part_base.html:238 templates/js/translated/part.js:520
-#: templates/js/translated/part.js:540 templates/js/translated/part.js:1233
-#: templates/js/translated/part.js:1405 templates/js/translated/part.js:1421
+#: part/templates/part/part_base.html:238 templates/js/translated/part.js:564
+#: templates/js/translated/part.js:584 templates/js/translated/part.js:1277
+#: templates/js/translated/part.js:1449 templates/js/translated/part.js:1465
msgid "Building"
msgstr ""
@@ -5143,7 +5190,7 @@ msgstr ""
msgid "Search for serial number"
msgstr ""
-#: part/templates/part/part_base.html:443 part/templates/part/prices.html:147
+#: part/templates/part/part_base.html:443 part/templates/part/prices.html:149
msgid "Calculate"
msgstr ""
@@ -5161,54 +5208,55 @@ msgstr ""
#: part/templates/part/part_pricing.html:26
#: part/templates/part/part_pricing.html:52
-#: part/templates/part/part_pricing.html:100
-#: part/templates/part/part_pricing.html:115 part/templates/part/prices.html:28
-#: part/templates/part/prices.html:55 part/templates/part/prices.html:106
-#: part/templates/part/prices.html:123
+#: part/templates/part/part_pricing.html:103
+#: part/templates/part/part_pricing.html:118 part/templates/part/prices.html:28
+#: part/templates/part/prices.html:55 part/templates/part/prices.html:108
+#: part/templates/part/prices.html:125
msgid "Unit Cost"
msgstr ""
#: part/templates/part/part_pricing.html:32
#: part/templates/part/part_pricing.html:58
-#: part/templates/part/part_pricing.html:104
-#: part/templates/part/part_pricing.html:119 part/templates/part/prices.html:35
-#: part/templates/part/prices.html:62 part/templates/part/prices.html:111
-#: part/templates/part/prices.html:128
+#: part/templates/part/part_pricing.html:107
+#: part/templates/part/part_pricing.html:122 part/templates/part/prices.html:35
+#: part/templates/part/prices.html:62 part/templates/part/prices.html:113
+#: part/templates/part/prices.html:130
msgid "Total Cost"
msgstr ""
#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:43
-#: templates/js/translated/bom.js:963
+#: templates/js/translated/bom.js:957
msgid "No supplier pricing available"
msgstr ""
#: part/templates/part/part_pricing.html:48 part/templates/part/prices.html:52
-#: part/templates/part/prices.html:246
+#: part/templates/part/prices.html:248
msgid "BOM Pricing"
msgstr ""
-#: part/templates/part/part_pricing.html:65 part/templates/part/prices.html:72
+#: part/templates/part/part_pricing.html:66 part/templates/part/prices.html:72
msgid "Unit Purchase Price"
msgstr ""
-#: part/templates/part/part_pricing.html:71 part/templates/part/prices.html:79
+#: part/templates/part/part_pricing.html:72 part/templates/part/prices.html:79
msgid "Total Purchase Price"
msgstr ""
-#: part/templates/part/part_pricing.html:81 part/templates/part/prices.html:89
+#: part/templates/part/part_pricing.html:82 part/templates/part/prices.html:89
msgid "Note: BOM pricing is incomplete for this part"
msgstr ""
-#: part/templates/part/part_pricing.html:88 part/templates/part/prices.html:96
+#: part/templates/part/part_pricing.html:91 part/templates/part/prices.html:98
msgid "No BOM pricing available"
msgstr ""
-#: part/templates/part/part_pricing.html:97 part/templates/part/prices.html:105
+#: part/templates/part/part_pricing.html:100
+#: part/templates/part/prices.html:107
msgid "Internal Price"
msgstr ""
-#: part/templates/part/part_pricing.html:128
-#: part/templates/part/prices.html:137
+#: part/templates/part/part_pricing.html:131
+#: part/templates/part/prices.html:139
msgid "No pricing information is available for this part."
msgstr ""
@@ -5232,43 +5280,6 @@ msgstr ""
msgid "Select from existing images"
msgstr ""
-#: part/templates/part/partial_delete.html:9
-#, python-format
-msgid "Part '%(full_name)s' cannot be deleted as it is still marked as active.\n"
-"
Disable the \"Active\" part attribute and re-try.\n"
-" "
-msgstr ""
-
-#: part/templates/part/partial_delete.html:17
-#, python-format
-msgid "Are you sure you want to delete part '%(full_name)s'?"
-msgstr ""
-
-#: part/templates/part/partial_delete.html:22
-#, python-format
-msgid "This part is used in BOMs for %(count)s other parts. If you delete this part, the BOMs for the following parts will be updated"
-msgstr ""
-
-#: part/templates/part/partial_delete.html:32
-#, python-format
-msgid "There are %(count)s stock entries defined for this part. If you delete this part, the following stock entries will also be deleted:"
-msgstr ""
-
-#: part/templates/part/partial_delete.html:43
-#, python-format
-msgid "There are %(count)s manufacturers defined for this part. If you delete this part, the following manufacturer parts will also be deleted:"
-msgstr "Er zijn %(count)s fabrikanten gedefinieerd voor dit onderdeel. Als u dit onderdeel verwijdert, worden de volgende onderdelen ook verwijderd:"
-
-#: part/templates/part/partial_delete.html:54
-#, python-format
-msgid "There are %(count)s suppliers defined for this part. If you delete this part, the following supplier parts will also be deleted:"
-msgstr ""
-
-#: part/templates/part/partial_delete.html:67
-#, python-format
-msgid "There are %(count)s unique parts tracked for '%(full_name)s'. Deleting this part will permanently remove this tracking information."
-msgstr ""
-
#: part/templates/part/prices.html:19
msgid "Pricing ranges"
msgstr ""
@@ -5285,66 +5296,58 @@ msgstr ""
msgid "Show BOM cost"
msgstr ""
-#: part/templates/part/prices.html:120
+#: part/templates/part/prices.html:122
msgid "Show sale cost"
msgstr ""
-#: part/templates/part/prices.html:121
+#: part/templates/part/prices.html:123
msgid "Show sale price"
msgstr ""
-#: part/templates/part/prices.html:143
+#: part/templates/part/prices.html:145
msgid "Calculation parameters"
msgstr ""
-#: part/templates/part/prices.html:158 templates/js/translated/bom.js:957
+#: part/templates/part/prices.html:160 templates/js/translated/bom.js:951
msgid "Supplier Cost"
msgstr ""
-#: part/templates/part/prices.html:159 part/templates/part/prices.html:180
-#: part/templates/part/prices.html:204 part/templates/part/prices.html:234
-#: part/templates/part/prices.html:260 part/templates/part/prices.html:289
+#: part/templates/part/prices.html:161 part/templates/part/prices.html:182
+#: part/templates/part/prices.html:206 part/templates/part/prices.html:236
+#: part/templates/part/prices.html:262 part/templates/part/prices.html:291
msgid "Jump to overview"
msgstr ""
-#: part/templates/part/prices.html:184
+#: part/templates/part/prices.html:186
msgid "Stock Pricing"
msgstr ""
-#: part/templates/part/prices.html:193
+#: part/templates/part/prices.html:195
msgid "No stock pricing history is available for this part."
msgstr ""
-#: part/templates/part/prices.html:203
+#: part/templates/part/prices.html:205
msgid "Internal Cost"
msgstr ""
-#: part/templates/part/prices.html:218
+#: part/templates/part/prices.html:220
msgid "Add Internal Price Break"
msgstr ""
-#: part/templates/part/prices.html:233
+#: part/templates/part/prices.html:235
msgid "BOM Cost"
msgstr ""
-#: part/templates/part/prices.html:259
+#: part/templates/part/prices.html:261
msgid "Sale Cost"
msgstr ""
-#: part/templates/part/prices.html:300
+#: part/templates/part/prices.html:302
msgid "No sale pice history available for this part."
msgstr ""
-#: part/templates/part/set_category.html:9
-msgid "Set category for the following parts"
-msgstr ""
-
-#: part/templates/part/set_category.html:32
-msgid "Remove part"
-msgstr ""
-
-#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:543
-#: templates/js/translated/part.js:1221 templates/js/translated/part.js:1425
+#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:587
+#: templates/js/translated/part.js:1265 templates/js/translated/part.js:1469
msgid "No Stock"
msgstr ""
@@ -5407,56 +5410,39 @@ msgstr ""
msgid "{title} v{version}"
msgstr ""
-#: part/views.py:74
-msgid "Set Part Category"
-msgstr ""
-
-#: part/views.py:122
-#, python-brace-format
-msgid "Set category for {n} parts"
-msgstr ""
-
-#: part/views.py:193
+#: part/views.py:118
msgid "Match References"
msgstr ""
-#: part/views.py:494
+#: part/views.py:419
msgid "None"
msgstr ""
-#: part/views.py:556
+#: part/views.py:481
msgid "Part QR Code"
msgstr ""
-#: part/views.py:650
+#: part/views.py:575
msgid "Select Part Image"
msgstr ""
-#: part/views.py:676
+#: part/views.py:601
msgid "Updated part image"
msgstr ""
-#: part/views.py:679
+#: part/views.py:604
msgid "Part image not found"
msgstr ""
-#: part/views.py:768
-msgid "Confirm Part Deletion"
-msgstr ""
-
-#: part/views.py:776
-msgid "Part was deleted"
-msgstr ""
-
-#: part/views.py:785
+#: part/views.py:693
msgid "Part Pricing"
msgstr ""
-#: part/views.py:976
+#: part/views.py:884
msgid "Delete Part Category"
msgstr ""
-#: part/views.py:983
+#: part/views.py:891
msgid "Part category was deleted"
msgstr ""
@@ -5516,21 +5502,21 @@ msgstr "Streepjescode gekoppeld aan Voorraadartikel"
msgid "Label printing failed"
msgstr ""
-#: plugin/builtin/integration/core_notifications.py:28
+#: plugin/builtin/integration/core_notifications.py:29
msgid "InvenTree contributors"
msgstr ""
-#: plugin/builtin/integration/core_notifications.py:29
+#: plugin/builtin/integration/core_notifications.py:30
msgid "Integrated outgoing notificaton methods"
msgstr ""
-#: plugin/builtin/integration/core_notifications.py:33
-#: plugin/builtin/integration/core_notifications.py:52
-msgid "Enable email notifications"
-msgstr ""
-
#: plugin/builtin/integration/core_notifications.py:34
#: plugin/builtin/integration/core_notifications.py:53
+msgid "Enable email notifications"
+msgstr ""
+
+#: plugin/builtin/integration/core_notifications.py:35
+#: plugin/builtin/integration/core_notifications.py:54
msgid "Allow sending of emails for event notifications"
msgstr ""
@@ -5646,15 +5632,19 @@ msgstr ""
msgid "Either packagename of URL must be provided"
msgstr ""
-#: report/api.py:166
+#: report/api.py:179
msgid "No valid objects provided to template"
msgstr ""
-#: report/api.py:198 report/api.py:239
+#: report/api.py:215 report/api.py:256
#, python-brace-format
msgid "Template file '{template}' is missing or does not exist"
msgstr ""
+#: report/api.py:359
+msgid "Test report"
+msgstr ""
+
#: report/models.py:152
msgid "Template name"
msgstr ""
@@ -5757,7 +5747,7 @@ msgstr ""
#: templates/js/translated/build.js:1173 templates/js/translated/build.js:1671
#: templates/js/translated/model_renderers.js:106
#: templates/js/translated/order.js:115 templates/js/translated/order.js:3229
-#: templates/js/translated/order.js:3318 templates/js/translated/stock.js:435
+#: templates/js/translated/order.js:3318 templates/js/translated/stock.js:434
msgid "Serial Number"
msgstr "Serienummer"
@@ -5766,19 +5756,19 @@ msgid "Test Results"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:93
-#: stock/models.py:2068
+#: stock/models.py:2072
msgid "Test"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:94
-#: stock/models.py:2074
+#: stock/models.py:2078
msgid "Result"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:97
#: templates/InvenTree/settings/plugin.html:51
#: templates/InvenTree/settings/plugin_settings.html:38
-#: templates/js/translated/order.js:1669 templates/js/translated/stock.js:2340
+#: templates/js/translated/order.js:1669 templates/js/translated/stock.js:2350
msgid "Date"
msgstr ""
@@ -5796,20 +5786,20 @@ msgid "Installed Items"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:137
-#: templates/js/translated/stock.js:555 templates/js/translated/stock.js:725
-#: templates/js/translated/stock.js:2589
+#: templates/js/translated/stock.js:554 templates/js/translated/stock.js:724
+#: templates/js/translated/stock.js:2599
msgid "Serial"
msgstr ""
-#: stock/api.py:504
+#: stock/api.py:505
msgid "Quantity is required"
msgstr ""
-#: stock/api.py:511
+#: stock/api.py:512
msgid "Valid part must be supplied"
msgstr ""
-#: stock/api.py:536
+#: stock/api.py:537
msgid "Serial numbers cannot be supplied for a non-trackable part"
msgstr ""
@@ -5917,7 +5907,7 @@ msgid "Destination Sales Order"
msgstr ""
#: stock/models.py:690 stock/templates/stock/item_base.html:429
-#: templates/js/translated/stock.js:1816
+#: templates/js/translated/stock.js:1826
msgid "Expiry Date"
msgstr ""
@@ -5971,79 +5961,79 @@ msgstr ""
msgid "Serial numbers already exist: {exists}"
msgstr ""
-#: stock/models.py:1321
+#: stock/models.py:1325
msgid "Stock item has been assigned to a sales order"
msgstr ""
-#: stock/models.py:1324
+#: stock/models.py:1328
msgid "Stock item is installed in another item"
msgstr ""
-#: stock/models.py:1327
+#: stock/models.py:1331
msgid "Stock item contains other items"
msgstr ""
-#: stock/models.py:1330
+#: stock/models.py:1334
msgid "Stock item has been assigned to a customer"
msgstr ""
-#: stock/models.py:1333
+#: stock/models.py:1337
msgid "Stock item is currently in production"
msgstr ""
-#: stock/models.py:1336
+#: stock/models.py:1340
msgid "Serialized stock cannot be merged"
msgstr ""
-#: stock/models.py:1343 stock/serializers.py:908
+#: stock/models.py:1347 stock/serializers.py:895
msgid "Duplicate stock items"
msgstr ""
-#: stock/models.py:1347
+#: stock/models.py:1351
msgid "Stock items must refer to the same part"
msgstr ""
-#: stock/models.py:1351
+#: stock/models.py:1355
msgid "Stock items must refer to the same supplier part"
msgstr ""
-#: stock/models.py:1355
+#: stock/models.py:1359
msgid "Stock status codes must match"
msgstr ""
-#: stock/models.py:1524
+#: stock/models.py:1528
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:1986
+#: stock/models.py:1990
msgid "Entry notes"
msgstr ""
-#: stock/models.py:2044
+#: stock/models.py:2048
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:2050
+#: stock/models.py:2054
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:2069
+#: stock/models.py:2073
msgid "Test name"
msgstr ""
-#: stock/models.py:2075
+#: stock/models.py:2079
msgid "Test result"
msgstr ""
-#: stock/models.py:2081
+#: stock/models.py:2085
msgid "Test output value"
msgstr ""
-#: stock/models.py:2088
+#: stock/models.py:2092
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:2094
+#: stock/models.py:2098
msgid "Test notes"
msgstr ""
@@ -6064,7 +6054,7 @@ msgstr ""
msgid "Enter serial numbers for new items"
msgstr ""
-#: stock/serializers.py:309 stock/serializers.py:865 stock/serializers.py:1098
+#: stock/serializers.py:309 stock/serializers.py:852 stock/serializers.py:1085
msgid "Destination stock location"
msgstr ""
@@ -6104,63 +6094,63 @@ msgstr ""
msgid "Destination location for returned item"
msgstr ""
-#: stock/serializers.py:720
+#: stock/serializers.py:707
msgid "Part must be salable"
msgstr ""
-#: stock/serializers.py:724
+#: stock/serializers.py:711
msgid "Item is allocated to a sales order"
msgstr ""
-#: stock/serializers.py:728
+#: stock/serializers.py:715
msgid "Item is allocated to a build order"
msgstr ""
-#: stock/serializers.py:759
+#: stock/serializers.py:746
msgid "Customer to assign stock items"
msgstr ""
-#: stock/serializers.py:765
+#: stock/serializers.py:752
msgid "Selected company is not a customer"
msgstr ""
-#: stock/serializers.py:773
+#: stock/serializers.py:760
msgid "Stock assignment notes"
msgstr ""
-#: stock/serializers.py:783 stock/serializers.py:1014
+#: stock/serializers.py:770 stock/serializers.py:1001
msgid "A list of stock items must be provided"
msgstr ""
-#: stock/serializers.py:872
+#: stock/serializers.py:859
msgid "Stock merging notes"
msgstr ""
-#: stock/serializers.py:877
+#: stock/serializers.py:864
msgid "Allow mismatched suppliers"
msgstr ""
-#: stock/serializers.py:878
+#: stock/serializers.py:865
msgid "Allow stock items with different supplier parts to be merged"
msgstr ""
-#: stock/serializers.py:883
+#: stock/serializers.py:870
msgid "Allow mismatched status"
msgstr ""
-#: stock/serializers.py:884
+#: stock/serializers.py:871
msgid "Allow stock items with different status codes to be merged"
msgstr ""
-#: stock/serializers.py:894
+#: stock/serializers.py:881
msgid "At least two stock items must be provided"
msgstr ""
-#: stock/serializers.py:976
+#: stock/serializers.py:963
msgid "StockItem primary key value"
msgstr ""
-#: stock/serializers.py:1004
+#: stock/serializers.py:991
msgid "Stock transaction notes"
msgstr ""
@@ -6185,7 +6175,7 @@ msgstr ""
msgid "Test Report"
msgstr ""
-#: stock/templates/stock/item.html:94
+#: stock/templates/stock/item.html:94 stock/templates/stock/item.html:298
msgid "Delete Test Data"
msgstr ""
@@ -6197,11 +6187,15 @@ msgstr ""
msgid "Installed Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:151 templates/js/translated/stock.js:2733
+#: stock/templates/stock/item.html:151 templates/js/translated/stock.js:2743
msgid "Install Stock Item"
msgstr ""
-#: stock/templates/stock/item.html:292 templates/js/translated/stock.js:1455
+#: stock/templates/stock/item.html:290
+msgid "Delete all test results for this stock item"
+msgstr ""
+
+#: stock/templates/stock/item.html:323 templates/js/translated/stock.js:1465
msgid "Add Test Result"
msgstr ""
@@ -6388,7 +6382,7 @@ msgid "Stale"
msgstr ""
#: stock/templates/stock/item_base.html:442
-#: templates/js/translated/stock.js:1832
+#: templates/js/translated/stock.js:1842
msgid "Last Updated"
msgstr ""
@@ -6529,7 +6523,7 @@ msgstr ""
msgid "Child Items"
msgstr ""
-#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:182
+#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:144
msgid "Convert Stock Item"
msgstr ""
@@ -6550,31 +6544,19 @@ msgstr ""
msgid "This action cannot be easily undone"
msgstr ""
-#: stock/views.py:113
+#: stock/views.py:111
msgid "Stock Location QR code"
msgstr "QR-code voor Voorraadlocatie"
-#: stock/views.py:131
-msgid "Delete All Test Data"
-msgstr ""
-
-#: stock/views.py:149
-msgid "Confirm test data deletion"
-msgstr ""
-
-#: stock/views.py:150
-msgid "Check the confirmation box"
-msgstr ""
-
-#: stock/views.py:165
+#: stock/views.py:127
msgid "Stock Item QR Code"
msgstr ""
-#: stock/views.py:216
+#: stock/views.py:178
msgid "Delete Stock Location"
msgstr "Verwijder Voorraadlocatie"
-#: stock/views.py:229
+#: stock/views.py:191
msgid "Delete Stock Item"
msgstr ""
@@ -7317,8 +7299,8 @@ msgstr ""
#: templates/about.html:11 templates/about.html:105
#: templates/js/translated/bom.js:133 templates/js/translated/bom.js:621
-#: templates/js/translated/modals.js:56 templates/js/translated/modals.js:595
-#: templates/js/translated/modals.js:689 templates/js/translated/modals.js:997
+#: templates/js/translated/modals.js:56 templates/js/translated/modals.js:601
+#: templates/js/translated/modals.js:695 templates/js/translated/modals.js:1003
#: templates/js/translated/order.js:928 templates/modals.html:15
#: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50
msgid "Close"
@@ -7390,6 +7372,10 @@ msgstr ""
msgid "Please confirm that %(email)s is an email address for user %(user_display)s."
msgstr ""
+#: templates/account/email_confirm.html:20 templates/js/translated/forms.js:630
+msgid "Confirm"
+msgstr "Bevestigen"
+
#: templates/account/email_confirm.html:27
#, python-format
msgid "This email confirmation link expired or is invalid. Please issue a new email confirmation request."
@@ -7562,7 +7548,7 @@ msgstr ""
msgid "Delete selected attachments"
msgstr ""
-#: templates/attachment_table.html:12 templates/js/translated/attachment.js:110
+#: templates/attachment_table.html:12 templates/js/translated/attachment.js:112
msgid "Delete Attachments"
msgstr ""
@@ -7596,15 +7582,15 @@ msgid "The following parts are low on required stock"
msgstr ""
#: templates/email/build_order_required_stock.html:18
-#: templates/js/translated/bom.js:1425
+#: templates/js/translated/bom.js:1419
msgid "Required Quantity"
msgstr ""
#: templates/email/build_order_required_stock.html:19
#: templates/email/low_stock_notification.html:18
-#: templates/js/translated/bom.js:890 templates/js/translated/build.js:1787
-#: templates/js/translated/build.js:2650 templates/js/translated/part.js:527
-#: templates/js/translated/part.js:530
+#: templates/js/translated/bom.js:884 templates/js/translated/build.js:1787
+#: templates/js/translated/build.js:2650 templates/js/translated/part.js:571
+#: templates/js/translated/part.js:574
#: templates/js/translated/table_filters.js:178
msgid "Available"
msgstr "Beschikbaar"
@@ -7622,6 +7608,13 @@ msgstr ""
msgid "Minimum Quantity"
msgstr ""
+#: templates/email/new_order_assigned.html:9
+#: templates/email/overdue_build_order.html:9
+#: templates/email/overdue_purchase_order.html:9
+#: templates/email/overdue_sales_order.html:9
+msgid "Click on the following link to view this order"
+msgstr ""
+
#: templates/image_download.html:8
msgid "Specify URL for downloading image"
msgstr ""
@@ -7638,91 +7631,91 @@ msgstr ""
msgid "Remote image must not exceed maximum allowable file size"
msgstr ""
-#: templates/js/translated/api.js:235 templates/js/translated/modals.js:1067
+#: templates/js/translated/api.js:195 templates/js/translated/modals.js:1073
msgid "No Response"
msgstr ""
-#: templates/js/translated/api.js:236 templates/js/translated/modals.js:1068
+#: templates/js/translated/api.js:196 templates/js/translated/modals.js:1074
msgid "No response from the InvenTree server"
msgstr ""
-#: templates/js/translated/api.js:242
+#: templates/js/translated/api.js:202
msgid "Error 400: Bad request"
msgstr ""
-#: templates/js/translated/api.js:243
+#: templates/js/translated/api.js:203
msgid "API request returned error code 400"
msgstr ""
-#: templates/js/translated/api.js:247 templates/js/translated/modals.js:1077
+#: templates/js/translated/api.js:207 templates/js/translated/modals.js:1083
msgid "Error 401: Not Authenticated"
msgstr ""
-#: templates/js/translated/api.js:248 templates/js/translated/modals.js:1078
+#: templates/js/translated/api.js:208 templates/js/translated/modals.js:1084
msgid "Authentication credentials not supplied"
msgstr ""
-#: templates/js/translated/api.js:252 templates/js/translated/modals.js:1082
+#: templates/js/translated/api.js:212 templates/js/translated/modals.js:1088
msgid "Error 403: Permission Denied"
msgstr ""
-#: templates/js/translated/api.js:253 templates/js/translated/modals.js:1083
+#: templates/js/translated/api.js:213 templates/js/translated/modals.js:1089
msgid "You do not have the required permissions to access this function"
msgstr ""
-#: templates/js/translated/api.js:257 templates/js/translated/modals.js:1087
+#: templates/js/translated/api.js:217 templates/js/translated/modals.js:1093
msgid "Error 404: Resource Not Found"
msgstr ""
-#: templates/js/translated/api.js:258 templates/js/translated/modals.js:1088
+#: templates/js/translated/api.js:218 templates/js/translated/modals.js:1094
msgid "The requested resource could not be located on the server"
msgstr ""
-#: templates/js/translated/api.js:262
+#: templates/js/translated/api.js:222
msgid "Error 405: Method Not Allowed"
msgstr ""
-#: templates/js/translated/api.js:263
+#: templates/js/translated/api.js:223
msgid "HTTP method not allowed at URL"
msgstr ""
-#: templates/js/translated/api.js:267 templates/js/translated/modals.js:1092
+#: templates/js/translated/api.js:227 templates/js/translated/modals.js:1098
msgid "Error 408: Timeout"
msgstr ""
-#: templates/js/translated/api.js:268 templates/js/translated/modals.js:1093
+#: templates/js/translated/api.js:228 templates/js/translated/modals.js:1099
msgid "Connection timeout while requesting data from server"
msgstr ""
-#: templates/js/translated/api.js:271
+#: templates/js/translated/api.js:231
msgid "Unhandled Error Code"
msgstr ""
-#: templates/js/translated/api.js:272
+#: templates/js/translated/api.js:232
msgid "Error code"
msgstr ""
-#: templates/js/translated/attachment.js:96
+#: templates/js/translated/attachment.js:98
msgid "All selected attachments will be deleted"
msgstr ""
-#: templates/js/translated/attachment.js:156
+#: templates/js/translated/attachment.js:152
msgid "No attachments found"
msgstr ""
-#: templates/js/translated/attachment.js:180
+#: templates/js/translated/attachment.js:176
msgid "Edit Attachment"
msgstr ""
-#: templates/js/translated/attachment.js:246
+#: templates/js/translated/attachment.js:242
msgid "Upload Date"
msgstr ""
-#: templates/js/translated/attachment.js:262
+#: templates/js/translated/attachment.js:264
msgid "Edit attachment"
msgstr ""
-#: templates/js/translated/attachment.js:269
+#: templates/js/translated/attachment.js:271
msgid "Delete attachment"
msgstr ""
@@ -7755,7 +7748,7 @@ msgid "Unknown response from server"
msgstr ""
#: templates/js/translated/barcode.js:182
-#: templates/js/translated/modals.js:1057
+#: templates/js/translated/modals.js:1063
msgid "Invalid server response"
msgstr ""
@@ -7783,7 +7776,7 @@ msgstr ""
msgid "Unlink"
msgstr ""
-#: templates/js/translated/barcode.js:456 templates/js/translated/stock.js:999
+#: templates/js/translated/barcode.js:456 templates/js/translated/stock.js:998
msgid "Remove stock item"
msgstr ""
@@ -7918,89 +7911,89 @@ msgstr ""
msgid "Edit BOM Item Substitutes"
msgstr ""
-#: templates/js/translated/bom.js:682
+#: templates/js/translated/bom.js:684
msgid "All selected BOM items will be deleted"
msgstr ""
-#: templates/js/translated/bom.js:697
+#: templates/js/translated/bom.js:699
msgid "Delete selected BOM items?"
msgstr ""
-#: templates/js/translated/bom.js:824
+#: templates/js/translated/bom.js:818
msgid "Load BOM for subassembly"
msgstr ""
-#: templates/js/translated/bom.js:834
+#: templates/js/translated/bom.js:828
msgid "Substitutes Available"
msgstr ""
-#: templates/js/translated/bom.js:838 templates/js/translated/build.js:1769
+#: templates/js/translated/bom.js:832 templates/js/translated/build.js:1769
msgid "Variant stock allowed"
msgstr ""
-#: templates/js/translated/bom.js:906 templates/js/translated/build.js:1814
+#: templates/js/translated/bom.js:900 templates/js/translated/build.js:1814
#: templates/js/translated/order.js:3562
msgid "No Stock Available"
msgstr ""
-#: templates/js/translated/bom.js:910 templates/js/translated/build.js:1818
+#: templates/js/translated/bom.js:904 templates/js/translated/build.js:1818
msgid "Includes variant and substitute stock"
msgstr ""
-#: templates/js/translated/bom.js:912 templates/js/translated/build.js:1820
-#: templates/js/translated/part.js:690
+#: templates/js/translated/bom.js:906 templates/js/translated/build.js:1820
+#: templates/js/translated/part.js:734
msgid "Includes variant stock"
msgstr ""
-#: templates/js/translated/bom.js:914 templates/js/translated/build.js:1822
+#: templates/js/translated/bom.js:908 templates/js/translated/build.js:1822
msgid "Includes substitute stock"
msgstr ""
-#: templates/js/translated/bom.js:928
+#: templates/js/translated/bom.js:922
msgid "Substitutes"
msgstr ""
-#: templates/js/translated/bom.js:943
+#: templates/js/translated/bom.js:937
msgid "Purchase Price Range"
msgstr ""
-#: templates/js/translated/bom.js:950
+#: templates/js/translated/bom.js:944
msgid "Purchase Price Average"
msgstr ""
-#: templates/js/translated/bom.js:999 templates/js/translated/bom.js:1090
+#: templates/js/translated/bom.js:993 templates/js/translated/bom.js:1084
msgid "View BOM"
msgstr ""
-#: templates/js/translated/bom.js:1061
+#: templates/js/translated/bom.js:1055
msgid "Validate BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:1063
+#: templates/js/translated/bom.js:1057
msgid "This line has been validated"
msgstr ""
-#: templates/js/translated/bom.js:1065
+#: templates/js/translated/bom.js:1059
msgid "Edit substitute parts"
msgstr ""
-#: templates/js/translated/bom.js:1067 templates/js/translated/bom.js:1228
+#: templates/js/translated/bom.js:1061 templates/js/translated/bom.js:1222
msgid "Edit BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:1069
+#: templates/js/translated/bom.js:1063
msgid "Delete BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:1164 templates/js/translated/build.js:1615
+#: templates/js/translated/bom.js:1158 templates/js/translated/build.js:1615
msgid "No BOM items found"
msgstr ""
-#: templates/js/translated/bom.js:1408 templates/js/translated/build.js:1753
+#: templates/js/translated/bom.js:1402 templates/js/translated/build.js:1753
msgid "Required Part"
msgstr ""
-#: templates/js/translated/bom.js:1430
+#: templates/js/translated/bom.js:1424
msgid "Inherited from parent BOM"
msgstr ""
@@ -8040,13 +8033,13 @@ msgstr "Productieopdracht is onvolledig"
msgid "Complete Build Order"
msgstr ""
-#: templates/js/translated/build.js:259 templates/js/translated/stock.js:91
-#: templates/js/translated/stock.js:181
+#: templates/js/translated/build.js:259 templates/js/translated/stock.js:90
+#: templates/js/translated/stock.js:180
msgid "Next available serial number"
msgstr ""
-#: templates/js/translated/build.js:261 templates/js/translated/stock.js:93
-#: templates/js/translated/stock.js:183
+#: templates/js/translated/build.js:261 templates/js/translated/stock.js:92
+#: templates/js/translated/stock.js:182
msgid "Latest serial number"
msgstr ""
@@ -8259,9 +8252,9 @@ msgstr ""
msgid "No builds matching query"
msgstr ""
-#: templates/js/translated/build.js:2448 templates/js/translated/part.js:1314
-#: templates/js/translated/part.js:1729 templates/js/translated/stock.js:1619
-#: templates/js/translated/stock.js:2277
+#: templates/js/translated/build.js:2448 templates/js/translated/part.js:1358
+#: templates/js/translated/part.js:1825 templates/js/translated/stock.js:1629
+#: templates/js/translated/stock.js:2287
msgid "Select"
msgstr ""
@@ -8273,7 +8266,7 @@ msgstr ""
msgid "Progress"
msgstr ""
-#: templates/js/translated/build.js:2532 templates/js/translated/stock.js:2519
+#: templates/js/translated/build.js:2532 templates/js/translated/stock.js:2529
msgid "No user information"
msgstr ""
@@ -8285,107 +8278,107 @@ msgstr ""
msgid "No parts allocated for"
msgstr ""
-#: templates/js/translated/company.js:66
+#: templates/js/translated/company.js:65
msgid "Add Manufacturer"
msgstr "Fabrikant toevoegen"
-#: templates/js/translated/company.js:79 templates/js/translated/company.js:169
+#: templates/js/translated/company.js:78 templates/js/translated/company.js:168
msgid "Add Manufacturer Part"
msgstr "Fabrikantonderdeel toevoegen"
-#: templates/js/translated/company.js:100
+#: templates/js/translated/company.js:99
msgid "Edit Manufacturer Part"
msgstr "Fabrikantonderdeel bewerken"
-#: templates/js/translated/company.js:157 templates/js/translated/order.js:506
+#: templates/js/translated/company.js:156 templates/js/translated/order.js:506
msgid "Add Supplier"
msgstr ""
-#: templates/js/translated/company.js:185
+#: templates/js/translated/company.js:184
msgid "Add Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:200
+#: templates/js/translated/company.js:199
msgid "Edit Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:248
+#: templates/js/translated/company.js:249
msgid "All selected supplier parts will be deleted"
msgstr ""
-#: templates/js/translated/company.js:263
+#: templates/js/translated/company.js:264
msgid "Delete Supplier Parts"
msgstr ""
-#: templates/js/translated/company.js:342
+#: templates/js/translated/company.js:336
msgid "Add new Company"
msgstr ""
-#: templates/js/translated/company.js:419
+#: templates/js/translated/company.js:413
msgid "Parts Supplied"
msgstr ""
-#: templates/js/translated/company.js:428
+#: templates/js/translated/company.js:422
msgid "Parts Manufactured"
msgstr "Gefabriceerde Onderdelen"
-#: templates/js/translated/company.js:443
+#: templates/js/translated/company.js:437
msgid "No company information found"
msgstr ""
-#: templates/js/translated/company.js:482
+#: templates/js/translated/company.js:478
msgid "All selected manufacturer parts will be deleted"
msgstr ""
-#: templates/js/translated/company.js:496
+#: templates/js/translated/company.js:492
msgid "Delete Manufacturer Parts"
msgstr "Verwijder Fabrikantenonderdelen"
-#: templates/js/translated/company.js:535
+#: templates/js/translated/company.js:526
msgid "All selected parameters will be deleted"
msgstr ""
-#: templates/js/translated/company.js:548
+#: templates/js/translated/company.js:539
msgid "Delete Parameters"
msgstr ""
-#: templates/js/translated/company.js:595
+#: templates/js/translated/company.js:580
msgid "No manufacturer parts found"
msgstr "Geen fabrikantenonderdelen gevonden"
-#: templates/js/translated/company.js:615
-#: templates/js/translated/company.js:874 templates/js/translated/part.js:565
-#: templates/js/translated/part.js:650
+#: templates/js/translated/company.js:600
+#: templates/js/translated/company.js:859 templates/js/translated/part.js:609
+#: templates/js/translated/part.js:694
msgid "Template part"
msgstr ""
-#: templates/js/translated/company.js:619
-#: templates/js/translated/company.js:878 templates/js/translated/part.js:569
-#: templates/js/translated/part.js:654
+#: templates/js/translated/company.js:604
+#: templates/js/translated/company.js:863 templates/js/translated/part.js:613
+#: templates/js/translated/part.js:698
msgid "Assembled part"
msgstr "Samengesteld onderdeel"
-#: templates/js/translated/company.js:747 templates/js/translated/part.js:757
+#: templates/js/translated/company.js:732 templates/js/translated/part.js:801
msgid "No parameters found"
msgstr ""
-#: templates/js/translated/company.js:784 templates/js/translated/part.js:799
+#: templates/js/translated/company.js:769 templates/js/translated/part.js:843
msgid "Edit parameter"
msgstr ""
-#: templates/js/translated/company.js:785 templates/js/translated/part.js:800
+#: templates/js/translated/company.js:770 templates/js/translated/part.js:844
msgid "Delete parameter"
msgstr ""
-#: templates/js/translated/company.js:804 templates/js/translated/part.js:817
+#: templates/js/translated/company.js:789 templates/js/translated/part.js:861
msgid "Edit Parameter"
msgstr ""
-#: templates/js/translated/company.js:815 templates/js/translated/part.js:829
+#: templates/js/translated/company.js:800 templates/js/translated/part.js:873
msgid "Delete Parameter"
msgstr ""
-#: templates/js/translated/company.js:854
+#: templates/js/translated/company.js:839
msgid "No supplier parts found"
msgstr ""
@@ -8448,36 +8441,36 @@ msgstr ""
msgid "Keep this form open"
msgstr ""
-#: templates/js/translated/forms.js:756
+#: templates/js/translated/forms.js:757
msgid "Enter a valid number"
msgstr ""
-#: templates/js/translated/forms.js:1248 templates/modals.html:19
+#: templates/js/translated/forms.js:1249 templates/modals.html:19
#: templates/modals.html:43
msgid "Form errors exist"
msgstr ""
-#: templates/js/translated/forms.js:1681
+#: templates/js/translated/forms.js:1682
msgid "No results found"
msgstr ""
-#: templates/js/translated/forms.js:1896 templates/search.html:29
+#: templates/js/translated/forms.js:1897 templates/search.html:29
msgid "Searching"
msgstr ""
-#: templates/js/translated/forms.js:2149
+#: templates/js/translated/forms.js:2150
msgid "Clear input"
msgstr ""
-#: templates/js/translated/forms.js:2615
+#: templates/js/translated/forms.js:2616
msgid "File Column"
msgstr ""
-#: templates/js/translated/forms.js:2615
+#: templates/js/translated/forms.js:2616
msgid "Field Name"
msgstr ""
-#: templates/js/translated/forms.js:2627
+#: templates/js/translated/forms.js:2628
msgid "Select Columns"
msgstr ""
@@ -8498,7 +8491,7 @@ msgid "Labels sent to printer"
msgstr ""
#: templates/js/translated/label.js:60 templates/js/translated/report.js:118
-#: templates/js/translated/stock.js:1023
+#: templates/js/translated/stock.js:1022
msgid "Select Stock Items"
msgstr ""
@@ -8552,12 +8545,12 @@ msgid "Select Label Template"
msgstr ""
#: templates/js/translated/modals.js:82 templates/js/translated/modals.js:142
-#: templates/js/translated/modals.js:621
+#: templates/js/translated/modals.js:627
msgid "Cancel"
msgstr ""
#: templates/js/translated/modals.js:83 templates/js/translated/modals.js:141
-#: templates/js/translated/modals.js:688 templates/js/translated/modals.js:996
+#: templates/js/translated/modals.js:694 templates/js/translated/modals.js:1002
#: templates/modals.html:28 templates/modals.html:51
msgid "Submit"
msgstr ""
@@ -8566,47 +8559,47 @@ msgstr ""
msgid "Form Title"
msgstr ""
-#: templates/js/translated/modals.js:403
+#: templates/js/translated/modals.js:421
msgid "Waiting for server..."
msgstr ""
-#: templates/js/translated/modals.js:562
+#: templates/js/translated/modals.js:568
msgid "Show Error Information"
msgstr ""
-#: templates/js/translated/modals.js:620
+#: templates/js/translated/modals.js:626
msgid "Accept"
msgstr ""
-#: templates/js/translated/modals.js:677
+#: templates/js/translated/modals.js:683
msgid "Loading Data"
msgstr ""
-#: templates/js/translated/modals.js:948
+#: templates/js/translated/modals.js:954
msgid "Invalid response from server"
msgstr ""
-#: templates/js/translated/modals.js:948
+#: templates/js/translated/modals.js:954
msgid "Form data missing from server response"
msgstr ""
-#: templates/js/translated/modals.js:960
+#: templates/js/translated/modals.js:966
msgid "Error posting form data"
msgstr ""
-#: templates/js/translated/modals.js:1057
+#: templates/js/translated/modals.js:1063
msgid "JSON response missing form data"
msgstr ""
-#: templates/js/translated/modals.js:1072
+#: templates/js/translated/modals.js:1078
msgid "Error 400: Bad Request"
msgstr ""
-#: templates/js/translated/modals.js:1073
+#: templates/js/translated/modals.js:1079
msgid "Server returned error code 400"
msgstr ""
-#: templates/js/translated/modals.js:1096
+#: templates/js/translated/modals.js:1102
msgid "Error requesting form data"
msgstr ""
@@ -8656,11 +8649,11 @@ msgstr ""
msgid "Mark as read"
msgstr ""
-#: templates/js/translated/notification.js:259
+#: templates/js/translated/notification.js:260
msgid "No unread notifications"
msgstr ""
-#: templates/js/translated/notification.js:300 templates/notifications.html:10
+#: templates/js/translated/notification.js:302 templates/notifications.html:10
msgid "Notifications will load here"
msgstr ""
@@ -8804,7 +8797,7 @@ msgstr ""
msgid "Quantity to receive"
msgstr ""
-#: templates/js/translated/order.js:1225 templates/js/translated/stock.js:2080
+#: templates/js/translated/order.js:1225 templates/js/translated/stock.js:2090
msgid "Stock Status"
msgstr ""
@@ -8828,7 +8821,7 @@ msgstr ""
msgid "Receive Purchase Order Items"
msgstr ""
-#: templates/js/translated/order.js:1602 templates/js/translated/part.js:870
+#: templates/js/translated/order.js:1602 templates/js/translated/part.js:914
msgid "No purchase orders found"
msgstr ""
@@ -8863,7 +8856,7 @@ msgstr ""
#: templates/js/translated/order.js:1937 templates/js/translated/order.js:2139
#: templates/js/translated/order.js:3467 templates/js/translated/order.js:3978
-#: templates/js/translated/part.js:1948 templates/js/translated/part.js:2301
+#: templates/js/translated/part.js:2044 templates/js/translated/part.js:2397
msgid "Unit Price"
msgstr ""
@@ -8873,11 +8866,11 @@ msgid "Total Price"
msgstr ""
#: templates/js/translated/order.js:1993 templates/js/translated/order.js:3525
-#: templates/js/translated/part.js:979
+#: templates/js/translated/part.js:1023
msgid "This line item is overdue"
msgstr ""
-#: templates/js/translated/order.js:2052 templates/js/translated/part.js:1025
+#: templates/js/translated/order.js:2052 templates/js/translated/part.js:1069
msgid "Receive line item"
msgstr ""
@@ -8998,7 +8991,7 @@ msgid "Delete Stock Allocation"
msgstr ""
#: templates/js/translated/order.js:3243 templates/js/translated/order.js:3332
-#: templates/js/translated/stock.js:1535
+#: templates/js/translated/stock.js:1545
msgid "Shipped to customer"
msgstr ""
@@ -9138,165 +9131,209 @@ msgstr ""
msgid "Create Part Variant"
msgstr ""
+#: templates/js/translated/part.js:405
+msgid "Active Part"
+msgstr ""
+
+#: templates/js/translated/part.js:406
+msgid "Part cannot be deleted as it is currently active"
+msgstr ""
+
+#: templates/js/translated/part.js:420
+msgid "Deleting this part cannot be reversed"
+msgstr ""
+
+#: templates/js/translated/part.js:422
+msgid "Any stock items for this part will be deleted"
+msgstr ""
+
#: templates/js/translated/part.js:423
+msgid "This part will be removed from any Bills of Material"
+msgstr ""
+
+#: templates/js/translated/part.js:424
+msgid "All manufacturer and supplier information for this part will be deleted"
+msgstr ""
+
+#: templates/js/translated/part.js:431
+msgid "Delete Part"
+msgstr ""
+
+#: templates/js/translated/part.js:467
msgid "You are subscribed to notifications for this item"
msgstr ""
-#: templates/js/translated/part.js:425
+#: templates/js/translated/part.js:469
msgid "You have subscribed to notifications for this item"
msgstr ""
-#: templates/js/translated/part.js:430
+#: templates/js/translated/part.js:474
msgid "Subscribe to notifications for this item"
msgstr ""
-#: templates/js/translated/part.js:432
+#: templates/js/translated/part.js:476
msgid "You have unsubscribed to notifications for this item"
msgstr ""
-#: templates/js/translated/part.js:449
+#: templates/js/translated/part.js:493
msgid "Validating the BOM will mark each line item as valid"
msgstr ""
-#: templates/js/translated/part.js:459
+#: templates/js/translated/part.js:503
msgid "Validate Bill of Materials"
msgstr ""
-#: templates/js/translated/part.js:462
+#: templates/js/translated/part.js:506
msgid "Validated Bill of Materials"
msgstr ""
-#: templates/js/translated/part.js:487
+#: templates/js/translated/part.js:531
msgid "Copy Bill of Materials"
msgstr ""
-#: templates/js/translated/part.js:513 templates/js/translated/part.js:1397
+#: templates/js/translated/part.js:557 templates/js/translated/part.js:1441
#: templates/js/translated/table_filters.js:452
msgid "Low stock"
msgstr ""
-#: templates/js/translated/part.js:523 templates/js/translated/part.js:1409
+#: templates/js/translated/part.js:567 templates/js/translated/part.js:1453
msgid "No stock available"
msgstr ""
-#: templates/js/translated/part.js:557 templates/js/translated/part.js:642
+#: templates/js/translated/part.js:601 templates/js/translated/part.js:686
msgid "Trackable part"
msgstr ""
-#: templates/js/translated/part.js:561 templates/js/translated/part.js:646
+#: templates/js/translated/part.js:605 templates/js/translated/part.js:690
msgid "Virtual part"
msgstr ""
-#: templates/js/translated/part.js:573
+#: templates/js/translated/part.js:617
msgid "Subscribed part"
msgstr ""
-#: templates/js/translated/part.js:577
+#: templates/js/translated/part.js:621
msgid "Salable part"
msgstr ""
-#: templates/js/translated/part.js:705
+#: templates/js/translated/part.js:749
msgid "No variants found"
msgstr ""
-#: templates/js/translated/part.js:1095
+#: templates/js/translated/part.js:1139
msgid "Delete part relationship"
msgstr ""
-#: templates/js/translated/part.js:1119
+#: templates/js/translated/part.js:1163
msgid "Delete Part Relationship"
msgstr ""
-#: templates/js/translated/part.js:1184 templates/js/translated/part.js:1480
+#: templates/js/translated/part.js:1228 templates/js/translated/part.js:1524
msgid "No parts found"
msgstr ""
-#: templates/js/translated/part.js:1223
+#: templates/js/translated/part.js:1267
msgid "Not available"
msgstr ""
-#: templates/js/translated/part.js:1374
+#: templates/js/translated/part.js:1418
msgid "No category"
msgstr ""
-#: templates/js/translated/part.js:1504 templates/js/translated/part.js:1664
-#: templates/js/translated/stock.js:2238
+#: templates/js/translated/part.js:1548 templates/js/translated/part.js:1760
+#: templates/js/translated/stock.js:2248
msgid "Display as list"
msgstr ""
-#: templates/js/translated/part.js:1520
+#: templates/js/translated/part.js:1564
msgid "Display as grid"
msgstr ""
-#: templates/js/translated/part.js:1683 templates/js/translated/stock.js:2257
+#: templates/js/translated/part.js:1630
+msgid "Set the part category for the selected parts"
+msgstr ""
+
+#: templates/js/translated/part.js:1635
+msgid "Set Part Category"
+msgstr ""
+
+#: templates/js/translated/part.js:1640
+msgid "Select Part Category"
+msgstr ""
+
+#: templates/js/translated/part.js:1653
+msgid "Category is required"
+msgstr ""
+
+#: templates/js/translated/part.js:1779 templates/js/translated/stock.js:2267
msgid "Display as tree"
msgstr ""
-#: templates/js/translated/part.js:1747
+#: templates/js/translated/part.js:1843
msgid "Subscribed category"
msgstr ""
-#: templates/js/translated/part.js:1761 templates/js/translated/stock.js:2301
+#: templates/js/translated/part.js:1857 templates/js/translated/stock.js:2311
msgid "Path"
msgstr ""
-#: templates/js/translated/part.js:1805
+#: templates/js/translated/part.js:1901
msgid "No test templates matching query"
msgstr ""
-#: templates/js/translated/part.js:1856 templates/js/translated/stock.js:1233
+#: templates/js/translated/part.js:1952 templates/js/translated/stock.js:1243
msgid "Edit test result"
msgstr ""
-#: templates/js/translated/part.js:1857 templates/js/translated/stock.js:1234
-#: templates/js/translated/stock.js:1493
+#: templates/js/translated/part.js:1953 templates/js/translated/stock.js:1244
+#: templates/js/translated/stock.js:1503
msgid "Delete test result"
msgstr ""
-#: templates/js/translated/part.js:1863
+#: templates/js/translated/part.js:1959
msgid "This test is defined for a parent part"
msgstr ""
-#: templates/js/translated/part.js:1885
+#: templates/js/translated/part.js:1981
msgid "Edit Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:1899
+#: templates/js/translated/part.js:1995
msgid "Delete Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:1924
+#: templates/js/translated/part.js:2020
#, python-brace-format
msgid "No ${human_name} information found"
msgstr ""
-#: templates/js/translated/part.js:1981
+#: templates/js/translated/part.js:2077
#, python-brace-format
msgid "Edit ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:1982
+#: templates/js/translated/part.js:2078
#, python-brace-format
msgid "Delete ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:2096
+#: templates/js/translated/part.js:2192
msgid "Current Stock"
msgstr ""
-#: templates/js/translated/part.js:2129
+#: templates/js/translated/part.js:2225
msgid "No scheduling information available for this part"
msgstr ""
-#: templates/js/translated/part.js:2155
+#: templates/js/translated/part.js:2251
msgid "Scheduled Stock Quantities"
msgstr ""
-#: templates/js/translated/part.js:2225
+#: templates/js/translated/part.js:2321
msgid "Single Price"
msgstr ""
-#: templates/js/translated/part.js:2244
+#: templates/js/translated/part.js:2340
msgid "Single Price Difference"
msgstr ""
@@ -9378,360 +9415,360 @@ msgstr ""
msgid "Remove results"
msgstr ""
-#: templates/js/translated/stock.js:73
+#: templates/js/translated/stock.js:72
msgid "Serialize Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:101
+#: templates/js/translated/stock.js:100
msgid "Confirm Stock Serialization"
msgstr ""
-#: templates/js/translated/stock.js:110
+#: templates/js/translated/stock.js:109
msgid "Parent stock location"
msgstr ""
-#: templates/js/translated/stock.js:139
+#: templates/js/translated/stock.js:138
msgid "Edit Stock Location"
msgstr "Bewerk Voorraadlocatie"
-#: templates/js/translated/stock.js:154
+#: templates/js/translated/stock.js:153
msgid "New Stock Location"
msgstr ""
-#: templates/js/translated/stock.js:194
+#: templates/js/translated/stock.js:193
msgid "This part cannot be serialized"
msgstr ""
-#: templates/js/translated/stock.js:233
+#: templates/js/translated/stock.js:232
msgid "Enter initial quantity for this stock item"
msgstr ""
-#: templates/js/translated/stock.js:239
+#: templates/js/translated/stock.js:238
msgid "Enter serial numbers for new stock (or leave blank)"
msgstr ""
-#: templates/js/translated/stock.js:304
+#: templates/js/translated/stock.js:303
msgid "Stock item duplicated"
msgstr ""
-#: templates/js/translated/stock.js:324
+#: templates/js/translated/stock.js:323
msgid "Duplicate Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:344
+#: templates/js/translated/stock.js:343
msgid "Edit Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:394
+#: templates/js/translated/stock.js:393
msgid "Created new stock item"
msgstr ""
-#: templates/js/translated/stock.js:407
+#: templates/js/translated/stock.js:406
msgid "Created multiple stock items"
msgstr ""
-#: templates/js/translated/stock.js:432
+#: templates/js/translated/stock.js:431
msgid "Find Serial Number"
msgstr ""
-#: templates/js/translated/stock.js:436 templates/js/translated/stock.js:437
+#: templates/js/translated/stock.js:435 templates/js/translated/stock.js:436
msgid "Enter serial number"
msgstr ""
-#: templates/js/translated/stock.js:453
+#: templates/js/translated/stock.js:452
msgid "Enter a serial number"
msgstr ""
-#: templates/js/translated/stock.js:473
+#: templates/js/translated/stock.js:472
msgid "No matching serial number"
msgstr ""
-#: templates/js/translated/stock.js:482
+#: templates/js/translated/stock.js:481
msgid "More than one matching result found"
msgstr ""
-#: templates/js/translated/stock.js:605
+#: templates/js/translated/stock.js:604
msgid "Confirm stock assignment"
msgstr ""
-#: templates/js/translated/stock.js:606
+#: templates/js/translated/stock.js:605
msgid "Assign Stock to Customer"
msgstr ""
-#: templates/js/translated/stock.js:683
+#: templates/js/translated/stock.js:682
msgid "Warning: Merge operation cannot be reversed"
msgstr ""
-#: templates/js/translated/stock.js:684
+#: templates/js/translated/stock.js:683
msgid "Some information will be lost when merging stock items"
msgstr ""
-#: templates/js/translated/stock.js:686
+#: templates/js/translated/stock.js:685
msgid "Stock transaction history will be deleted for merged items"
msgstr ""
-#: templates/js/translated/stock.js:687
+#: templates/js/translated/stock.js:686
msgid "Supplier part information will be deleted for merged items"
msgstr ""
-#: templates/js/translated/stock.js:773
+#: templates/js/translated/stock.js:772
msgid "Confirm stock item merge"
msgstr ""
-#: templates/js/translated/stock.js:774
+#: templates/js/translated/stock.js:773
msgid "Merge Stock Items"
msgstr ""
-#: templates/js/translated/stock.js:869
+#: templates/js/translated/stock.js:868
msgid "Transfer Stock"
msgstr ""
-#: templates/js/translated/stock.js:870
+#: templates/js/translated/stock.js:869
msgid "Move"
msgstr ""
-#: templates/js/translated/stock.js:876
+#: templates/js/translated/stock.js:875
msgid "Count Stock"
msgstr ""
-#: templates/js/translated/stock.js:877
+#: templates/js/translated/stock.js:876
msgid "Count"
msgstr ""
-#: templates/js/translated/stock.js:881
+#: templates/js/translated/stock.js:880
msgid "Remove Stock"
msgstr ""
-#: templates/js/translated/stock.js:882
+#: templates/js/translated/stock.js:881
msgid "Take"
msgstr ""
-#: templates/js/translated/stock.js:886
+#: templates/js/translated/stock.js:885
msgid "Add Stock"
msgstr ""
-#: templates/js/translated/stock.js:887 users/models.py:215
+#: templates/js/translated/stock.js:886 users/models.py:215
msgid "Add"
msgstr ""
-#: templates/js/translated/stock.js:891
+#: templates/js/translated/stock.js:890
msgid "Delete Stock"
msgstr ""
-#: templates/js/translated/stock.js:984
+#: templates/js/translated/stock.js:983
msgid "Quantity cannot be adjusted for serialized stock"
msgstr ""
-#: templates/js/translated/stock.js:984
+#: templates/js/translated/stock.js:983
msgid "Specify stock quantity"
msgstr ""
-#: templates/js/translated/stock.js:1024
+#: templates/js/translated/stock.js:1023
msgid "You must select at least one available stock item"
msgstr ""
-#: templates/js/translated/stock.js:1047
+#: templates/js/translated/stock.js:1046
msgid "Confirm stock adjustment"
msgstr ""
-#: templates/js/translated/stock.js:1172
+#: templates/js/translated/stock.js:1182
msgid "PASS"
msgstr ""
-#: templates/js/translated/stock.js:1174
+#: templates/js/translated/stock.js:1184
msgid "FAIL"
msgstr ""
-#: templates/js/translated/stock.js:1179
+#: templates/js/translated/stock.js:1189
msgid "NO RESULT"
msgstr ""
-#: templates/js/translated/stock.js:1226
+#: templates/js/translated/stock.js:1236
msgid "Pass test"
msgstr ""
-#: templates/js/translated/stock.js:1229
+#: templates/js/translated/stock.js:1239
msgid "Add test result"
msgstr ""
-#: templates/js/translated/stock.js:1255
+#: templates/js/translated/stock.js:1265
msgid "No test results found"
msgstr ""
-#: templates/js/translated/stock.js:1311
+#: templates/js/translated/stock.js:1321
msgid "Test Date"
msgstr ""
-#: templates/js/translated/stock.js:1476
+#: templates/js/translated/stock.js:1486
msgid "Edit Test Result"
msgstr ""
-#: templates/js/translated/stock.js:1498
+#: templates/js/translated/stock.js:1508
msgid "Delete Test Result"
msgstr ""
-#: templates/js/translated/stock.js:1527
+#: templates/js/translated/stock.js:1537
msgid "In production"
msgstr ""
-#: templates/js/translated/stock.js:1531
+#: templates/js/translated/stock.js:1541
msgid "Installed in Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:1539
+#: templates/js/translated/stock.js:1549
msgid "Assigned to Sales Order"
msgstr ""
-#: templates/js/translated/stock.js:1545
+#: templates/js/translated/stock.js:1555
msgid "No stock location set"
msgstr "Geen voorraadlocatie ingesteld"
-#: templates/js/translated/stock.js:1712
+#: templates/js/translated/stock.js:1722
msgid "Stock item is in production"
msgstr ""
-#: templates/js/translated/stock.js:1717
+#: templates/js/translated/stock.js:1727
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:1720
+#: templates/js/translated/stock.js:1730
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:1723
+#: templates/js/translated/stock.js:1733
msgid "Serialized stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:1725
+#: templates/js/translated/stock.js:1735
msgid "Stock item has been fully allocated"
msgstr ""
-#: templates/js/translated/stock.js:1727
+#: templates/js/translated/stock.js:1737
msgid "Stock item has been partially allocated"
msgstr ""
-#: templates/js/translated/stock.js:1730
+#: templates/js/translated/stock.js:1740
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:1734
+#: templates/js/translated/stock.js:1744
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:1736
+#: templates/js/translated/stock.js:1746
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:1743
+#: templates/js/translated/stock.js:1753
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:1745
+#: templates/js/translated/stock.js:1755
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:1747
+#: templates/js/translated/stock.js:1757
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:1751
+#: templates/js/translated/stock.js:1761
#: templates/js/translated/table_filters.js:188
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:1802
+#: templates/js/translated/stock.js:1812
msgid "Stocktake"
msgstr ""
-#: templates/js/translated/stock.js:1884
+#: templates/js/translated/stock.js:1894
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:1922
+#: templates/js/translated/stock.js:1932
msgid "No stock items matching query"
msgstr ""
-#: templates/js/translated/stock.js:2095
+#: templates/js/translated/stock.js:2105
msgid "Set Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:2109
+#: templates/js/translated/stock.js:2119
msgid "Select Status Code"
msgstr ""
-#: templates/js/translated/stock.js:2110
+#: templates/js/translated/stock.js:2120
msgid "Status code must be selected"
msgstr ""
-#: templates/js/translated/stock.js:2365
+#: templates/js/translated/stock.js:2375
msgid "Details"
msgstr ""
-#: templates/js/translated/stock.js:2381
+#: templates/js/translated/stock.js:2391
msgid "Part information unavailable"
msgstr ""
-#: templates/js/translated/stock.js:2403
+#: templates/js/translated/stock.js:2413
msgid "Location no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2422
+#: templates/js/translated/stock.js:2432
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2441
+#: templates/js/translated/stock.js:2451
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2459
+#: templates/js/translated/stock.js:2469
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2482
+#: templates/js/translated/stock.js:2492
msgid "Added"
msgstr ""
-#: templates/js/translated/stock.js:2490
+#: templates/js/translated/stock.js:2500
msgid "Removed"
msgstr ""
-#: templates/js/translated/stock.js:2566
+#: templates/js/translated/stock.js:2576
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:2617 templates/js/translated/stock.js:2653
+#: templates/js/translated/stock.js:2627 templates/js/translated/stock.js:2663
msgid "Uninstall Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:2666
+#: templates/js/translated/stock.js:2676
msgid "Select stock item to uninstall"
msgstr ""
-#: templates/js/translated/stock.js:2687
+#: templates/js/translated/stock.js:2697
msgid "Install another stock item into this item"
msgstr ""
-#: templates/js/translated/stock.js:2688
+#: templates/js/translated/stock.js:2698
msgid "Stock items can only be installed if they meet the following criteria"
msgstr ""
-#: templates/js/translated/stock.js:2690
+#: templates/js/translated/stock.js:2700
msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:2691
+#: templates/js/translated/stock.js:2701
msgid "The Stock Item is currently available in stock"
msgstr ""
-#: templates/js/translated/stock.js:2692
+#: templates/js/translated/stock.js:2702
msgid "The Stock Item is not already installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:2693
+#: templates/js/translated/stock.js:2703
msgid "The Stock Item is tracked by either a batch code or serial number"
msgstr ""
-#: templates/js/translated/stock.js:2706
+#: templates/js/translated/stock.js:2716
msgid "Select part to install"
msgstr ""
diff --git a/InvenTree/locale/no/LC_MESSAGES/django.po b/InvenTree/locale/no/LC_MESSAGES/django.po
index ee362d4daa..41604397e0 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: 2022-06-05 14:26+0000\n"
-"PO-Revision-Date: 2022-06-05 14:34\n"
+"POT-Creation-Date: 2022-06-06 22:59+0000\n"
+"PO-Revision-Date: 2022-06-07 14:34\n"
"Last-Translator: \n"
"Language-Team: Norwegian\n"
"Language: no_NO\n"
@@ -17,7 +17,7 @@ msgstr ""
"X-Crowdin-File: /[inventree.InvenTree] l10/InvenTree/locale/en/LC_MESSAGES/django.po\n"
"X-Crowdin-File-ID: 154\n"
-#: InvenTree/api.py:46
+#: InvenTree/api.py:49
msgid "API endpoint not found"
msgstr "API endepunkt ikke funnet"
@@ -29,275 +29,273 @@ msgstr ""
msgid "Enter date"
msgstr "Oppgi dato"
-#: InvenTree/forms.py:117 templates/account/email_confirm.html:20
-#: templates/js/translated/forms.js:630
-msgid "Confirm"
-msgstr "Bekreft"
-
-#: InvenTree/forms.py:134
+#: InvenTree/forms.py:117
msgid "Confirm delete"
msgstr "Bekreft sletting"
-#: InvenTree/forms.py:135
+#: InvenTree/forms.py:118
msgid "Confirm item deletion"
msgstr "Bekfret sletting av element"
-#: InvenTree/forms.py:167
+#: InvenTree/forms.py:150
msgid "Enter password"
msgstr "Oppgi passord"
-#: InvenTree/forms.py:168
+#: InvenTree/forms.py:151
msgid "Enter new password"
msgstr "Oppgi nytt passord"
-#: InvenTree/forms.py:175
+#: InvenTree/forms.py:158
msgid "Confirm password"
msgstr "Bekreft passord"
-#: InvenTree/forms.py:176
+#: InvenTree/forms.py:159
msgid "Confirm new password"
msgstr "Bekreft nytt passord"
-#: InvenTree/forms.py:213
-msgid "Select Category"
-msgstr "Velg kategori"
-
-#: InvenTree/forms.py:234
+#: InvenTree/forms.py:184
msgid "Email (again)"
msgstr "E-post (gjenta)"
-#: InvenTree/forms.py:238
+#: InvenTree/forms.py:188
msgid "Email address confirmation"
msgstr "Bekreftelsen på e-postaddresse"
-#: InvenTree/forms.py:259
+#: InvenTree/forms.py:209
msgid "You must type the same email each time."
msgstr "Du må angi samme e-post hver gang."
-#: InvenTree/helpers.py:402
+#: InvenTree/helpers.py:404
#, python-brace-format
msgid "Duplicate serial: {sn}"
msgstr "Dupliser serie: {sn}"
-#: InvenTree/helpers.py:409 order/models.py:365 order/models.py:517
+#: InvenTree/helpers.py:411 order/models.py:370 order/models.py:522
msgid "Invalid quantity provided"
msgstr "Ugyldig mengde oppgitt"
-#: InvenTree/helpers.py:412
+#: InvenTree/helpers.py:414
msgid "Empty serial number string"
msgstr "Tom serienummerstreng"
-#: InvenTree/helpers.py:444
+#: InvenTree/helpers.py:446
#, python-brace-format
msgid "Invalid group range: {g}"
msgstr ""
-#: InvenTree/helpers.py:447
+#: InvenTree/helpers.py:449
#, python-brace-format
msgid "Invalid group: {g}"
msgstr "Ugyldig gruppe: {g}"
-#: InvenTree/helpers.py:475
+#: InvenTree/helpers.py:477
#, python-brace-format
msgid "Invalid group sequence: {g}"
msgstr ""
-#: InvenTree/helpers.py:483
+#: InvenTree/helpers.py:485
#, python-brace-format
msgid "Invalid/no group {group}"
msgstr "Ugyldig/ingen gruppe {group}"
-#: InvenTree/helpers.py:489
+#: InvenTree/helpers.py:491
msgid "No serial numbers found"
msgstr "Ingen serienummer funnet"
-#: InvenTree/helpers.py:493
+#: InvenTree/helpers.py:495
#, python-brace-format
msgid "Number of unique serial numbers ({s}) must match quantity ({q})"
msgstr ""
-#: InvenTree/models.py:174
+#: InvenTree/models.py:178
msgid "Missing file"
msgstr "Fil mangler"
-#: InvenTree/models.py:175
+#: InvenTree/models.py:179
msgid "Missing external link"
msgstr "Mangler eksternlenke"
-#: InvenTree/models.py:187 stock/models.py:2087
-#: templates/js/translated/attachment.js:101
-#: templates/js/translated/attachment.js:198
+#: InvenTree/models.py:191 stock/models.py:2091
+#: templates/js/translated/attachment.js:103
+#: templates/js/translated/attachment.js:194
msgid "Attachment"
msgstr "Vedlegg"
-#: InvenTree/models.py:188
+#: InvenTree/models.py:192
msgid "Select file to attach"
msgstr "Velg fil å legge ved"
-#: InvenTree/models.py:194 company/models.py:123 company/models.py:272
-#: company/models.py:506 order/models.py:135 order/models.py:1235
+#: InvenTree/models.py:198 company/models.py:123 company/models.py:272
+#: company/models.py:506 order/models.py:136 order/models.py:1251
#: part/models.py:795
#: report/templates/report/inventree_build_order_base.html:165
-#: templates/js/translated/company.js:655
-#: templates/js/translated/company.js:946 templates/js/translated/order.js:2676
-#: templates/js/translated/part.js:1441
+#: templates/js/translated/company.js:640
+#: templates/js/translated/company.js:931 templates/js/translated/order.js:2676
+#: templates/js/translated/part.js:1485
msgid "Link"
msgstr "Lenke"
-#: InvenTree/models.py:195 build/models.py:320 part/models.py:796
+#: InvenTree/models.py:199 build/models.py:320 part/models.py:796
#: stock/models.py:642
msgid "Link to external URL"
msgstr "Lenke til ekstern URL"
-#: InvenTree/models.py:198 templates/js/translated/attachment.js:102
-#: templates/js/translated/attachment.js:242
+#: InvenTree/models.py:202 templates/js/translated/attachment.js:104
+#: templates/js/translated/attachment.js:238
msgid "Comment"
msgstr "Kommenter"
-#: InvenTree/models.py:198
+#: InvenTree/models.py:202
msgid "File comment"
msgstr "Kommentar til fil"
-#: InvenTree/models.py:204 InvenTree/models.py:205 common/models.py:1499
-#: common/models.py:1500 common/models.py:1728 common/models.py:1729
-#: common/models.py:1991 common/models.py:1992 part/models.py:2153
-#: part/models.py:2173 plugin/models.py:238 plugin/models.py:239
+#: InvenTree/models.py:208 InvenTree/models.py:209 common/models.py:1506
+#: common/models.py:1507 common/models.py:1735 common/models.py:1736
+#: common/models.py:1998 common/models.py:1999 part/models.py:2141
+#: part/models.py:2161 plugin/models.py:238 plugin/models.py:239
#: report/templates/report/inventree_test_report_base.html:96
-#: templates/js/translated/stock.js:2513
+#: templates/js/translated/stock.js:2523
msgid "User"
msgstr "Bruker"
-#: InvenTree/models.py:208
+#: InvenTree/models.py:212
msgid "upload date"
msgstr "opplastet dato"
-#: InvenTree/models.py:230
+#: InvenTree/models.py:234
msgid "Filename must not be empty"
msgstr "Filnavn må ikke være tom"
-#: InvenTree/models.py:253
+#: InvenTree/models.py:257
msgid "Invalid attachment directory"
msgstr "Ugyldig vedleggskatalog"
-#: InvenTree/models.py:263
+#: InvenTree/models.py:267
#, python-brace-format
msgid "Filename contains illegal character '{c}'"
msgstr "Filnavn inneholder ugyldig tegn '{c}'"
-#: InvenTree/models.py:266
+#: InvenTree/models.py:270
msgid "Filename missing extension"
msgstr "Filnavn mangler filtype"
-#: InvenTree/models.py:273
+#: InvenTree/models.py:277
msgid "Attachment with this filename already exists"
msgstr "Vedlegg med dette filnavnet finnes allerede"
-#: InvenTree/models.py:280
+#: InvenTree/models.py:284
msgid "Error renaming file"
msgstr "Feil ved endring av navn"
-#: InvenTree/models.py:314
+#: InvenTree/models.py:318
msgid "Invalid choice"
msgstr "Ugyldig valg"
-#: InvenTree/models.py:333 InvenTree/models.py:334 common/models.py:1714
+#: InvenTree/models.py:337 InvenTree/models.py:338 common/models.py:1721
#: company/models.py:354 label/models.py:101 part/models.py:739
-#: part/models.py:2331 plugin/models.py:93 report/models.py:151
+#: part/models.py:2319 plugin/models.py:93 report/models.py:151
#: templates/InvenTree/notifications/notifications.html:84
#: templates/InvenTree/settings/mixins/urls.html:13
#: templates/InvenTree/settings/plugin.html:49
#: templates/InvenTree/settings/plugin.html:132
#: templates/InvenTree/settings/plugin_settings.html:23
#: templates/InvenTree/settings/settings.html:346
-#: templates/js/translated/company.js:539
-#: templates/js/translated/company.js:757 templates/js/translated/part.js:615
-#: templates/js/translated/part.js:767 templates/js/translated/part.js:1736
-#: templates/js/translated/stock.js:2283
+#: templates/js/translated/company.js:530
+#: templates/js/translated/company.js:742 templates/js/translated/part.js:659
+#: templates/js/translated/part.js:811 templates/js/translated/part.js:1832
+#: templates/js/translated/stock.js:2293
msgid "Name"
msgstr "Navn"
-#: InvenTree/models.py:340 build/models.py:197
+#: InvenTree/models.py:344 build/models.py:197
#: build/templates/build/detail.html:24 company/models.py:278
#: company/models.py:512 company/templates/company/company_base.html:71
#: company/templates/company/manufacturer_part.html:75
#: company/templates/company/supplier_part.html:73 label/models.py:108
-#: order/models.py:133 part/models.py:762 part/templates/part/category.html:74
-#: part/templates/part/part_base.html:167
-#: part/templates/part/set_category.html:14 report/models.py:164
+#: order/models.py:134 part/models.py:762 part/templates/part/category.html:74
+#: part/templates/part/part_base.html:167 report/models.py:164
#: report/models.py:509 report/models.py:550
#: report/templates/report/inventree_build_order_base.html:118
#: stock/templates/stock/location.html:103
#: templates/InvenTree/settings/plugin_settings.html:33
-#: templates/js/translated/bom.js:553 templates/js/translated/bom.js:851
-#: templates/js/translated/build.js:2476 templates/js/translated/company.js:401
-#: templates/js/translated/company.js:666
-#: templates/js/translated/company.js:957 templates/js/translated/order.js:1656
+#: templates/js/translated/bom.js:553 templates/js/translated/bom.js:845
+#: templates/js/translated/build.js:2476 templates/js/translated/company.js:395
+#: templates/js/translated/company.js:651
+#: templates/js/translated/company.js:942 templates/js/translated/order.js:1656
#: templates/js/translated/order.js:1888 templates/js/translated/order.js:2476
-#: templates/js/translated/part.js:674 templates/js/translated/part.js:1082
-#: templates/js/translated/part.js:1355 templates/js/translated/part.js:1755
-#: templates/js/translated/part.js:1824 templates/js/translated/stock.js:1676
-#: templates/js/translated/stock.js:2295 templates/js/translated/stock.js:2350
+#: templates/js/translated/part.js:718 templates/js/translated/part.js:1126
+#: templates/js/translated/part.js:1399 templates/js/translated/part.js:1851
+#: templates/js/translated/part.js:1920 templates/js/translated/stock.js:1686
+#: templates/js/translated/stock.js:2305 templates/js/translated/stock.js:2360
msgid "Description"
msgstr "Beskrivelse"
-#: InvenTree/models.py:341
+#: InvenTree/models.py:345
msgid "Description (optional)"
msgstr "Beskrivelse (valgfritt)"
-#: InvenTree/models.py:349
+#: InvenTree/models.py:353
msgid "parent"
msgstr "overkategori"
-#: InvenTree/serializers.py:52 part/models.py:2652
+#: InvenTree/models.py:466
+msgid "Server Error"
+msgstr ""
+
+#: InvenTree/models.py:467
+msgid "An error has been logged by the server."
+msgstr ""
+
+#: InvenTree/serializers.py:52 part/models.py:2640
msgid "Must be a valid number"
msgstr "Nummer må være gyldig"
-#: InvenTree/serializers.py:271
+#: InvenTree/serializers.py:263
msgid "Filename"
msgstr "Filnavn"
-#: InvenTree/serializers.py:306
+#: InvenTree/serializers.py:298
msgid "Invalid value"
msgstr "Ugyldig verdi"
-#: InvenTree/serializers.py:328
+#: InvenTree/serializers.py:320
msgid "Data File"
msgstr "Data fil"
-#: InvenTree/serializers.py:329
+#: InvenTree/serializers.py:321
msgid "Select data file for upload"
msgstr "Velg datafil for opplasting"
-#: InvenTree/serializers.py:350
+#: InvenTree/serializers.py:342
msgid "Unsupported file type"
msgstr "Filtypen støttes ikke"
-#: InvenTree/serializers.py:356
+#: InvenTree/serializers.py:348
msgid "File is too large"
msgstr "Filen er for stor"
-#: InvenTree/serializers.py:377
+#: InvenTree/serializers.py:369
msgid "No columns found in file"
msgstr "Ingen kolonner funnet i filen"
-#: InvenTree/serializers.py:380
+#: InvenTree/serializers.py:372
msgid "No data rows found in file"
msgstr "Ingen datalader funnet i fil"
-#: InvenTree/serializers.py:503
+#: InvenTree/serializers.py:495
msgid "No data rows provided"
msgstr "Ingen datalader oppgitt"
-#: InvenTree/serializers.py:506
+#: InvenTree/serializers.py:498
msgid "No data columns supplied"
msgstr "Ingen datakolonner angitt"
-#: InvenTree/serializers.py:583
+#: InvenTree/serializers.py:575
#, python-brace-format
msgid "Missing required column: '{name}'"
msgstr "Mangler påkrevd kolonne: '{name}'"
-#: InvenTree/serializers.py:592
+#: InvenTree/serializers.py:584
#, python-brace-format
msgid "Duplicate column: '{col}'"
msgstr "Dupliser kolonne: '{col}'"
@@ -440,7 +438,7 @@ msgstr "Tapt"
msgid "Returned"
msgstr "Returnert"
-#: InvenTree/status_codes.py:141 order/models.py:1114
+#: InvenTree/status_codes.py:141 order/models.py:1130
#: templates/js/translated/order.js:3264 templates/js/translated/order.js:3607
msgid "Shipped"
msgstr "Sendt"
@@ -525,7 +523,7 @@ msgstr "Delt fra overordnet element"
msgid "Split child item"
msgstr "Delt fra underelement"
-#: InvenTree/status_codes.py:281 templates/js/translated/stock.js:2020
+#: InvenTree/status_codes.py:281 templates/js/translated/stock.js:2030
msgid "Merged stock items"
msgstr "Sammenslått lagervare"
@@ -597,27 +595,27 @@ msgstr "Overde må ikke overstige 100%"
msgid "Invalid value for overage"
msgstr ""
-#: InvenTree/views.py:522
+#: InvenTree/views.py:521
msgid "Delete Item"
msgstr "Slett element"
-#: InvenTree/views.py:571
+#: InvenTree/views.py:570
msgid "Check box to confirm item deletion"
msgstr "Kryss av i boksen for å bekrefte sletting av element"
-#: InvenTree/views.py:586 templates/InvenTree/settings/user.html:22
+#: InvenTree/views.py:585 templates/InvenTree/settings/user.html:22
msgid "Edit User Information"
msgstr "Rediger brukerinformasjon"
-#: InvenTree/views.py:598 templates/InvenTree/settings/user.html:19
+#: InvenTree/views.py:597 templates/InvenTree/settings/user.html:19
msgid "Set Password"
msgstr "Velg passord"
-#: InvenTree/views.py:618
+#: InvenTree/views.py:617
msgid "Password fields must match"
msgstr "Passordfeltene må samsvare"
-#: InvenTree/views.py:842 templates/navbar.html:152
+#: InvenTree/views.py:807 templates/navbar.html:152
msgid "System Information"
msgstr "Systeminformasjon"
@@ -628,6 +626,7 @@ msgstr "Ugylding valg for overordnet build"
#: build/models.py:131 build/templates/build/build_base.html:9
#: build/templates/build/build_base.html:27
#: report/templates/report/inventree_build_order_base.html:106
+#: templates/email/overdue_build_order.html:15
#: templates/js/translated/build.js:727
msgid "Build Order"
msgstr "Build ordre"
@@ -646,12 +645,12 @@ msgstr "Build Ordre"
msgid "Build Order Reference"
msgstr "Bygg ordrereferanse"
-#: build/models.py:189 order/models.py:288 order/models.py:638
-#: order/models.py:916 part/models.py:2570
+#: build/models.py:189 order/models.py:293 order/models.py:654
+#: order/models.py:932 part/models.py:2558
#: part/templates/part/upload_bom.html:54
#: report/templates/report/inventree_po_report.html:91
#: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:688 templates/js/translated/bom.js:858
+#: templates/js/translated/bom.js:690 templates/js/translated/bom.js:852
#: templates/js/translated/build.js:1777 templates/js/translated/order.js:1919
#: templates/js/translated/order.js:2120 templates/js/translated/order.js:3448
#: templates/js/translated/order.js:3959
@@ -673,13 +672,12 @@ msgstr "Build order som denne build er tildelt til"
#: build/models.py:215 build/templates/build/build_base.html:77
#: build/templates/build/detail.html:29 company/models.py:647
-#: order/models.py:1012 order/models.py:1103 part/models.py:336
-#: part/models.py:2099 part/models.py:2114 part/models.py:2133
-#: part/models.py:2151 part/models.py:2250 part/models.py:2370
-#: part/models.py:2460 part/models.py:2545 part/models.py:2821
-#: part/serializers.py:793 part/templates/part/part_app_base.html:8
+#: order/models.py:1028 order/models.py:1119 part/models.py:336
+#: part/models.py:2087 part/models.py:2102 part/models.py:2121
+#: part/models.py:2139 part/models.py:2238 part/models.py:2358
+#: part/models.py:2448 part/models.py:2533 part/models.py:2809
+#: part/serializers.py:795 part/templates/part/part_app_base.html:8
#: part/templates/part/part_pricing.html:12
-#: part/templates/part/set_category.html:13
#: part/templates/part/upload_bom.html:52
#: report/templates/report/inventree_build_order_base.html:110
#: report/templates/report/inventree_po_report.html:89
@@ -687,22 +685,23 @@ msgstr "Build order som denne build er tildelt til"
#: templates/InvenTree/search.html:80
#: templates/email/build_order_required_stock.html:17
#: templates/email/low_stock_notification.html:16
+#: templates/email/overdue_build_order.html:16
#: templates/js/translated/barcode.js:435 templates/js/translated/bom.js:552
-#: templates/js/translated/bom.js:687 templates/js/translated/bom.js:805
+#: templates/js/translated/bom.js:689 templates/js/translated/bom.js:799
#: templates/js/translated/build.js:1153 templates/js/translated/build.js:1647
#: templates/js/translated/build.js:2083 templates/js/translated/build.js:2481
-#: templates/js/translated/company.js:252
-#: templates/js/translated/company.js:486
-#: templates/js/translated/company.js:607
-#: templates/js/translated/company.js:866 templates/js/translated/order.js:100
+#: templates/js/translated/company.js:253
+#: templates/js/translated/company.js:482
+#: templates/js/translated/company.js:592
+#: templates/js/translated/company.js:851 templates/js/translated/order.js:100
#: templates/js/translated/order.js:883 templates/js/translated/order.js:1315
#: templates/js/translated/order.js:1873 templates/js/translated/order.js:2819
#: templates/js/translated/order.js:3217 templates/js/translated/order.js:3432
-#: templates/js/translated/part.js:1067 templates/js/translated/part.js:1137
-#: templates/js/translated/part.js:1333 templates/js/translated/stock.js:531
-#: templates/js/translated/stock.js:696 templates/js/translated/stock.js:903
-#: templates/js/translated/stock.js:1633 templates/js/translated/stock.js:2376
-#: templates/js/translated/stock.js:2571 templates/js/translated/stock.js:2705
+#: templates/js/translated/part.js:1111 templates/js/translated/part.js:1181
+#: templates/js/translated/part.js:1377 templates/js/translated/stock.js:530
+#: templates/js/translated/stock.js:695 templates/js/translated/stock.js:902
+#: templates/js/translated/stock.js:1643 templates/js/translated/stock.js:2386
+#: templates/js/translated/stock.js:2581 templates/js/translated/stock.js:2715
msgid "Part"
msgstr "Del"
@@ -768,12 +767,12 @@ msgstr "Batch kode"
msgid "Batch code for this build output"
msgstr "Batch kode for denne build output"
-#: build/models.py:282 order/models.py:137 part/models.py:932
+#: build/models.py:282 order/models.py:138 part/models.py:932
#: part/templates/part/part_base.html:305 templates/js/translated/order.js:2489
msgid "Creation Date"
msgstr "Opprettelsesdato"
-#: build/models.py:286 order/models.py:660
+#: build/models.py:286 order/models.py:676
msgid "Target completion date"
msgstr "Forventet sluttdato"
@@ -781,7 +780,7 @@ msgstr "Forventet sluttdato"
msgid "Target date for build completion. Build will be overdue after this date."
msgstr "Forventet dato for ferdigstillelse. Build er forvalt etter denne datoen."
-#: build/models.py:290 order/models.py:331
+#: build/models.py:290 order/models.py:336
#: templates/js/translated/build.js:2558
msgid "Completion Date"
msgstr "Fullført dato"
@@ -799,7 +798,7 @@ msgid "User who issued this build order"
msgstr "Brukeren som utstede denne prosjekt order"
#: build/models.py:313 build/templates/build/build_base.html:190
-#: build/templates/build/detail.html:115 order/models.py:151
+#: build/templates/build/detail.html:115 order/models.py:152
#: order/templates/order/order_base.html:176
#: order/templates/order/sales_order_base.html:183 part/models.py:936
#: report/templates/report/inventree_build_order_base.html:159
@@ -822,20 +821,20 @@ msgstr "Ekstern link"
#: build/models.py:324 build/serializers.py:374
#: build/templates/build/sidebar.html:21 company/models.py:134
#: company/models.py:519 company/templates/company/sidebar.html:25
-#: order/models.py:155 order/models.py:918 order/models.py:1213
+#: order/models.py:156 order/models.py:934 order/models.py:1229
#: order/templates/order/po_sidebar.html:11
#: order/templates/order/so_sidebar.html:17 part/models.py:921
#: part/templates/part/part_sidebar.html:59
#: report/templates/report/inventree_build_order_base.html:173
-#: stock/models.py:713 stock/models.py:1985 stock/models.py:2093
+#: stock/models.py:713 stock/models.py:1989 stock/models.py:2097
#: stock/serializers.py:315 stock/serializers.py:444 stock/serializers.py:486
-#: stock/serializers.py:772 stock/serializers.py:871 stock/serializers.py:1003
+#: stock/serializers.py:759 stock/serializers.py:858 stock/serializers.py:990
#: stock/templates/stock/stock_sidebar.html:25
-#: templates/js/translated/barcode.js:100 templates/js/translated/bom.js:1044
-#: templates/js/translated/company.js:962 templates/js/translated/order.js:2040
+#: templates/js/translated/barcode.js:100 templates/js/translated/bom.js:1038
+#: templates/js/translated/company.js:947 templates/js/translated/order.js:2040
#: templates/js/translated/order.js:2191 templates/js/translated/order.js:2687
#: templates/js/translated/order.js:3632 templates/js/translated/order.js:4030
-#: templates/js/translated/stock.js:1307 templates/js/translated/stock.js:1916
+#: templates/js/translated/stock.js:1317 templates/js/translated/stock.js:1926
msgid "Notes"
msgstr "Notater"
@@ -855,44 +854,44 @@ msgstr "Prosjekt utdata er allerede utfylt"
msgid "Build output does not match Build Order"
msgstr "Prosjekt utdata samsvarer ikke Prosjekt Order"
-#: build/models.py:1108
+#: build/models.py:1111
msgid "Build item must specify a build output, as master part is marked as trackable"
msgstr "Prosjektvare må spesifisere en prosjekt utdata, siden hovedvaren er markert som sporbar"
-#: build/models.py:1117
+#: build/models.py:1120
#, python-brace-format
msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})"
msgstr ""
-#: build/models.py:1127
+#: build/models.py:1130
msgid "Stock item is over-allocated"
msgstr "Lagervare er overtildelt"
-#: build/models.py:1133 order/models.py:1372
+#: build/models.py:1136 order/models.py:1388
msgid "Allocation quantity must be greater than zero"
msgstr "Tildeling antallet må være større enn null"
-#: build/models.py:1139
+#: build/models.py:1142
msgid "Quantity must be 1 for serialized stock"
msgstr "Mengden må væew 1 for serialisert lagervare"
-#: build/models.py:1196
+#: build/models.py:1199
msgid "Selected stock item not found in BOM"
msgstr "Valgt lagevare ikke funnet i BOM"
-#: build/models.py:1265 stock/templates/stock/item_base.html:177
+#: build/models.py:1268 stock/templates/stock/item_base.html:177
#: templates/InvenTree/search.html:137 templates/js/translated/build.js:2454
#: templates/navbar.html:38
msgid "Build"
msgstr "Prosjekt"
-#: build/models.py:1266
+#: build/models.py:1269
msgid "Build to allocate parts"
msgstr "Bygge for å tildele deler"
-#: build/models.py:1282 build/serializers.py:603 order/serializers.py:994
-#: order/serializers.py:1015 stock/serializers.py:382 stock/serializers.py:703
-#: stock/serializers.py:829 stock/templates/stock/item_base.html:10
+#: build/models.py:1285 build/serializers.py:603 order/serializers.py:996
+#: order/serializers.py:1017 stock/serializers.py:382 stock/serializers.py:690
+#: stock/serializers.py:816 stock/templates/stock/item_base.html:10
#: stock/templates/stock/item_base.html:23
#: stock/templates/stock/item_base.html:199
#: templates/js/translated/build.js:738 templates/js/translated/build.js:743
@@ -900,22 +899,22 @@ msgstr "Bygge for å tildele deler"
#: templates/js/translated/order.js:101 templates/js/translated/order.js:2820
#: templates/js/translated/order.js:3124 templates/js/translated/order.js:3129
#: templates/js/translated/order.js:3224 templates/js/translated/order.js:3314
-#: templates/js/translated/stock.js:532 templates/js/translated/stock.js:697
-#: templates/js/translated/stock.js:2449
+#: templates/js/translated/stock.js:531 templates/js/translated/stock.js:696
+#: templates/js/translated/stock.js:2459
msgid "Stock Item"
msgstr "Lagervare"
-#: build/models.py:1283
+#: build/models.py:1286
msgid "Source stock item"
msgstr "Kilde lagervare"
-#: build/models.py:1295 build/serializers.py:183
+#: build/models.py:1298 build/serializers.py:183
#: build/templates/build/build_base.html:82
-#: build/templates/build/detail.html:34 common/models.py:1536
+#: build/templates/build/detail.html:34 common/models.py:1543
#: company/forms.py:36 company/templates/company/supplier_part.html:258
-#: order/models.py:909 order/models.py:1412 order/serializers.py:1134
-#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:68
-#: part/forms.py:83 part/forms.py:98 part/models.py:2561
+#: order/models.py:925 order/models.py:1428 order/serializers.py:1136
+#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:59
+#: part/forms.py:74 part/forms.py:89 part/models.py:2549
#: part/templates/part/detail.html:935 part/templates/part/detail.html:1021
#: part/templates/part/part_pricing.html:16
#: part/templates/part/upload_bom.html:53
@@ -926,8 +925,8 @@ msgstr "Kilde lagervare"
#: report/templates/report/inventree_test_report_base.html:139
#: stock/serializers.py:279 stock/templates/stock/item_base.html:292
#: stock/templates/stock/item_base.html:300
-#: templates/js/translated/barcode.js:437 templates/js/translated/bom.js:689
-#: templates/js/translated/bom.js:866 templates/js/translated/build.js:422
+#: templates/js/translated/barcode.js:437 templates/js/translated/bom.js:691
+#: templates/js/translated/bom.js:860 templates/js/translated/build.js:422
#: templates/js/translated/build.js:574 templates/js/translated/build.js:765
#: templates/js/translated/build.js:1175 templates/js/translated/build.js:1673
#: templates/js/translated/build.js:2086
@@ -937,23 +936,23 @@ msgstr "Kilde lagervare"
#: templates/js/translated/order.js:2821 templates/js/translated/order.js:3143
#: templates/js/translated/order.js:3231 templates/js/translated/order.js:3320
#: templates/js/translated/order.js:3454 templates/js/translated/order.js:3965
-#: templates/js/translated/part.js:967 templates/js/translated/part.js:1969
-#: templates/js/translated/part.js:2200 templates/js/translated/part.js:2234
-#: templates/js/translated/part.js:2312 templates/js/translated/stock.js:403
-#: templates/js/translated/stock.js:557 templates/js/translated/stock.js:727
-#: templates/js/translated/stock.js:2498 templates/js/translated/stock.js:2583
+#: templates/js/translated/part.js:1011 templates/js/translated/part.js:2065
+#: templates/js/translated/part.js:2296 templates/js/translated/part.js:2330
+#: templates/js/translated/part.js:2408 templates/js/translated/stock.js:402
+#: templates/js/translated/stock.js:556 templates/js/translated/stock.js:726
+#: templates/js/translated/stock.js:2508 templates/js/translated/stock.js:2593
msgid "Quantity"
msgstr "Antall"
-#: build/models.py:1296
+#: build/models.py:1299
msgid "Stock quantity to allocate to build"
msgstr ""
-#: build/models.py:1304
+#: build/models.py:1307
msgid "Install into"
msgstr "Installerings informasjon"
-#: build/models.py:1305
+#: build/models.py:1308
msgid "Destination stock item"
msgstr "Målets lagervare"
@@ -982,9 +981,9 @@ msgstr ""
msgid "Enter quantity for build output"
msgstr "Angi antall for build utgang"
-#: build/serializers.py:198 build/serializers.py:623 order/models.py:363
-#: order/serializers.py:280 order/serializers.py:435 part/serializers.py:512
-#: part/serializers.py:956 stock/models.py:470 stock/models.py:1239
+#: build/serializers.py:198 build/serializers.py:623 order/models.py:368
+#: order/serializers.py:280 order/serializers.py:435 part/serializers.py:514
+#: part/serializers.py:958 stock/models.py:470 stock/models.py:1239
#: stock/serializers.py:288
msgid "Quantity must be greater than zero"
msgstr "Mengden må være større enn null"
@@ -997,9 +996,9 @@ msgstr ""
msgid "Integer quantity required, as the bill of materials contains trackable parts"
msgstr ""
-#: build/serializers.py:222 order/serializers.py:448 order/serializers.py:1138
+#: build/serializers.py:222 order/serializers.py:448 order/serializers.py:1140
#: stock/serializers.py:297 templates/js/translated/order.js:1186
-#: templates/js/translated/stock.js:238 templates/js/translated/stock.js:404
+#: templates/js/translated/stock.js:237 templates/js/translated/stock.js:403
msgid "Serial Numbers"
msgstr "Serienummer"
@@ -1015,7 +1014,7 @@ msgstr ""
msgid "Automatically allocate required items with matching serial numbers"
msgstr ""
-#: build/serializers.py:268 stock/api.py:552
+#: build/serializers.py:268 stock/api.py:553
msgid "The following serial numbers already exist"
msgstr ""
@@ -1025,16 +1024,16 @@ msgstr ""
#: build/serializers.py:356 order/serializers.py:421 order/serializers.py:525
#: stock/serializers.py:308 stock/serializers.py:439 stock/serializers.py:481
-#: stock/serializers.py:864 stock/serializers.py:1097
+#: stock/serializers.py:851 stock/serializers.py:1084
#: stock/templates/stock/item_base.html:390
#: templates/js/translated/barcode.js:436
#: templates/js/translated/barcode.js:618 templates/js/translated/build.js:750
#: templates/js/translated/build.js:1685 templates/js/translated/order.js:1213
#: templates/js/translated/order.js:3136 templates/js/translated/order.js:3239
#: templates/js/translated/order.js:3247 templates/js/translated/order.js:3328
-#: templates/js/translated/part.js:180 templates/js/translated/stock.js:533
-#: templates/js/translated/stock.js:698 templates/js/translated/stock.js:905
-#: templates/js/translated/stock.js:1787 templates/js/translated/stock.js:2390
+#: templates/js/translated/part.js:180 templates/js/translated/stock.js:532
+#: templates/js/translated/stock.js:697 templates/js/translated/stock.js:904
+#: templates/js/translated/stock.js:1797 templates/js/translated/stock.js:2400
msgid "Location"
msgstr "Beliggenhet"
@@ -1043,12 +1042,12 @@ msgid "Location for completed build outputs"
msgstr ""
#: build/serializers.py:363 build/templates/build/build_base.html:142
-#: build/templates/build/detail.html:62 order/models.py:654
+#: build/templates/build/detail.html:62 order/models.py:670
#: order/serializers.py:458 stock/templates/stock/item_base.html:423
#: templates/js/translated/barcode.js:182 templates/js/translated/build.js:2510
#: templates/js/translated/order.js:1320 templates/js/translated/order.js:1660
-#: templates/js/translated/order.js:2481 templates/js/translated/stock.js:1762
-#: templates/js/translated/stock.js:2467 templates/js/translated/stock.js:2599
+#: templates/js/translated/order.js:2481 templates/js/translated/stock.js:1772
+#: templates/js/translated/stock.js:2477 templates/js/translated/stock.js:2609
msgid "Status"
msgstr ""
@@ -1108,8 +1107,8 @@ msgstr ""
msgid "No build outputs have been created for this build order"
msgstr ""
-#: build/serializers.py:535 build/serializers.py:580 part/models.py:2679
-#: part/models.py:2813
+#: build/serializers.py:535 build/serializers.py:580 part/models.py:2667
+#: part/models.py:2801
msgid "BOM Item"
msgstr "BOM varer"
@@ -1125,11 +1124,11 @@ msgstr ""
msgid "bom_item.part must point to the same part as the build order"
msgstr ""
-#: build/serializers.py:609 stock/serializers.py:716
+#: build/serializers.py:609 stock/serializers.py:703
msgid "Item must be in stock"
msgstr "Varen må være på lager"
-#: build/serializers.py:667 order/serializers.py:1052
+#: build/serializers.py:667 order/serializers.py:1054
#, python-brace-format
msgid "Available quantity ({q}) exceeded"
msgstr "Tilgjengelig mengde ({q}) overskredet"
@@ -1146,7 +1145,7 @@ msgstr ""
msgid "This stock item has already been allocated to this build output"
msgstr ""
-#: build/serializers.py:708 order/serializers.py:1298
+#: build/serializers.py:708 order/serializers.py:1300
msgid "Allocation items must be provided"
msgstr ""
@@ -1178,10 +1177,19 @@ msgstr ""
msgid "Allow allocation of substitute parts"
msgstr ""
-#: build/tasks.py:96
+#: build/tasks.py:100
msgid "Stock required for build order"
msgstr ""
+#: build/tasks.py:118
+msgid "Overdue Build Order"
+msgstr ""
+
+#: build/tasks.py:123
+#, python-brace-format
+msgid "Build order {bo} is now overdue"
+msgstr ""
+
#: build/templates/build/build_base.html:39
#: order/templates/order/order_base.html:28
#: order/templates/order/sales_order_base.html:38
@@ -1244,13 +1252,13 @@ msgid "Stock has not been fully allocated to this Build Order"
msgstr ""
#: build/templates/build/build_base.html:151
-#: build/templates/build/detail.html:131 order/models.py:922
+#: build/templates/build/detail.html:131 order/models.py:938
#: order/templates/order/order_base.html:162
#: order/templates/order/sales_order_base.html:164
#: report/templates/report/inventree_build_order_base.html:126
#: templates/js/translated/build.js:2550 templates/js/translated/order.js:1677
#: templates/js/translated/order.js:1987 templates/js/translated/order.js:2497
-#: templates/js/translated/order.js:3517 templates/js/translated/part.js:971
+#: templates/js/translated/order.js:3517 templates/js/translated/part.js:1015
msgid "Target Date"
msgstr "Måldato"
@@ -1277,13 +1285,14 @@ msgid "Completed"
msgstr "Fullført"
#: build/templates/build/build_base.html:176
-#: build/templates/build/detail.html:94 order/models.py:1100
-#: order/models.py:1185 order/models.py:1320
+#: build/templates/build/detail.html:94 order/models.py:1116
+#: order/models.py:1201 order/models.py:1336
#: order/templates/order/sales_order_base.html:9
#: order/templates/order/sales_order_base.html:28
#: report/templates/report/inventree_build_order_base.html:136
#: report/templates/report/inventree_so_report.html:77
#: stock/templates/stock/item_base.html:370
+#: templates/email/overdue_sales_order.html:15
#: templates/js/translated/order.js:2436
msgid "Sales Order"
msgstr "Salgsorder"
@@ -1319,7 +1328,7 @@ msgstr "Lager kilde"
msgid "Stock can be taken from any available location."
msgstr "Lagervare kan hentes fra alle tilgengelige steder."
-#: build/templates/build/detail.html:49 order/models.py:1034
+#: build/templates/build/detail.html:49 order/models.py:1050
#: templates/js/translated/order.js:1321 templates/js/translated/order.js:2029
msgid "Destination"
msgstr "Destinasjon"
@@ -1336,8 +1345,8 @@ msgstr "Tildelte deler"
#: stock/templates/stock/item_base.html:170
#: templates/js/translated/build.js:1179
#: templates/js/translated/model_renderers.js:112
-#: templates/js/translated/stock.js:971 templates/js/translated/stock.js:1776
-#: templates/js/translated/stock.js:2606
+#: templates/js/translated/stock.js:970 templates/js/translated/stock.js:1786
+#: templates/js/translated/stock.js:2616
#: templates/js/translated/table_filters.js:151
#: templates/js/translated/table_filters.js:242
msgid "Batch"
@@ -1716,7 +1725,7 @@ msgstr ""
msgid "Copy category parameter templates when creating a part"
msgstr "Kopier kategori parametermaler ved oppretting av en del"
-#: common/models.py:820 part/models.py:2372 report/models.py:157
+#: common/models.py:820 part/models.py:2360 report/models.py:157
#: templates/js/translated/table_filters.js:38
#: templates/js/translated/table_filters.js:444
msgid "Template"
@@ -1726,7 +1735,7 @@ msgstr "Mal"
msgid "Parts are templates by default"
msgstr "Deler er maler som standard"
-#: common/models.py:827 part/models.py:884 templates/js/translated/bom.js:1390
+#: common/models.py:827 part/models.py:884 templates/js/translated/bom.js:1384
#: templates/js/translated/table_filters.js:168
#: templates/js/translated/table_filters.js:460
msgid "Assembly"
@@ -1880,7 +1889,7 @@ msgid "Default page size for PDF reports"
msgstr ""
#: common/models.py:968
-msgid "Test Reports"
+msgid "Enable Test Reports"
msgstr ""
#: common/models.py:969
@@ -1888,568 +1897,576 @@ msgid "Enable generation of test reports"
msgstr ""
#: common/models.py:975
-msgid "Batch Code Template"
+msgid "Attach Test Reports"
msgstr ""
#: common/models.py:976
-msgid "Template for generating default batch codes for stock items"
-msgstr ""
-
-#: common/models.py:981
-msgid "Stock Expiry"
+msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item"
msgstr ""
#: common/models.py:982
-msgid "Enable stock expiry functionality"
+msgid "Batch Code Template"
+msgstr ""
+
+#: common/models.py:983
+msgid "Template for generating default batch codes for stock items"
msgstr ""
#: common/models.py:988
-msgid "Sell Expired Stock"
+msgid "Stock Expiry"
msgstr ""
#: common/models.py:989
-msgid "Allow sale of expired stock"
+msgid "Enable stock expiry functionality"
msgstr ""
#: common/models.py:995
-msgid "Stock Stale Time"
+msgid "Sell Expired Stock"
msgstr ""
#: common/models.py:996
-msgid "Number of days stock items are considered stale before expiring"
+msgid "Allow sale of expired stock"
msgstr ""
-#: common/models.py:998
-msgid "days"
+#: common/models.py:1002
+msgid "Stock Stale Time"
msgstr ""
#: common/models.py:1003
-msgid "Build Expired Stock"
+msgid "Number of days stock items are considered stale before expiring"
msgstr ""
-#: common/models.py:1004
-msgid "Allow building with expired stock"
+#: common/models.py:1005
+msgid "days"
msgstr ""
#: common/models.py:1010
-msgid "Stock Ownership Control"
+msgid "Build Expired Stock"
msgstr ""
#: common/models.py:1011
-msgid "Enable ownership control over stock locations and items"
+msgid "Allow building with expired stock"
msgstr ""
#: common/models.py:1017
-msgid "Build Order Reference Prefix"
+msgid "Stock Ownership Control"
msgstr ""
#: common/models.py:1018
-msgid "Prefix value for build order reference"
-msgstr ""
-
-#: common/models.py:1023
-msgid "Build Order Reference Regex"
+msgid "Enable ownership control over stock locations and items"
msgstr ""
#: common/models.py:1024
+msgid "Build Order Reference Prefix"
+msgstr ""
+
+#: common/models.py:1025
+msgid "Prefix value for build order reference"
+msgstr ""
+
+#: common/models.py:1030
+msgid "Build Order Reference Regex"
+msgstr ""
+
+#: common/models.py:1031
msgid "Regular expression pattern for matching build order reference"
msgstr ""
-#: common/models.py:1028
+#: common/models.py:1035
msgid "Sales Order Reference Prefix"
msgstr "Salgsorder referanse prefiks"
-#: common/models.py:1029
+#: common/models.py:1036
msgid "Prefix value for sales order reference"
msgstr "Prefiks verdi for salgsorder referanse"
-#: common/models.py:1034
+#: common/models.py:1041
msgid "Sales Order Default Shipment"
msgstr ""
-#: common/models.py:1035
+#: common/models.py:1042
msgid "Enable creation of default shipment with sales orders"
msgstr ""
-#: common/models.py:1041
+#: common/models.py:1048
msgid "Purchase Order Reference Prefix"
msgstr "Salgsorder referanse prefiks"
-#: common/models.py:1042
+#: common/models.py:1049
msgid "Prefix value for purchase order reference"
msgstr "Prefiks verdi for salgsorder referanse"
-#: common/models.py:1048
+#: common/models.py:1055
msgid "Enable password forgot"
msgstr "Aktiver passord glemt"
-#: common/models.py:1049
+#: common/models.py:1056
msgid "Enable password forgot function on the login pages"
msgstr "Ativer funskjon for glemt passord på innloggingssidene"
-#: common/models.py:1055
+#: common/models.py:1062
msgid "Enable registration"
msgstr "Aktiver registrering"
-#: common/models.py:1056
+#: common/models.py:1063
msgid "Enable self-registration for users on the login pages"
msgstr "Aktiver egenregistrerting for brukerer på påloggingssidene"
-#: common/models.py:1062
+#: common/models.py:1069
msgid "Enable SSO"
msgstr "Aktiver SSO"
-#: common/models.py:1063
+#: common/models.py:1070
msgid "Enable SSO on the login pages"
msgstr "Aktiver SSO på innloggingssidene"
-#: common/models.py:1069
+#: common/models.py:1076
msgid "Email required"
msgstr "E-postadresse kreves"
-#: common/models.py:1070
+#: common/models.py:1077
msgid "Require user to supply mail on signup"
msgstr "Krevt at brukeren angi e-post ved registrering"
-#: common/models.py:1076
+#: common/models.py:1083
msgid "Auto-fill SSO users"
msgstr "Auto-utfyll SSO brukere"
-#: common/models.py:1077
+#: common/models.py:1084
msgid "Automatically fill out user-details from SSO account-data"
msgstr "Fyll automatisk ut brukeropplysninger fra SSO kontodata"
-#: common/models.py:1083
+#: common/models.py:1090
msgid "Mail twice"
msgstr "E-post to ganger"
-#: common/models.py:1084
+#: common/models.py:1091
msgid "On signup ask users twice for their mail"
msgstr "Ved registrering spør brukere to ganger for e-posten"
-#: common/models.py:1090
+#: common/models.py:1097
msgid "Password twice"
msgstr "Passord to ganger"
-#: common/models.py:1091
+#: common/models.py:1098
msgid "On signup ask users twice for their password"
msgstr "Ved registrerting, spør brukere to ganger for passord"
-#: common/models.py:1097
+#: common/models.py:1104
msgid "Group on signup"
msgstr ""
-#: common/models.py:1098
+#: common/models.py:1105
msgid "Group to which new users are assigned on registration"
msgstr "Gruppe for hvilke nye brukere som er tilknyttet registrering"
-#: common/models.py:1104
+#: common/models.py:1111
msgid "Enforce MFA"
msgstr ""
-#: common/models.py:1105
+#: common/models.py:1112
msgid "Users must use multifactor security."
msgstr "Brukere må bruke flerfaktorsikkerhet."
-#: common/models.py:1111
+#: common/models.py:1118
msgid "Check plugins on startup"
msgstr ""
-#: common/models.py:1112
+#: common/models.py:1119
msgid "Check that all plugins are installed on startup - enable in container enviroments"
msgstr ""
-#: common/models.py:1120
+#: common/models.py:1127
msgid "Enable URL integration"
msgstr "Aktiver URL integrering"
-#: common/models.py:1121
+#: common/models.py:1128
msgid "Enable plugins to add URL routes"
msgstr ""
-#: common/models.py:1128
+#: common/models.py:1135
msgid "Enable navigation integration"
msgstr "Aktiver navigasjonsintegrering"
-#: common/models.py:1129
+#: common/models.py:1136
msgid "Enable plugins to integrate into navigation"
msgstr ""
-#: common/models.py:1136
+#: common/models.py:1143
msgid "Enable app integration"
msgstr "Aktiver app integrasjon"
-#: common/models.py:1137
+#: common/models.py:1144
msgid "Enable plugins to add apps"
msgstr ""
-#: common/models.py:1144
+#: common/models.py:1151
msgid "Enable schedule integration"
msgstr ""
-#: common/models.py:1145
+#: common/models.py:1152
msgid "Enable plugins to run scheduled tasks"
msgstr ""
-#: common/models.py:1152
+#: common/models.py:1159
msgid "Enable event integration"
msgstr ""
-#: common/models.py:1153
+#: common/models.py:1160
msgid "Enable plugins to respond to internal events"
msgstr ""
-#: common/models.py:1170 common/models.py:1492
+#: common/models.py:1177 common/models.py:1499
msgid "Settings key (must be unique - case insensitive"
msgstr ""
-#: common/models.py:1192
+#: common/models.py:1199
msgid "Show subscribed parts"
msgstr "Vis abbonerte deler"
-#: common/models.py:1193
+#: common/models.py:1200
msgid "Show subscribed parts on the homepage"
msgstr "Vis abbonerte deler på hjemmesiden"
-#: common/models.py:1199
+#: common/models.py:1206
msgid "Show subscribed categories"
msgstr "Vis abbonerte kategorier"
-#: common/models.py:1200
+#: common/models.py:1207
msgid "Show subscribed part categories on the homepage"
msgstr "Vis abbonerte delkatekorier på hjemmesiden"
-#: common/models.py:1206
+#: common/models.py:1213
msgid "Show latest parts"
msgstr "Vis nyeste deler"
-#: common/models.py:1207
+#: common/models.py:1214
msgid "Show latest parts on the homepage"
msgstr "Vis nyeste deler på hjemmesiden"
-#: common/models.py:1213
+#: common/models.py:1220
msgid "Recent Part Count"
msgstr "Antall nylig deler"
-#: common/models.py:1214
+#: common/models.py:1221
msgid "Number of recent parts to display on index page"
msgstr ""
-#: common/models.py:1220
+#: common/models.py:1227
msgid "Show unvalidated BOMs"
msgstr "Vis uvaliderte BOMs"
-#: common/models.py:1221
+#: common/models.py:1228
msgid "Show BOMs that await validation on the homepage"
msgstr "Vis BOMs som venter validering på hjemmesiden"
-#: common/models.py:1227
+#: common/models.py:1234
msgid "Show recent stock changes"
msgstr "Vis nylige lagerendringer"
-#: common/models.py:1228
+#: common/models.py:1235
msgid "Show recently changed stock items on the homepage"
msgstr "Vis nylig endret lagervarer på hjemmesiden"
-#: common/models.py:1234
+#: common/models.py:1241
msgid "Recent Stock Count"
msgstr "Siste lagertelling"
-#: common/models.py:1235
+#: common/models.py:1242
msgid "Number of recent stock items to display on index page"
msgstr "Antall nylige lagervarer som skal vises på indeksside"
-#: common/models.py:1241
+#: common/models.py:1248
msgid "Show low stock"
msgstr "Vis lav lager"
-#: common/models.py:1242
+#: common/models.py:1249
msgid "Show low stock items on the homepage"
msgstr "Vis lav lagervarer på hjemmesiden"
-#: common/models.py:1248
+#: common/models.py:1255
msgid "Show depleted stock"
msgstr "Vis tom lagervarer"
-#: common/models.py:1249
+#: common/models.py:1256
msgid "Show depleted stock items on the homepage"
msgstr ""
-#: common/models.py:1255
+#: common/models.py:1262
msgid "Show needed stock"
msgstr ""
-#: common/models.py:1256
+#: common/models.py:1263
msgid "Show stock items needed for builds on the homepage"
msgstr ""
-#: common/models.py:1262
+#: common/models.py:1269
msgid "Show expired stock"
msgstr ""
-#: common/models.py:1263
+#: common/models.py:1270
msgid "Show expired stock items on the homepage"
msgstr ""
-#: common/models.py:1269
+#: common/models.py:1276
msgid "Show stale stock"
msgstr ""
-#: common/models.py:1270
+#: common/models.py:1277
msgid "Show stale stock items on the homepage"
msgstr ""
-#: common/models.py:1276
+#: common/models.py:1283
msgid "Show pending builds"
msgstr ""
-#: common/models.py:1277
+#: common/models.py:1284
msgid "Show pending builds on the homepage"
msgstr ""
-#: common/models.py:1283
+#: common/models.py:1290
msgid "Show overdue builds"
msgstr ""
-#: common/models.py:1284
+#: common/models.py:1291
msgid "Show overdue builds on the homepage"
msgstr ""
-#: common/models.py:1290
+#: common/models.py:1297
msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:1291
+#: common/models.py:1298
msgid "Show outstanding POs on the homepage"
msgstr ""
-#: common/models.py:1297
+#: common/models.py:1304
msgid "Show overdue POs"
msgstr ""
-#: common/models.py:1298
+#: common/models.py:1305
msgid "Show overdue POs on the homepage"
msgstr ""
-#: common/models.py:1304
+#: common/models.py:1311
msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:1305
+#: common/models.py:1312
msgid "Show outstanding SOs on the homepage"
msgstr ""
-#: common/models.py:1311
+#: common/models.py:1318
msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:1312
+#: common/models.py:1319
msgid "Show overdue SOs on the homepage"
msgstr ""
-#: common/models.py:1317
+#: common/models.py:1324
msgid "Enable label printing"
msgstr ""
-#: common/models.py:1318
+#: common/models.py:1325
msgid "Enable label printing from the web interface"
msgstr ""
-#: common/models.py:1324
+#: common/models.py:1331
msgid "Inline label display"
msgstr ""
-#: common/models.py:1325
+#: common/models.py:1332
msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:1331
+#: common/models.py:1338
msgid "Inline report display"
msgstr ""
-#: common/models.py:1332
+#: common/models.py:1339
msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:1338
+#: common/models.py:1345
msgid "Search Parts"
msgstr ""
-#: common/models.py:1339
+#: common/models.py:1346
msgid "Display parts in search preview window"
msgstr ""
-#: common/models.py:1345
+#: common/models.py:1352
msgid "Seach Supplier Parts"
msgstr ""
-#: common/models.py:1346
+#: common/models.py:1353
msgid "Display supplier parts in search preview window"
msgstr ""
-#: common/models.py:1352
+#: common/models.py:1359
msgid "Search Manufacturer Parts"
msgstr ""
-#: common/models.py:1353
+#: common/models.py:1360
msgid "Display manufacturer parts in search preview window"
msgstr ""
-#: common/models.py:1359
+#: common/models.py:1366
msgid "Hide Inactive Parts"
msgstr ""
-#: common/models.py:1360
+#: common/models.py:1367
msgid "Excluded inactive parts from search preview window"
msgstr ""
-#: common/models.py:1366
+#: common/models.py:1373
msgid "Search Categories"
msgstr ""
-#: common/models.py:1367
+#: common/models.py:1374
msgid "Display part categories in search preview window"
msgstr ""
-#: common/models.py:1373
+#: common/models.py:1380
msgid "Search Stock"
msgstr ""
-#: common/models.py:1374
+#: common/models.py:1381
msgid "Display stock items in search preview window"
msgstr ""
-#: common/models.py:1380
+#: common/models.py:1387
msgid "Hide Unavailable Stock Items"
msgstr ""
-#: common/models.py:1381
+#: common/models.py:1388
msgid "Exclude stock items which are not available from the search preview window"
msgstr ""
-#: common/models.py:1387
+#: common/models.py:1394
msgid "Search Locations"
msgstr ""
-#: common/models.py:1388
+#: common/models.py:1395
msgid "Display stock locations in search preview window"
msgstr ""
-#: common/models.py:1394
+#: common/models.py:1401
msgid "Search Companies"
msgstr ""
-#: common/models.py:1395
+#: common/models.py:1402
msgid "Display companies in search preview window"
msgstr ""
-#: common/models.py:1401
+#: common/models.py:1408
msgid "Search Purchase Orders"
msgstr ""
-#: common/models.py:1402
+#: common/models.py:1409
msgid "Display purchase orders in search preview window"
msgstr ""
-#: common/models.py:1408
+#: common/models.py:1415
msgid "Exclude Inactive Purchase Orders"
msgstr ""
-#: common/models.py:1409
+#: common/models.py:1416
msgid "Exclude inactive purchase orders from search preview window"
msgstr ""
-#: common/models.py:1415
+#: common/models.py:1422
msgid "Search Sales Orders"
msgstr ""
-#: common/models.py:1416
+#: common/models.py:1423
msgid "Display sales orders in search preview window"
msgstr ""
-#: common/models.py:1422
+#: common/models.py:1429
msgid "Exclude Inactive Sales Orders"
msgstr ""
-#: common/models.py:1423
+#: common/models.py:1430
msgid "Exclude inactive sales orders from search preview window"
msgstr ""
-#: common/models.py:1429
+#: common/models.py:1436
msgid "Search Preview Results"
msgstr ""
-#: common/models.py:1430
+#: common/models.py:1437
msgid "Number of results to show in each section of the search preview window"
msgstr ""
-#: common/models.py:1436
+#: common/models.py:1443
msgid "Show Quantity in Forms"
msgstr ""
-#: common/models.py:1437
+#: common/models.py:1444
msgid "Display available part quantity in some forms"
msgstr ""
-#: common/models.py:1443
+#: common/models.py:1450
msgid "Escape Key Closes Forms"
msgstr ""
-#: common/models.py:1444
+#: common/models.py:1451
msgid "Use the escape key to close modal forms"
msgstr ""
-#: common/models.py:1450
+#: common/models.py:1457
msgid "Fixed Navbar"
msgstr ""
-#: common/models.py:1451
+#: common/models.py:1458
msgid "The navbar position is fixed to the top of the screen"
msgstr ""
-#: common/models.py:1457
+#: common/models.py:1464
msgid "Date Format"
msgstr ""
-#: common/models.py:1458
+#: common/models.py:1465
msgid "Preferred format for displaying dates"
msgstr ""
-#: common/models.py:1472 part/templates/part/detail.html:39
+#: common/models.py:1479 part/templates/part/detail.html:39
msgid "Part Scheduling"
msgstr ""
-#: common/models.py:1473
+#: common/models.py:1480
msgid "Display part scheduling information"
msgstr ""
-#: common/models.py:1537 company/forms.py:37
+#: common/models.py:1544 company/forms.py:37
msgid "Price break quantity"
msgstr ""
-#: common/models.py:1544 company/serializers.py:288
-#: company/templates/company/supplier_part.html:263 order/models.py:949
-#: templates/js/translated/part.js:998 templates/js/translated/part.js:1974
+#: common/models.py:1551 company/serializers.py:290
+#: company/templates/company/supplier_part.html:263 order/models.py:965
+#: templates/js/translated/part.js:1042 templates/js/translated/part.js:2070
msgid "Price"
msgstr ""
-#: common/models.py:1545
+#: common/models.py:1552
msgid "Unit price at specified quantity"
msgstr ""
-#: common/models.py:1705 common/models.py:1883
+#: common/models.py:1712 common/models.py:1890
msgid "Endpoint"
msgstr ""
-#: common/models.py:1706
+#: common/models.py:1713
msgid "Endpoint at which this webhook is received"
msgstr ""
-#: common/models.py:1715
+#: common/models.py:1722
msgid "Name for this webhook"
msgstr ""
-#: common/models.py:1720 part/models.py:911 plugin/models.py:99
+#: common/models.py:1727 part/models.py:911 plugin/models.py:99
#: templates/js/translated/table_filters.js:34
#: templates/js/translated/table_filters.js:96
#: templates/js/translated/table_filters.js:308
@@ -2457,79 +2474,89 @@ msgstr ""
msgid "Active"
msgstr "Aktiv"
-#: common/models.py:1721
+#: common/models.py:1728
msgid "Is this webhook active"
msgstr ""
-#: common/models.py:1735
+#: common/models.py:1742
msgid "Token"
msgstr "Sjetong"
-#: common/models.py:1736
+#: common/models.py:1743
msgid "Token for access"
msgstr "Nøkkel for tilgang"
-#: common/models.py:1743
+#: common/models.py:1750
msgid "Secret"
msgstr "Hemmelig"
-#: common/models.py:1744
+#: common/models.py:1751
msgid "Shared secret for HMAC"
msgstr "Delt hemmlighet for HMAC"
-#: common/models.py:1850
+#: common/models.py:1857
msgid "Message ID"
msgstr "Melding ID"
-#: common/models.py:1851
+#: common/models.py:1858
msgid "Unique identifier for this message"
msgstr "Unik Id for denne meldingen"
-#: common/models.py:1859
+#: common/models.py:1866
msgid "Host"
msgstr "Vert"
-#: common/models.py:1860
+#: common/models.py:1867
msgid "Host from which this message was received"
msgstr ""
-#: common/models.py:1867
+#: common/models.py:1874
msgid "Header"
msgstr "Tittel"
-#: common/models.py:1868
+#: common/models.py:1875
msgid "Header of this message"
msgstr "Overskrift for denne meldingen"
-#: common/models.py:1874
+#: common/models.py:1881
msgid "Body"
msgstr "Brødtekst"
-#: common/models.py:1875
+#: common/models.py:1882
msgid "Body of this message"
msgstr ""
-#: common/models.py:1884
+#: common/models.py:1891
msgid "Endpoint on which this message was received"
msgstr ""
-#: common/models.py:1889
+#: common/models.py:1896
msgid "Worked on"
msgstr "Arbeidet med"
-#: common/models.py:1890
+#: common/models.py:1897
msgid "Was the work on this message finished?"
msgstr "Var arbeidet med denne meldingen ferdig?"
+#: common/notifications.py:292
+#, python-brace-format
+msgid "New {verbose_name}"
+msgstr ""
+
+#: common/notifications.py:294
+#, python-brace-format
+msgid "A new {verbose_name} has been created and ,assigned to you"
+msgstr ""
+
#: common/views.py:87 order/templates/order/purchase_order_detail.html:23
-#: order/views.py:102 part/views.py:191
+#: order/views.py:102 part/views.py:116
#: templates/patterns/wizard/upload.html:37
msgid "Upload File"
msgstr "Last opp fil"
#: common/views.py:88 order/views.py:103
#: part/templates/part/import_wizard/ajax_match_fields.html:45
-#: part/views.py:192 templates/patterns/wizard/match_fields.html:51
+#: part/views.py:117 templates/patterns/wizard/match_fields.html:51
msgid "Match Fields"
msgstr "Sammelign felter"
@@ -2545,19 +2572,19 @@ msgstr ""
msgid "Parts imported"
msgstr "Deler importert"
-#: common/views.py:507 order/templates/order/order_wizard/match_parts.html:19
+#: common/views.py:511 order/templates/order/order_wizard/match_parts.html:19
#: part/templates/part/import_wizard/match_references.html:19
#: templates/patterns/wizard/match_fields.html:26
#: templates/patterns/wizard/upload.html:35
msgid "Previous Step"
msgstr "Forrige trinn"
-#: company/forms.py:16 part/forms.py:21
+#: company/forms.py:16 part/forms.py:18
#: templates/InvenTree/settings/mixins/urls.html:14
msgid "URL"
msgstr ""
-#: company/forms.py:17 part/forms.py:22
+#: company/forms.py:17 part/forms.py:19
msgid "Image URL"
msgstr "Bilde URL"
@@ -2571,7 +2598,7 @@ msgstr "Beskrivelse av firmaet"
#: company/models.py:104 company/templates/company/company_base.html:100
#: templates/InvenTree/settings/plugin_settings.html:55
-#: templates/js/translated/company.js:405
+#: templates/js/translated/company.js:399
msgid "Website"
msgstr "Nettside"
@@ -2644,9 +2671,9 @@ msgstr ""
msgid "Does this company manufacture parts?"
msgstr "Produserer dette firmaet deler?"
-#: company/models.py:144 company/serializers.py:294
-#: company/templates/company/company_base.html:106 part/serializers.py:137
-#: part/serializers.py:168 stock/serializers.py:162
+#: company/models.py:144 company/serializers.py:296
+#: company/templates/company/company_base.html:106 part/serializers.py:139
+#: part/serializers.py:170 stock/serializers.py:162
msgid "Currency"
msgstr "Valuta"
@@ -2667,10 +2694,10 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:90
#: company/templates/company/supplier_part.html:103
#: stock/templates/stock/item_base.html:212
-#: templates/js/translated/company.js:389
-#: templates/js/translated/company.js:488
-#: templates/js/translated/company.js:632
-#: templates/js/translated/company.js:917 templates/js/translated/part.js:235
+#: templates/js/translated/company.js:383
+#: templates/js/translated/company.js:484
+#: templates/js/translated/company.js:617
+#: templates/js/translated/company.js:902 templates/js/translated/part.js:235
#: templates/js/translated/table_filters.js:411
msgid "Manufacturer"
msgstr ""
@@ -2681,11 +2708,11 @@ msgstr ""
#: company/models.py:266 company/templates/company/manufacturer_part.html:101
#: company/templates/company/supplier_part.html:111
-#: templates/js/translated/company.js:255
-#: templates/js/translated/company.js:487
-#: templates/js/translated/company.js:648
-#: templates/js/translated/company.js:935 templates/js/translated/order.js:1907
-#: templates/js/translated/part.js:246 templates/js/translated/part.js:956
+#: templates/js/translated/company.js:256
+#: templates/js/translated/company.js:483
+#: templates/js/translated/company.js:633
+#: templates/js/translated/company.js:920 templates/js/translated/order.js:1907
+#: templates/js/translated/part.js:246 templates/js/translated/part.js:1000
msgid "MPN"
msgstr ""
@@ -2714,9 +2741,9 @@ msgstr ""
#: company/models.py:361
#: report/templates/report/inventree_test_report_base.html:95
-#: stock/models.py:2080 templates/js/translated/company.js:540
-#: templates/js/translated/company.js:763 templates/js/translated/part.js:776
-#: templates/js/translated/stock.js:1294
+#: stock/models.py:2084 templates/js/translated/company.js:531
+#: templates/js/translated/company.js:748 templates/js/translated/part.js:820
+#: templates/js/translated/stock.js:1304
msgid "Value"
msgstr ""
@@ -2724,10 +2751,10 @@ msgstr ""
msgid "Parameter value"
msgstr ""
-#: company/models.py:368 part/models.py:878 part/models.py:2339
+#: company/models.py:368 part/models.py:878 part/models.py:2327
#: part/templates/part/part_base.html:280
#: templates/InvenTree/settings/settings.html:351
-#: templates/js/translated/company.js:769 templates/js/translated/part.js:782
+#: templates/js/translated/company.js:754 templates/js/translated/part.js:826
msgid "Units"
msgstr ""
@@ -2740,13 +2767,14 @@ msgid "Linked manufacturer part must reference the same base part"
msgstr ""
#: company/models.py:487 company/templates/company/company_base.html:81
-#: company/templates/company/supplier_part.html:87 order/models.py:303
+#: company/templates/company/supplier_part.html:87 order/models.py:308
#: order/templates/order/order_base.html:112 part/bom.py:237 part/bom.py:265
#: stock/templates/stock/item_base.html:229
-#: templates/js/translated/company.js:254
-#: templates/js/translated/company.js:393
-#: templates/js/translated/company.js:891 templates/js/translated/order.js:1643
-#: templates/js/translated/part.js:216 templates/js/translated/part.js:924
+#: templates/email/overdue_purchase_order.html:16
+#: templates/js/translated/company.js:255
+#: templates/js/translated/company.js:387
+#: templates/js/translated/company.js:876 templates/js/translated/order.js:1643
+#: templates/js/translated/part.js:216 templates/js/translated/part.js:968
#: templates/js/translated/table_filters.js:415
msgid "Supplier"
msgstr ""
@@ -2756,9 +2784,9 @@ msgid "Select supplier"
msgstr ""
#: company/models.py:493 company/templates/company/supplier_part.html:97
-#: part/bom.py:238 part/bom.py:266 templates/js/translated/company.js:253
+#: part/bom.py:238 part/bom.py:266 templates/js/translated/company.js:254
#: templates/js/translated/order.js:1894 templates/js/translated/part.js:227
-#: templates/js/translated/part.js:942
+#: templates/js/translated/part.js:986
msgid "SKU"
msgstr ""
@@ -2779,23 +2807,23 @@ msgid "Supplier part description"
msgstr ""
#: company/models.py:518 company/templates/company/supplier_part.html:125
-#: part/models.py:2573 part/templates/part/upload_bom.html:59
+#: part/models.py:2561 part/templates/part/upload_bom.html:59
#: report/templates/report/inventree_po_report.html:92
#: report/templates/report/inventree_so_report.html:93 stock/serializers.py:387
msgid "Note"
msgstr ""
-#: company/models.py:522 part/models.py:1688
+#: company/models.py:522 part/models.py:1683
msgid "base cost"
msgstr ""
-#: company/models.py:522 part/models.py:1688
+#: company/models.py:522 part/models.py:1683
msgid "Minimum charge (e.g. stocking fee)"
msgstr ""
#: company/models.py:524 company/templates/company/supplier_part.html:118
#: stock/models.py:608 stock/templates/stock/item_base.html:245
-#: templates/js/translated/company.js:967 templates/js/translated/stock.js:1912
+#: templates/js/translated/company.js:952 templates/js/translated/stock.js:1922
msgid "Packaging"
msgstr ""
@@ -2803,7 +2831,7 @@ msgstr ""
msgid "Part packaging"
msgstr ""
-#: company/models.py:526 part/models.py:1690
+#: company/models.py:526 part/models.py:1685
msgid "multiple"
msgstr ""
@@ -2825,7 +2853,7 @@ msgstr ""
#: company/templates/company/company_base.html:8
#: company/templates/company/company_base.html:12
-#: templates/InvenTree/search.html:177 templates/js/translated/company.js:378
+#: templates/InvenTree/search.html:177 templates/js/translated/company.js:372
msgid "Company"
msgstr ""
@@ -2843,7 +2871,7 @@ msgid "Edit company information"
msgstr ""
#: company/templates/company/company_base.html:34
-#: templates/js/translated/company.js:321
+#: templates/js/translated/company.js:315
msgid "Edit Company"
msgstr ""
@@ -2866,12 +2894,13 @@ msgstr ""
msgid "Download image from URL"
msgstr "Last ned bilde fra URL"
-#: company/templates/company/company_base.html:86 order/models.py:649
+#: company/templates/company/company_base.html:86 order/models.py:665
#: order/templates/order/sales_order_base.html:116 stock/models.py:627
-#: stock/models.py:628 stock/serializers.py:758
+#: stock/models.py:628 stock/serializers.py:745
#: stock/templates/stock/item_base.html:401
-#: templates/js/translated/company.js:385 templates/js/translated/order.js:2458
-#: templates/js/translated/stock.js:2431
+#: templates/email/overdue_sales_order.html:16
+#: templates/js/translated/company.js:379 templates/js/translated/order.js:2458
+#: templates/js/translated/stock.js:2441
#: templates/js/translated/table_filters.js:419
msgid "Customer"
msgstr "Kunde"
@@ -2999,7 +3028,7 @@ msgid "Supplier List"
msgstr "Leverandørliste"
#: company/templates/company/manufacturer_part.html:15 company/views.py:45
-#: part/templates/part/prices.html:170 templates/InvenTree/search.html:179
+#: part/templates/part/prices.html:172 templates/InvenTree/search.html:179
#: templates/navbar.html:49
msgid "Manufacturers"
msgstr "Produsenter"
@@ -3012,12 +3041,12 @@ msgid "Order part"
msgstr "Bestill del"
#: company/templates/company/manufacturer_part.html:39
-#: templates/js/translated/company.js:680
+#: templates/js/translated/company.js:665
msgid "Edit manufacturer part"
msgstr "Endre produsent del"
#: company/templates/company/manufacturer_part.html:43
-#: templates/js/translated/company.js:681
+#: templates/js/translated/company.js:666
msgid "Delete manufacturer part"
msgstr "Slett produsentdel"
@@ -3032,7 +3061,7 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:119
#: company/templates/company/supplier_part.html:15 company/views.py:39
-#: part/templates/part/part_sidebar.html:35 part/templates/part/prices.html:166
+#: part/templates/part/part_sidebar.html:35 part/templates/part/prices.html:168
#: templates/InvenTree/search.html:189 templates/navbar.html:48
msgid "Suppliers"
msgstr "Leverandører"
@@ -3092,18 +3121,18 @@ msgstr "Tildelt lagervarer"
#: company/templates/company/supplier_part.html:7
#: company/templates/company/supplier_part.html:24 stock/models.py:592
#: stock/templates/stock/item_base.html:238
-#: templates/js/translated/company.js:907 templates/js/translated/order.js:884
-#: templates/js/translated/stock.js:1869
+#: templates/js/translated/company.js:892 templates/js/translated/order.js:884
+#: templates/js/translated/stock.js:1879
msgid "Supplier Part"
msgstr ""
#: company/templates/company/supplier_part.html:38
-#: templates/js/translated/company.js:980
+#: templates/js/translated/company.js:965
msgid "Edit supplier part"
msgstr ""
#: company/templates/company/supplier_part.html:42
-#: templates/js/translated/company.js:981
+#: templates/js/translated/company.js:966
msgid "Delete supplier part"
msgstr ""
@@ -3123,7 +3152,7 @@ msgstr ""
#: company/templates/company/supplier_part.html:148
#: part/templates/part/detail.html:24 stock/templates/stock/location.html:177
-#: templates/js/translated/stock.js:380
+#: templates/js/translated/stock.js:379
msgid "New Stock Item"
msgstr ""
@@ -3144,7 +3173,7 @@ msgstr ""
#: company/templates/company/supplier_part.html:191
#: company/templates/company/supplier_part.html:305
-#: part/templates/part/prices.html:274 templates/js/translated/part.js:2046
+#: part/templates/part/prices.html:276 templates/js/translated/part.js:2142
msgid "Add Price Break"
msgstr ""
@@ -3153,12 +3182,12 @@ msgid "No price break information found"
msgstr ""
#: company/templates/company/supplier_part.html:231
-#: templates/js/translated/part.js:2056
+#: templates/js/translated/part.js:2152
msgid "Delete Price Break"
msgstr ""
#: company/templates/company/supplier_part.html:245
-#: templates/js/translated/part.js:2070
+#: templates/js/translated/part.js:2166
msgid "Edit Price Break"
msgstr ""
@@ -3180,9 +3209,9 @@ msgstr ""
#: stock/templates/stock/stock_app_base.html:10
#: templates/InvenTree/search.html:151
#: templates/InvenTree/settings/sidebar.html:43
-#: templates/js/translated/bom.js:554 templates/js/translated/part.js:678
-#: templates/js/translated/part.js:1226 templates/js/translated/part.js:1387
-#: templates/js/translated/stock.js:904 templates/js/translated/stock.js:1687
+#: templates/js/translated/bom.js:554 templates/js/translated/part.js:722
+#: templates/js/translated/part.js:1270 templates/js/translated/part.js:1431
+#: templates/js/translated/stock.js:903 templates/js/translated/stock.js:1697
#: templates/navbar.html:31
msgid "Stock"
msgstr ""
@@ -3209,7 +3238,7 @@ msgstr ""
#: stock/templates/stock/location.html:173
#: stock/templates/stock/location_sidebar.html:7
#: templates/InvenTree/search.html:153 templates/js/translated/search.js:223
-#: templates/js/translated/stock.js:2307 users/models.py:39
+#: templates/js/translated/stock.js:2317 users/models.py:39
msgid "Stock Items"
msgstr ""
@@ -3238,20 +3267,20 @@ msgstr ""
msgid "New Company"
msgstr ""
-#: company/views.py:112 part/views.py:576
+#: company/views.py:112 part/views.py:501
msgid "Download Image"
msgstr ""
-#: company/views.py:139 part/views.py:606
+#: company/views.py:139 part/views.py:531
msgid "Image size exceeds maximum allowable size for download"
msgstr ""
-#: company/views.py:146 part/views.py:613
+#: company/views.py:146 part/views.py:538
#, python-brace-format
msgid "Invalid response: {code}"
msgstr ""
-#: company/views.py:155 part/views.py:622
+#: company/views.py:155 part/views.py:547
msgid "Supplied URL is not a valid image file"
msgstr ""
@@ -3320,313 +3349,314 @@ msgstr ""
msgid "Part query filters (comma-separated value of key=value pairs)"
msgstr ""
-#: order/models.py:133
+#: order/models.py:134
msgid "Order description"
msgstr ""
-#: order/models.py:135 order/models.py:1236
+#: order/models.py:136 order/models.py:1252
msgid "Link to external page"
msgstr ""
-#: order/models.py:143
+#: order/models.py:144
msgid "Created By"
msgstr ""
-#: order/models.py:150
+#: order/models.py:151
msgid "User or group responsible for this order"
msgstr ""
-#: order/models.py:155
+#: order/models.py:156
msgid "Order notes"
msgstr ""
-#: order/models.py:289 order/models.py:639
+#: order/models.py:294 order/models.py:655
msgid "Order reference"
msgstr ""
-#: order/models.py:294 order/models.py:654
+#: order/models.py:299 order/models.py:670
msgid "Purchase order status"
msgstr ""
-#: order/models.py:304
+#: order/models.py:309
msgid "Company from which the items are being ordered"
msgstr ""
-#: order/models.py:307 order/templates/order/order_base.html:124
+#: order/models.py:312 order/templates/order/order_base.html:124
#: templates/js/translated/order.js:1652
msgid "Supplier Reference"
msgstr ""
-#: order/models.py:307
+#: order/models.py:312
msgid "Supplier order reference code"
msgstr ""
-#: order/models.py:314
+#: order/models.py:319
msgid "received by"
msgstr ""
-#: order/models.py:319
+#: order/models.py:324
msgid "Issue Date"
msgstr ""
-#: order/models.py:320
+#: order/models.py:325
msgid "Date order was issued"
msgstr ""
-#: order/models.py:325
+#: order/models.py:330
msgid "Target Delivery Date"
msgstr ""
-#: order/models.py:326
+#: order/models.py:331
msgid "Expected date for order delivery. Order will be overdue after this date."
msgstr ""
-#: order/models.py:332
+#: order/models.py:337
msgid "Date order was completed"
msgstr ""
-#: order/models.py:368
+#: order/models.py:373
msgid "Part supplier must match PO supplier"
msgstr ""
-#: order/models.py:512
+#: order/models.py:517
msgid "Quantity must be a positive number"
msgstr ""
-#: order/models.py:650
+#: order/models.py:666
msgid "Company to which the items are being sold"
msgstr ""
-#: order/models.py:656
+#: order/models.py:672
msgid "Customer Reference "
msgstr ""
-#: order/models.py:656
+#: order/models.py:672
msgid "Customer order reference code"
msgstr ""
-#: order/models.py:661
+#: order/models.py:677
msgid "Target date for order completion. Order will be overdue after this date."
msgstr ""
-#: order/models.py:664 order/models.py:1190
+#: order/models.py:680 order/models.py:1206
#: templates/js/translated/order.js:2505 templates/js/translated/order.js:2656
msgid "Shipment Date"
msgstr ""
-#: order/models.py:671
+#: order/models.py:687
msgid "shipped by"
msgstr ""
-#: order/models.py:726
+#: order/models.py:742
msgid "Order cannot be completed as no parts have been assigned"
msgstr ""
-#: order/models.py:730
+#: order/models.py:746
msgid "Only a pending order can be marked as complete"
msgstr ""
-#: order/models.py:733
+#: order/models.py:749
msgid "Order cannot be completed as there are incomplete shipments"
msgstr ""
-#: order/models.py:736
+#: order/models.py:752
msgid "Order cannot be completed as there are incomplete line items"
msgstr ""
-#: order/models.py:910
+#: order/models.py:926
msgid "Item quantity"
msgstr ""
-#: order/models.py:916
+#: order/models.py:932
msgid "Line item reference"
msgstr ""
-#: order/models.py:918
+#: order/models.py:934
msgid "Line item notes"
msgstr ""
-#: order/models.py:923
+#: order/models.py:939
msgid "Target shipping date for this line item"
msgstr ""
-#: order/models.py:941
+#: order/models.py:957
msgid "Context"
msgstr ""
-#: order/models.py:942
+#: order/models.py:958
msgid "Additional context for this line"
msgstr ""
-#: order/models.py:950
+#: order/models.py:966
msgid "Unit price"
msgstr ""
-#: order/models.py:980
+#: order/models.py:996
msgid "Supplier part must match supplier"
msgstr ""
-#: order/models.py:988
+#: order/models.py:1004
msgid "deleted"
msgstr ""
-#: order/models.py:994 order/models.py:1074 order/models.py:1099
-#: order/models.py:1184 order/models.py:1320
+#: order/models.py:1010 order/models.py:1090 order/models.py:1115
+#: order/models.py:1200 order/models.py:1336
#: templates/js/translated/order.js:3112
msgid "Order"
msgstr ""
-#: order/models.py:995 order/models.py:1074
+#: order/models.py:1011 order/models.py:1090
#: order/templates/order/order_base.html:9
#: order/templates/order/order_base.html:18
#: report/templates/report/inventree_po_report.html:76
#: stock/templates/stock/item_base.html:184
+#: templates/email/overdue_purchase_order.html:15
#: templates/js/translated/order.js:885 templates/js/translated/order.js:1621
-#: templates/js/translated/part.js:899 templates/js/translated/stock.js:1846
-#: templates/js/translated/stock.js:2412
+#: templates/js/translated/part.js:943 templates/js/translated/stock.js:1856
+#: templates/js/translated/stock.js:2422
msgid "Purchase Order"
msgstr ""
-#: order/models.py:1013
+#: order/models.py:1029
msgid "Supplier part"
msgstr ""
-#: order/models.py:1020 order/templates/order/order_base.html:169
+#: order/models.py:1036 order/templates/order/order_base.html:169
#: templates/js/translated/order.js:1318 templates/js/translated/order.js:2009
-#: templates/js/translated/part.js:993 templates/js/translated/part.js:1020
+#: templates/js/translated/part.js:1037 templates/js/translated/part.js:1064
#: templates/js/translated/table_filters.js:330
msgid "Received"
msgstr ""
-#: order/models.py:1021
+#: order/models.py:1037
msgid "Number of items received"
msgstr ""
-#: order/models.py:1028 part/templates/part/prices.html:179 stock/models.py:722
+#: order/models.py:1044 part/templates/part/prices.html:181 stock/models.py:722
#: stock/serializers.py:153 stock/templates/stock/item_base.html:191
-#: templates/js/translated/stock.js:1900
+#: templates/js/translated/stock.js:1910
msgid "Purchase Price"
msgstr ""
-#: order/models.py:1029
+#: order/models.py:1045
msgid "Unit purchase price"
msgstr ""
-#: order/models.py:1037
+#: order/models.py:1053
msgid "Where does the Purchaser want this item to be stored?"
msgstr ""
-#: order/models.py:1109 part/templates/part/part_pricing.html:112
-#: part/templates/part/prices.html:119 part/templates/part/prices.html:288
+#: order/models.py:1125 part/templates/part/part_pricing.html:115
+#: part/templates/part/prices.html:121 part/templates/part/prices.html:290
msgid "Sale Price"
msgstr ""
-#: order/models.py:1110
+#: order/models.py:1126
msgid "Unit sale price"
msgstr ""
-#: order/models.py:1115
+#: order/models.py:1131
msgid "Shipped quantity"
msgstr ""
-#: order/models.py:1191
+#: order/models.py:1207
msgid "Date of shipment"
msgstr ""
-#: order/models.py:1198
+#: order/models.py:1214
msgid "Checked By"
msgstr ""
-#: order/models.py:1199
+#: order/models.py:1215
msgid "User who checked this shipment"
msgstr ""
-#: order/models.py:1207
+#: order/models.py:1223
msgid "Shipment number"
msgstr ""
-#: order/models.py:1214
+#: order/models.py:1230
msgid "Shipment notes"
msgstr ""
-#: order/models.py:1221
+#: order/models.py:1237
msgid "Tracking Number"
msgstr ""
-#: order/models.py:1222
+#: order/models.py:1238
msgid "Shipment tracking information"
msgstr ""
-#: order/models.py:1229
+#: order/models.py:1245
msgid "Invoice Number"
msgstr ""
-#: order/models.py:1230
+#: order/models.py:1246
msgid "Reference number for associated invoice"
msgstr ""
-#: order/models.py:1248
+#: order/models.py:1264
msgid "Shipment has already been sent"
msgstr ""
-#: order/models.py:1251
+#: order/models.py:1267
msgid "Shipment has no allocated stock items"
msgstr ""
-#: order/models.py:1354 order/models.py:1356
+#: order/models.py:1370 order/models.py:1372
msgid "Stock item has not been assigned"
msgstr ""
-#: order/models.py:1360
+#: order/models.py:1376
msgid "Cannot allocate stock item to a line with a different part"
msgstr ""
-#: order/models.py:1362
+#: order/models.py:1378
msgid "Cannot allocate stock to a line without a part"
msgstr ""
-#: order/models.py:1365
+#: order/models.py:1381
msgid "Allocation quantity cannot exceed stock quantity"
msgstr ""
-#: order/models.py:1369
+#: order/models.py:1385
msgid "StockItem is over-allocated"
msgstr ""
-#: order/models.py:1375 order/serializers.py:1045
+#: order/models.py:1391 order/serializers.py:1047
msgid "Quantity must be 1 for serialized stock item"
msgstr ""
-#: order/models.py:1378
+#: order/models.py:1394
msgid "Sales order does not match shipment"
msgstr ""
-#: order/models.py:1379
+#: order/models.py:1395
msgid "Shipment does not match sales order"
msgstr ""
-#: order/models.py:1387
+#: order/models.py:1403
msgid "Line"
msgstr ""
-#: order/models.py:1395 order/serializers.py:1149 order/serializers.py:1273
+#: order/models.py:1411 order/serializers.py:1151 order/serializers.py:1275
#: templates/js/translated/model_renderers.js:301
msgid "Shipment"
msgstr ""
-#: order/models.py:1396
+#: order/models.py:1412
msgid "Sales order shipment reference"
msgstr ""
-#: order/models.py:1408 templates/InvenTree/notifications/notifications.html:70
+#: order/models.py:1424 templates/InvenTree/notifications/notifications.html:70
msgid "Item"
msgstr ""
-#: order/models.py:1409
+#: order/models.py:1425
msgid "Select stock item to allocate"
msgstr ""
-#: order/models.py:1412
+#: order/models.py:1428
msgid "Enter stock allocation quantity"
msgstr ""
@@ -3662,7 +3692,7 @@ msgstr ""
msgid "Purchase order must match supplier"
msgstr ""
-#: order/serializers.py:406 order/serializers.py:1117
+#: order/serializers.py:406 order/serializers.py:1119
msgid "Line Item"
msgstr ""
@@ -3710,42 +3740,60 @@ msgstr ""
msgid "Supplied barcode values must be unique"
msgstr ""
-#: order/serializers.py:866
+#: order/serializers.py:868
msgid "Sale price currency"
msgstr ""
-#: order/serializers.py:947
+#: order/serializers.py:949
msgid "No shipment details provided"
msgstr ""
-#: order/serializers.py:1006 order/serializers.py:1126
+#: order/serializers.py:1008 order/serializers.py:1128
msgid "Line item is not associated with this order"
msgstr ""
-#: order/serializers.py:1028
+#: order/serializers.py:1030
msgid "Quantity must be positive"
msgstr ""
-#: order/serializers.py:1139
+#: order/serializers.py:1141
msgid "Enter serial numbers to allocate"
msgstr ""
-#: order/serializers.py:1161 order/serializers.py:1281
+#: order/serializers.py:1163 order/serializers.py:1283
msgid "Shipment has already been shipped"
msgstr ""
-#: order/serializers.py:1164 order/serializers.py:1284
+#: order/serializers.py:1166 order/serializers.py:1286
msgid "Shipment is not associated with this order"
msgstr ""
-#: order/serializers.py:1214
+#: order/serializers.py:1216
msgid "No match found for the following serial numbers"
msgstr ""
-#: order/serializers.py:1224
+#: order/serializers.py:1226
msgid "The following serial numbers are already allocated"
msgstr ""
+#: order/tasks.py:26
+msgid "Overdue Purchase Order"
+msgstr ""
+
+#: order/tasks.py:31
+#, python-brace-format
+msgid "Purchase order {po} is now overdue"
+msgstr ""
+
+#: order/tasks.py:88
+msgid "Overdue Sales Order"
+msgstr ""
+
+#: order/tasks.py:93
+#, python-brace-format
+msgid "Sales order {so} is now overdue"
+msgstr ""
+
#: order/templates/order/order_base.html:33
msgid "Print purchase order report"
msgstr ""
@@ -3870,8 +3918,8 @@ msgstr ""
#: templates/js/translated/bom.js:77 templates/js/translated/build.js:427
#: templates/js/translated/build.js:579 templates/js/translated/build.js:1972
#: templates/js/translated/order.js:833 templates/js/translated/order.js:1265
-#: templates/js/translated/order.js:2731 templates/js/translated/stock.js:570
-#: templates/js/translated/stock.js:738
+#: templates/js/translated/order.js:2731 templates/js/translated/stock.js:569
+#: templates/js/translated/stock.js:737
#: templates/patterns/wizard/match_fields.html:70
msgid "Remove row"
msgstr ""
@@ -3990,7 +4038,7 @@ msgid "Pending Shipments"
msgstr ""
#: order/templates/order/sales_order_detail.html:70
-#: templates/attachment_table.html:6 templates/js/translated/bom.js:1053
+#: templates/attachment_table.html:6 templates/js/translated/bom.js:1047
#: templates/js/translated/build.js:1880
msgid "Actions"
msgstr ""
@@ -4021,47 +4069,47 @@ msgstr ""
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr ""
-#: part/api.py:481
+#: part/api.py:482
msgid "Incoming Purchase Order"
msgstr ""
-#: part/api.py:501
+#: part/api.py:502
msgid "Outgoing Sales Order"
msgstr ""
-#: part/api.py:519
+#: part/api.py:520
msgid "Stock produced by Build Order"
msgstr ""
-#: part/api.py:551
+#: part/api.py:552
msgid "Stock required for Build Order"
msgstr ""
-#: part/api.py:637
+#: part/api.py:638
msgid "Valid"
msgstr ""
-#: part/api.py:638
+#: part/api.py:639
msgid "Validate entire Bill of Materials"
msgstr ""
-#: part/api.py:644
+#: part/api.py:645
msgid "This option must be selected"
msgstr ""
-#: part/api.py:1010
+#: part/api.py:1011
msgid "Must be greater than zero"
msgstr ""
-#: part/api.py:1014
+#: part/api.py:1015
msgid "Must be a valid quantity"
msgstr ""
-#: part/api.py:1029
+#: part/api.py:1030
msgid "Specify location for initial part stock"
msgstr ""
-#: part/api.py:1060 part/api.py:1064 part/api.py:1079 part/api.py:1083
+#: part/api.py:1061 part/api.py:1065 part/api.py:1080 part/api.py:1084
msgid "This field is required"
msgstr ""
@@ -4080,17 +4128,13 @@ msgid "Available Stock"
msgstr ""
#: part/bom.py:130 part/templates/part/part_base.html:207
-#: templates/js/translated/part.js:517 templates/js/translated/part.js:537
-#: templates/js/translated/part.js:1229 templates/js/translated/part.js:1401
-#: templates/js/translated/part.js:1417
+#: templates/js/translated/part.js:561 templates/js/translated/part.js:581
+#: templates/js/translated/part.js:1273 templates/js/translated/part.js:1445
+#: templates/js/translated/part.js:1461
msgid "On Order"
msgstr ""
-#: part/forms.py:59
-msgid "Select part category"
-msgstr ""
-
-#: part/forms.py:69
+#: part/forms.py:60
msgid "Input quantity for price calculation"
msgstr ""
@@ -4106,7 +4150,7 @@ msgstr ""
msgid "Default keywords for parts in this category"
msgstr ""
-#: part/models.py:115 part/models.py:2415 part/templates/part/category.html:15
+#: part/models.py:115 part/models.py:2403 part/templates/part/category.html:15
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr ""
@@ -4123,7 +4167,7 @@ msgstr ""
#: part/templates/part/category_sidebar.html:9
#: templates/InvenTree/index.html:85 templates/InvenTree/search.html:82
#: templates/InvenTree/settings/sidebar.html:39
-#: templates/js/translated/part.js:1768 templates/js/translated/search.js:144
+#: templates/js/translated/part.js:1864 templates/js/translated/search.js:144
#: templates/navbar.html:24 users/models.py:37
msgid "Parts"
msgstr ""
@@ -4153,7 +4197,7 @@ msgstr ""
msgid "Duplicate IPN not allowed in part settings"
msgstr ""
-#: part/models.py:738 part/models.py:2469
+#: part/models.py:738 part/models.py:2457
msgid "Part name"
msgstr ""
@@ -4186,12 +4230,11 @@ msgstr ""
msgid "Part keywords to improve visibility in search results"
msgstr ""
-#: part/models.py:776 part/models.py:2171 part/models.py:2414
+#: part/models.py:776 part/models.py:2159 part/models.py:2402
#: part/templates/part/part_base.html:257
-#: part/templates/part/set_category.html:15
#: templates/InvenTree/notifications/notifications.html:65
#: templates/InvenTree/settings/settings.html:231
-#: templates/js/translated/part.js:1369
+#: templates/js/translated/part.js:1413 templates/js/translated/part.js:1639
msgid "Category"
msgstr ""
@@ -4200,8 +4243,8 @@ msgid "Part category"
msgstr ""
#: part/models.py:782 part/templates/part/part_base.html:266
-#: templates/js/translated/part.js:666 templates/js/translated/part.js:1322
-#: templates/js/translated/stock.js:1659
+#: templates/js/translated/part.js:710 templates/js/translated/part.js:1366
+#: templates/js/translated/stock.js:1669
msgid "IPN"
msgstr ""
@@ -4214,7 +4257,7 @@ msgid "Part revision or version number"
msgstr ""
#: part/models.py:790 part/templates/part/part_base.html:273
-#: report/models.py:170 templates/js/translated/part.js:670
+#: report/models.py:170 templates/js/translated/part.js:714
msgid "Revision"
msgstr ""
@@ -4302,317 +4345,321 @@ msgstr ""
msgid "Creation User"
msgstr ""
-#: part/models.py:1690
+#: part/models.py:1685
msgid "Sell multiple"
msgstr ""
-#: part/models.py:2218
+#: part/models.py:2206
msgid "Test templates can only be created for trackable parts"
msgstr ""
-#: part/models.py:2235
+#: part/models.py:2223
msgid "Test with this name already exists for this part"
msgstr ""
-#: part/models.py:2255 templates/js/translated/part.js:1819
-#: templates/js/translated/stock.js:1274
+#: part/models.py:2243 templates/js/translated/part.js:1915
+#: templates/js/translated/stock.js:1284
msgid "Test Name"
msgstr ""
-#: part/models.py:2256
+#: part/models.py:2244
msgid "Enter a name for the test"
msgstr ""
-#: part/models.py:2261
+#: part/models.py:2249
msgid "Test Description"
msgstr ""
-#: part/models.py:2262
+#: part/models.py:2250
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:2267 templates/js/translated/part.js:1828
+#: part/models.py:2255 templates/js/translated/part.js:1924
#: templates/js/translated/table_filters.js:294
msgid "Required"
msgstr ""
-#: part/models.py:2268
+#: part/models.py:2256
msgid "Is this test required to pass?"
msgstr ""
-#: part/models.py:2273 templates/js/translated/part.js:1836
+#: part/models.py:2261 templates/js/translated/part.js:1932
msgid "Requires Value"
msgstr ""
-#: part/models.py:2274
+#: part/models.py:2262
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:2279 templates/js/translated/part.js:1843
+#: part/models.py:2267 templates/js/translated/part.js:1939
msgid "Requires Attachment"
msgstr ""
-#: part/models.py:2280
+#: part/models.py:2268
msgid "Does this test require a file attachment when adding a test result?"
msgstr ""
-#: part/models.py:2288
+#: part/models.py:2276
#, python-brace-format
msgid "Illegal character in template name ({c})"
msgstr ""
-#: part/models.py:2324
+#: part/models.py:2312
msgid "Parameter template name must be unique"
msgstr ""
-#: part/models.py:2332
+#: part/models.py:2320
msgid "Parameter Name"
msgstr ""
-#: part/models.py:2339
+#: part/models.py:2327
msgid "Parameter Units"
msgstr ""
-#: part/models.py:2370
+#: part/models.py:2358
msgid "Parent Part"
msgstr ""
-#: part/models.py:2372 part/models.py:2420 part/models.py:2421
+#: part/models.py:2360 part/models.py:2408 part/models.py:2409
#: templates/InvenTree/settings/settings.html:226
msgid "Parameter Template"
msgstr ""
-#: part/models.py:2374
+#: part/models.py:2362
msgid "Data"
msgstr ""
-#: part/models.py:2374
+#: part/models.py:2362
msgid "Parameter Value"
msgstr ""
-#: part/models.py:2425 templates/InvenTree/settings/settings.html:235
+#: part/models.py:2413 templates/InvenTree/settings/settings.html:235
msgid "Default Value"
msgstr ""
-#: part/models.py:2426
+#: part/models.py:2414
msgid "Default Parameter Value"
msgstr ""
-#: part/models.py:2461
+#: part/models.py:2449
msgid "Part ID or part name"
msgstr ""
-#: part/models.py:2464 templates/js/translated/model_renderers.js:200
+#: part/models.py:2452 templates/js/translated/model_renderers.js:200
msgid "Part ID"
msgstr ""
-#: part/models.py:2465
+#: part/models.py:2453
msgid "Unique part ID value"
msgstr ""
-#: part/models.py:2468
+#: part/models.py:2456
msgid "Part Name"
msgstr ""
-#: part/models.py:2472
+#: part/models.py:2460
msgid "Part IPN"
msgstr ""
-#: part/models.py:2473
+#: part/models.py:2461
msgid "Part IPN value"
msgstr ""
-#: part/models.py:2476
+#: part/models.py:2464
msgid "Level"
msgstr ""
-#: part/models.py:2477
+#: part/models.py:2465
msgid "BOM level"
msgstr ""
-#: part/models.py:2546
+#: part/models.py:2534
msgid "Select parent part"
msgstr ""
-#: part/models.py:2554
+#: part/models.py:2542
msgid "Sub part"
msgstr ""
-#: part/models.py:2555
+#: part/models.py:2543
msgid "Select part to be used in BOM"
msgstr ""
-#: part/models.py:2561
+#: part/models.py:2549
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:2563 part/templates/part/upload_bom.html:58
-#: templates/js/translated/bom.js:877 templates/js/translated/bom.js:971
+#: part/models.py:2551 part/templates/part/upload_bom.html:58
+#: templates/js/translated/bom.js:871 templates/js/translated/bom.js:965
#: templates/js/translated/table_filters.js:92
msgid "Optional"
msgstr ""
-#: part/models.py:2563
+#: part/models.py:2551
msgid "This BOM item is optional"
msgstr ""
-#: part/models.py:2566 part/templates/part/upload_bom.html:55
+#: part/models.py:2554 part/templates/part/upload_bom.html:55
msgid "Overage"
msgstr ""
-#: part/models.py:2567
+#: part/models.py:2555
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr ""
-#: part/models.py:2570
+#: part/models.py:2558
msgid "BOM item reference"
msgstr ""
-#: part/models.py:2573
+#: part/models.py:2561
msgid "BOM item notes"
msgstr ""
-#: part/models.py:2575
+#: part/models.py:2563
msgid "Checksum"
msgstr ""
-#: part/models.py:2575
+#: part/models.py:2563
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:2579 part/templates/part/upload_bom.html:57
-#: templates/js/translated/bom.js:988
+#: part/models.py:2567 part/templates/part/upload_bom.html:57
+#: templates/js/translated/bom.js:982
#: templates/js/translated/table_filters.js:68
#: templates/js/translated/table_filters.js:88
msgid "Inherited"
msgstr ""
-#: part/models.py:2580
+#: part/models.py:2568
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr ""
-#: part/models.py:2585 part/templates/part/upload_bom.html:56
-#: templates/js/translated/bom.js:980
+#: part/models.py:2573 part/templates/part/upload_bom.html:56
+#: templates/js/translated/bom.js:974
msgid "Allow Variants"
msgstr ""
-#: part/models.py:2586
+#: part/models.py:2574
msgid "Stock items for variant parts can be used for this BOM item"
msgstr ""
-#: part/models.py:2664 stock/models.py:460
+#: part/models.py:2652 stock/models.py:460
msgid "Quantity must be integer value for trackable parts"
msgstr ""
-#: part/models.py:2673 part/models.py:2675
+#: part/models.py:2661 part/models.py:2663
msgid "Sub part must be specified"
msgstr ""
-#: part/models.py:2780
+#: part/models.py:2768
msgid "BOM Item Substitute"
msgstr ""
-#: part/models.py:2801
+#: part/models.py:2789
msgid "Substitute part cannot be the same as the master part"
msgstr ""
-#: part/models.py:2814
+#: part/models.py:2802
msgid "Parent BOM item"
msgstr ""
-#: part/models.py:2822
+#: part/models.py:2810
msgid "Substitute part"
msgstr ""
-#: part/models.py:2833
+#: part/models.py:2825
msgid "Part 1"
msgstr ""
-#: part/models.py:2837
+#: part/models.py:2829
msgid "Part 2"
msgstr ""
-#: part/models.py:2837
+#: part/models.py:2829
msgid "Select Related Part"
msgstr ""
-#: part/models.py:2868
-msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique"
+#: part/models.py:2847
+msgid "Part relationship cannot be created between a part and itself"
msgstr ""
-#: part/serializers.py:138 part/serializers.py:169 stock/serializers.py:163
+#: part/models.py:2851
+msgid "Duplicate relationship already exists"
+msgstr ""
+
+#: part/serializers.py:140 part/serializers.py:171 stock/serializers.py:163
msgid "Purchase currency of this stock item"
msgstr ""
-#: part/serializers.py:794
+#: part/serializers.py:796
msgid "Select part to copy BOM from"
msgstr ""
-#: part/serializers.py:802
+#: part/serializers.py:804
msgid "Remove Existing Data"
msgstr ""
-#: part/serializers.py:803
+#: part/serializers.py:805
msgid "Remove existing BOM items before copying"
msgstr ""
-#: part/serializers.py:808
+#: part/serializers.py:810
msgid "Include Inherited"
msgstr ""
-#: part/serializers.py:809
+#: part/serializers.py:811
msgid "Include BOM items which are inherited from templated parts"
msgstr ""
-#: part/serializers.py:814
+#: part/serializers.py:816
msgid "Skip Invalid Rows"
msgstr ""
-#: part/serializers.py:815
+#: part/serializers.py:817
msgid "Enable this option to skip invalid rows"
msgstr ""
-#: part/serializers.py:820
+#: part/serializers.py:822
msgid "Copy Substitute Parts"
msgstr ""
-#: part/serializers.py:821
+#: part/serializers.py:823
msgid "Copy substitute parts when duplicate BOM items"
msgstr ""
-#: part/serializers.py:861
+#: part/serializers.py:863
msgid "Clear Existing BOM"
msgstr ""
-#: part/serializers.py:862
+#: part/serializers.py:864
msgid "Delete existing BOM items before uploading"
msgstr ""
-#: part/serializers.py:892
+#: part/serializers.py:894
msgid "No part column specified"
msgstr ""
-#: part/serializers.py:935
+#: part/serializers.py:937
msgid "Multiple matching parts found"
msgstr ""
-#: part/serializers.py:938
+#: part/serializers.py:940
msgid "No matching part found"
msgstr ""
-#: part/serializers.py:941
+#: part/serializers.py:943
msgid "Part is not designated as a component"
msgstr ""
-#: part/serializers.py:950
+#: part/serializers.py:952
msgid "Quantity not provided"
msgstr ""
-#: part/serializers.py:958
+#: part/serializers.py:960
msgid "Invalid quantity"
msgstr ""
-#: part/serializers.py:979
+#: part/serializers.py:981
msgid "At least one BOM item is required"
msgstr ""
@@ -5088,10 +5135,10 @@ msgid "Part is virtual (not a physical part)"
msgstr ""
#: part/templates/part/part_base.html:143
-#: templates/js/translated/company.js:623
-#: templates/js/translated/company.js:882
+#: templates/js/translated/company.js:608
+#: templates/js/translated/company.js:867
#: templates/js/translated/model_renderers.js:192
-#: templates/js/translated/part.js:581 templates/js/translated/part.js:658
+#: templates/js/translated/part.js:625 templates/js/translated/part.js:702
msgid "Inactive"
msgstr ""
@@ -5120,13 +5167,13 @@ msgstr ""
msgid "Allocated to Sales Orders"
msgstr ""
-#: part/templates/part/part_base.html:232 templates/js/translated/bom.js:1009
+#: part/templates/part/part_base.html:232 templates/js/translated/bom.js:1003
msgid "Can Build"
msgstr ""
-#: part/templates/part/part_base.html:238 templates/js/translated/part.js:520
-#: templates/js/translated/part.js:540 templates/js/translated/part.js:1233
-#: templates/js/translated/part.js:1405 templates/js/translated/part.js:1421
+#: part/templates/part/part_base.html:238 templates/js/translated/part.js:564
+#: templates/js/translated/part.js:584 templates/js/translated/part.js:1277
+#: templates/js/translated/part.js:1449 templates/js/translated/part.js:1465
msgid "Building"
msgstr ""
@@ -5143,7 +5190,7 @@ msgstr ""
msgid "Search for serial number"
msgstr ""
-#: part/templates/part/part_base.html:443 part/templates/part/prices.html:147
+#: part/templates/part/part_base.html:443 part/templates/part/prices.html:149
msgid "Calculate"
msgstr ""
@@ -5161,54 +5208,55 @@ msgstr ""
#: part/templates/part/part_pricing.html:26
#: part/templates/part/part_pricing.html:52
-#: part/templates/part/part_pricing.html:100
-#: part/templates/part/part_pricing.html:115 part/templates/part/prices.html:28
-#: part/templates/part/prices.html:55 part/templates/part/prices.html:106
-#: part/templates/part/prices.html:123
+#: part/templates/part/part_pricing.html:103
+#: part/templates/part/part_pricing.html:118 part/templates/part/prices.html:28
+#: part/templates/part/prices.html:55 part/templates/part/prices.html:108
+#: part/templates/part/prices.html:125
msgid "Unit Cost"
msgstr ""
#: part/templates/part/part_pricing.html:32
#: part/templates/part/part_pricing.html:58
-#: part/templates/part/part_pricing.html:104
-#: part/templates/part/part_pricing.html:119 part/templates/part/prices.html:35
-#: part/templates/part/prices.html:62 part/templates/part/prices.html:111
-#: part/templates/part/prices.html:128
+#: part/templates/part/part_pricing.html:107
+#: part/templates/part/part_pricing.html:122 part/templates/part/prices.html:35
+#: part/templates/part/prices.html:62 part/templates/part/prices.html:113
+#: part/templates/part/prices.html:130
msgid "Total Cost"
msgstr ""
#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:43
-#: templates/js/translated/bom.js:963
+#: templates/js/translated/bom.js:957
msgid "No supplier pricing available"
msgstr ""
#: part/templates/part/part_pricing.html:48 part/templates/part/prices.html:52
-#: part/templates/part/prices.html:246
+#: part/templates/part/prices.html:248
msgid "BOM Pricing"
msgstr ""
-#: part/templates/part/part_pricing.html:65 part/templates/part/prices.html:72
+#: part/templates/part/part_pricing.html:66 part/templates/part/prices.html:72
msgid "Unit Purchase Price"
msgstr ""
-#: part/templates/part/part_pricing.html:71 part/templates/part/prices.html:79
+#: part/templates/part/part_pricing.html:72 part/templates/part/prices.html:79
msgid "Total Purchase Price"
msgstr ""
-#: part/templates/part/part_pricing.html:81 part/templates/part/prices.html:89
+#: part/templates/part/part_pricing.html:82 part/templates/part/prices.html:89
msgid "Note: BOM pricing is incomplete for this part"
msgstr ""
-#: part/templates/part/part_pricing.html:88 part/templates/part/prices.html:96
+#: part/templates/part/part_pricing.html:91 part/templates/part/prices.html:98
msgid "No BOM pricing available"
msgstr ""
-#: part/templates/part/part_pricing.html:97 part/templates/part/prices.html:105
+#: part/templates/part/part_pricing.html:100
+#: part/templates/part/prices.html:107
msgid "Internal Price"
msgstr ""
-#: part/templates/part/part_pricing.html:128
-#: part/templates/part/prices.html:137
+#: part/templates/part/part_pricing.html:131
+#: part/templates/part/prices.html:139
msgid "No pricing information is available for this part."
msgstr ""
@@ -5232,43 +5280,6 @@ msgstr ""
msgid "Select from existing images"
msgstr ""
-#: part/templates/part/partial_delete.html:9
-#, python-format
-msgid "Part '%(full_name)s' cannot be deleted as it is still marked as active.\n"
-"
Disable the \"Active\" part attribute and re-try.\n"
-" "
-msgstr ""
-
-#: part/templates/part/partial_delete.html:17
-#, python-format
-msgid "Are you sure you want to delete part '%(full_name)s'?"
-msgstr ""
-
-#: part/templates/part/partial_delete.html:22
-#, python-format
-msgid "This part is used in BOMs for %(count)s other parts. If you delete this part, the BOMs for the following parts will be updated"
-msgstr ""
-
-#: part/templates/part/partial_delete.html:32
-#, python-format
-msgid "There are %(count)s stock entries defined for this part. If you delete this part, the following stock entries will also be deleted:"
-msgstr ""
-
-#: part/templates/part/partial_delete.html:43
-#, python-format
-msgid "There are %(count)s manufacturers defined for this part. If you delete this part, the following manufacturer parts will also be deleted:"
-msgstr ""
-
-#: part/templates/part/partial_delete.html:54
-#, python-format
-msgid "There are %(count)s suppliers defined for this part. If you delete this part, the following supplier parts will also be deleted:"
-msgstr ""
-
-#: part/templates/part/partial_delete.html:67
-#, python-format
-msgid "There are %(count)s unique parts tracked for '%(full_name)s'. Deleting this part will permanently remove this tracking information."
-msgstr ""
-
#: part/templates/part/prices.html:19
msgid "Pricing ranges"
msgstr ""
@@ -5285,66 +5296,58 @@ msgstr ""
msgid "Show BOM cost"
msgstr ""
-#: part/templates/part/prices.html:120
+#: part/templates/part/prices.html:122
msgid "Show sale cost"
msgstr ""
-#: part/templates/part/prices.html:121
+#: part/templates/part/prices.html:123
msgid "Show sale price"
msgstr ""
-#: part/templates/part/prices.html:143
+#: part/templates/part/prices.html:145
msgid "Calculation parameters"
msgstr ""
-#: part/templates/part/prices.html:158 templates/js/translated/bom.js:957
+#: part/templates/part/prices.html:160 templates/js/translated/bom.js:951
msgid "Supplier Cost"
msgstr ""
-#: part/templates/part/prices.html:159 part/templates/part/prices.html:180
-#: part/templates/part/prices.html:204 part/templates/part/prices.html:234
-#: part/templates/part/prices.html:260 part/templates/part/prices.html:289
+#: part/templates/part/prices.html:161 part/templates/part/prices.html:182
+#: part/templates/part/prices.html:206 part/templates/part/prices.html:236
+#: part/templates/part/prices.html:262 part/templates/part/prices.html:291
msgid "Jump to overview"
msgstr ""
-#: part/templates/part/prices.html:184
+#: part/templates/part/prices.html:186
msgid "Stock Pricing"
msgstr ""
-#: part/templates/part/prices.html:193
+#: part/templates/part/prices.html:195
msgid "No stock pricing history is available for this part."
msgstr ""
-#: part/templates/part/prices.html:203
+#: part/templates/part/prices.html:205
msgid "Internal Cost"
msgstr ""
-#: part/templates/part/prices.html:218
+#: part/templates/part/prices.html:220
msgid "Add Internal Price Break"
msgstr ""
-#: part/templates/part/prices.html:233
+#: part/templates/part/prices.html:235
msgid "BOM Cost"
msgstr ""
-#: part/templates/part/prices.html:259
+#: part/templates/part/prices.html:261
msgid "Sale Cost"
msgstr ""
-#: part/templates/part/prices.html:300
+#: part/templates/part/prices.html:302
msgid "No sale pice history available for this part."
msgstr ""
-#: part/templates/part/set_category.html:9
-msgid "Set category for the following parts"
-msgstr ""
-
-#: part/templates/part/set_category.html:32
-msgid "Remove part"
-msgstr ""
-
-#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:543
-#: templates/js/translated/part.js:1221 templates/js/translated/part.js:1425
+#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:587
+#: templates/js/translated/part.js:1265 templates/js/translated/part.js:1469
msgid "No Stock"
msgstr ""
@@ -5407,56 +5410,39 @@ msgstr ""
msgid "{title} v{version}"
msgstr ""
-#: part/views.py:74
-msgid "Set Part Category"
-msgstr ""
-
-#: part/views.py:122
-#, python-brace-format
-msgid "Set category for {n} parts"
-msgstr ""
-
-#: part/views.py:193
+#: part/views.py:118
msgid "Match References"
msgstr ""
-#: part/views.py:494
+#: part/views.py:419
msgid "None"
msgstr ""
-#: part/views.py:556
+#: part/views.py:481
msgid "Part QR Code"
msgstr ""
-#: part/views.py:650
+#: part/views.py:575
msgid "Select Part Image"
msgstr ""
-#: part/views.py:676
+#: part/views.py:601
msgid "Updated part image"
msgstr ""
-#: part/views.py:679
+#: part/views.py:604
msgid "Part image not found"
msgstr ""
-#: part/views.py:768
-msgid "Confirm Part Deletion"
-msgstr ""
-
-#: part/views.py:776
-msgid "Part was deleted"
-msgstr ""
-
-#: part/views.py:785
+#: part/views.py:693
msgid "Part Pricing"
msgstr ""
-#: part/views.py:976
+#: part/views.py:884
msgid "Delete Part Category"
msgstr ""
-#: part/views.py:983
+#: part/views.py:891
msgid "Part category was deleted"
msgstr ""
@@ -5516,21 +5502,21 @@ msgstr "Strekkode tilknyttet lagervare"
msgid "Label printing failed"
msgstr ""
-#: plugin/builtin/integration/core_notifications.py:28
+#: plugin/builtin/integration/core_notifications.py:29
msgid "InvenTree contributors"
msgstr ""
-#: plugin/builtin/integration/core_notifications.py:29
+#: plugin/builtin/integration/core_notifications.py:30
msgid "Integrated outgoing notificaton methods"
msgstr ""
-#: plugin/builtin/integration/core_notifications.py:33
-#: plugin/builtin/integration/core_notifications.py:52
-msgid "Enable email notifications"
-msgstr ""
-
#: plugin/builtin/integration/core_notifications.py:34
#: plugin/builtin/integration/core_notifications.py:53
+msgid "Enable email notifications"
+msgstr ""
+
+#: plugin/builtin/integration/core_notifications.py:35
+#: plugin/builtin/integration/core_notifications.py:54
msgid "Allow sending of emails for event notifications"
msgstr ""
@@ -5646,15 +5632,19 @@ msgstr ""
msgid "Either packagename of URL must be provided"
msgstr ""
-#: report/api.py:166
+#: report/api.py:179
msgid "No valid objects provided to template"
msgstr ""
-#: report/api.py:198 report/api.py:239
+#: report/api.py:215 report/api.py:256
#, python-brace-format
msgid "Template file '{template}' is missing or does not exist"
msgstr ""
+#: report/api.py:359
+msgid "Test report"
+msgstr ""
+
#: report/models.py:152
msgid "Template name"
msgstr ""
@@ -5757,7 +5747,7 @@ msgstr ""
#: templates/js/translated/build.js:1173 templates/js/translated/build.js:1671
#: templates/js/translated/model_renderers.js:106
#: templates/js/translated/order.js:115 templates/js/translated/order.js:3229
-#: templates/js/translated/order.js:3318 templates/js/translated/stock.js:435
+#: templates/js/translated/order.js:3318 templates/js/translated/stock.js:434
msgid "Serial Number"
msgstr ""
@@ -5766,19 +5756,19 @@ msgid "Test Results"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:93
-#: stock/models.py:2068
+#: stock/models.py:2072
msgid "Test"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:94
-#: stock/models.py:2074
+#: stock/models.py:2078
msgid "Result"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:97
#: templates/InvenTree/settings/plugin.html:51
#: templates/InvenTree/settings/plugin_settings.html:38
-#: templates/js/translated/order.js:1669 templates/js/translated/stock.js:2340
+#: templates/js/translated/order.js:1669 templates/js/translated/stock.js:2350
msgid "Date"
msgstr ""
@@ -5796,20 +5786,20 @@ msgid "Installed Items"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:137
-#: templates/js/translated/stock.js:555 templates/js/translated/stock.js:725
-#: templates/js/translated/stock.js:2589
+#: templates/js/translated/stock.js:554 templates/js/translated/stock.js:724
+#: templates/js/translated/stock.js:2599
msgid "Serial"
msgstr ""
-#: stock/api.py:504
+#: stock/api.py:505
msgid "Quantity is required"
msgstr ""
-#: stock/api.py:511
+#: stock/api.py:512
msgid "Valid part must be supplied"
msgstr ""
-#: stock/api.py:536
+#: stock/api.py:537
msgid "Serial numbers cannot be supplied for a non-trackable part"
msgstr ""
@@ -5917,7 +5907,7 @@ msgid "Destination Sales Order"
msgstr ""
#: stock/models.py:690 stock/templates/stock/item_base.html:429
-#: templates/js/translated/stock.js:1816
+#: templates/js/translated/stock.js:1826
msgid "Expiry Date"
msgstr ""
@@ -5971,79 +5961,79 @@ msgstr ""
msgid "Serial numbers already exist: {exists}"
msgstr ""
-#: stock/models.py:1321
+#: stock/models.py:1325
msgid "Stock item has been assigned to a sales order"
msgstr ""
-#: stock/models.py:1324
+#: stock/models.py:1328
msgid "Stock item is installed in another item"
msgstr ""
-#: stock/models.py:1327
+#: stock/models.py:1331
msgid "Stock item contains other items"
msgstr ""
-#: stock/models.py:1330
+#: stock/models.py:1334
msgid "Stock item has been assigned to a customer"
msgstr ""
-#: stock/models.py:1333
+#: stock/models.py:1337
msgid "Stock item is currently in production"
msgstr ""
-#: stock/models.py:1336
+#: stock/models.py:1340
msgid "Serialized stock cannot be merged"
msgstr ""
-#: stock/models.py:1343 stock/serializers.py:908
+#: stock/models.py:1347 stock/serializers.py:895
msgid "Duplicate stock items"
msgstr ""
-#: stock/models.py:1347
+#: stock/models.py:1351
msgid "Stock items must refer to the same part"
msgstr ""
-#: stock/models.py:1351
+#: stock/models.py:1355
msgid "Stock items must refer to the same supplier part"
msgstr ""
-#: stock/models.py:1355
+#: stock/models.py:1359
msgid "Stock status codes must match"
msgstr ""
-#: stock/models.py:1524
+#: stock/models.py:1528
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:1986
+#: stock/models.py:1990
msgid "Entry notes"
msgstr ""
-#: stock/models.py:2044
+#: stock/models.py:2048
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:2050
+#: stock/models.py:2054
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:2069
+#: stock/models.py:2073
msgid "Test name"
msgstr ""
-#: stock/models.py:2075
+#: stock/models.py:2079
msgid "Test result"
msgstr ""
-#: stock/models.py:2081
+#: stock/models.py:2085
msgid "Test output value"
msgstr ""
-#: stock/models.py:2088
+#: stock/models.py:2092
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:2094
+#: stock/models.py:2098
msgid "Test notes"
msgstr ""
@@ -6064,7 +6054,7 @@ msgstr ""
msgid "Enter serial numbers for new items"
msgstr ""
-#: stock/serializers.py:309 stock/serializers.py:865 stock/serializers.py:1098
+#: stock/serializers.py:309 stock/serializers.py:852 stock/serializers.py:1085
msgid "Destination stock location"
msgstr ""
@@ -6104,63 +6094,63 @@ msgstr ""
msgid "Destination location for returned item"
msgstr ""
-#: stock/serializers.py:720
+#: stock/serializers.py:707
msgid "Part must be salable"
msgstr ""
-#: stock/serializers.py:724
+#: stock/serializers.py:711
msgid "Item is allocated to a sales order"
msgstr ""
-#: stock/serializers.py:728
+#: stock/serializers.py:715
msgid "Item is allocated to a build order"
msgstr ""
-#: stock/serializers.py:759
+#: stock/serializers.py:746
msgid "Customer to assign stock items"
msgstr ""
-#: stock/serializers.py:765
+#: stock/serializers.py:752
msgid "Selected company is not a customer"
msgstr ""
-#: stock/serializers.py:773
+#: stock/serializers.py:760
msgid "Stock assignment notes"
msgstr ""
-#: stock/serializers.py:783 stock/serializers.py:1014
+#: stock/serializers.py:770 stock/serializers.py:1001
msgid "A list of stock items must be provided"
msgstr ""
-#: stock/serializers.py:872
+#: stock/serializers.py:859
msgid "Stock merging notes"
msgstr ""
-#: stock/serializers.py:877
+#: stock/serializers.py:864
msgid "Allow mismatched suppliers"
msgstr ""
-#: stock/serializers.py:878
+#: stock/serializers.py:865
msgid "Allow stock items with different supplier parts to be merged"
msgstr ""
-#: stock/serializers.py:883
+#: stock/serializers.py:870
msgid "Allow mismatched status"
msgstr ""
-#: stock/serializers.py:884
+#: stock/serializers.py:871
msgid "Allow stock items with different status codes to be merged"
msgstr ""
-#: stock/serializers.py:894
+#: stock/serializers.py:881
msgid "At least two stock items must be provided"
msgstr ""
-#: stock/serializers.py:976
+#: stock/serializers.py:963
msgid "StockItem primary key value"
msgstr ""
-#: stock/serializers.py:1004
+#: stock/serializers.py:991
msgid "Stock transaction notes"
msgstr ""
@@ -6185,7 +6175,7 @@ msgstr ""
msgid "Test Report"
msgstr ""
-#: stock/templates/stock/item.html:94
+#: stock/templates/stock/item.html:94 stock/templates/stock/item.html:298
msgid "Delete Test Data"
msgstr ""
@@ -6197,11 +6187,15 @@ msgstr ""
msgid "Installed Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:151 templates/js/translated/stock.js:2733
+#: stock/templates/stock/item.html:151 templates/js/translated/stock.js:2743
msgid "Install Stock Item"
msgstr ""
-#: stock/templates/stock/item.html:292 templates/js/translated/stock.js:1455
+#: stock/templates/stock/item.html:290
+msgid "Delete all test results for this stock item"
+msgstr ""
+
+#: stock/templates/stock/item.html:323 templates/js/translated/stock.js:1465
msgid "Add Test Result"
msgstr ""
@@ -6388,7 +6382,7 @@ msgid "Stale"
msgstr ""
#: stock/templates/stock/item_base.html:442
-#: templates/js/translated/stock.js:1832
+#: templates/js/translated/stock.js:1842
msgid "Last Updated"
msgstr ""
@@ -6529,7 +6523,7 @@ msgstr ""
msgid "Child Items"
msgstr ""
-#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:182
+#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:144
msgid "Convert Stock Item"
msgstr ""
@@ -6550,31 +6544,19 @@ msgstr ""
msgid "This action cannot be easily undone"
msgstr ""
-#: stock/views.py:113
+#: stock/views.py:111
msgid "Stock Location QR code"
msgstr ""
-#: stock/views.py:131
-msgid "Delete All Test Data"
-msgstr ""
-
-#: stock/views.py:149
-msgid "Confirm test data deletion"
-msgstr ""
-
-#: stock/views.py:150
-msgid "Check the confirmation box"
-msgstr "Sjekk bekreftelsesboksen"
-
-#: stock/views.py:165
+#: stock/views.py:127
msgid "Stock Item QR Code"
msgstr ""
-#: stock/views.py:216
+#: stock/views.py:178
msgid "Delete Stock Location"
msgstr ""
-#: stock/views.py:229
+#: stock/views.py:191
msgid "Delete Stock Item"
msgstr ""
@@ -7317,8 +7299,8 @@ msgstr ""
#: templates/about.html:11 templates/about.html:105
#: templates/js/translated/bom.js:133 templates/js/translated/bom.js:621
-#: templates/js/translated/modals.js:56 templates/js/translated/modals.js:595
-#: templates/js/translated/modals.js:689 templates/js/translated/modals.js:997
+#: templates/js/translated/modals.js:56 templates/js/translated/modals.js:601
+#: templates/js/translated/modals.js:695 templates/js/translated/modals.js:1003
#: templates/js/translated/order.js:928 templates/modals.html:15
#: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50
msgid "Close"
@@ -7390,6 +7372,10 @@ msgstr ""
msgid "Please confirm that %(email)s is an email address for user %(user_display)s."
msgstr ""
+#: templates/account/email_confirm.html:20 templates/js/translated/forms.js:630
+msgid "Confirm"
+msgstr "Bekreft"
+
#: templates/account/email_confirm.html:27
#, python-format
msgid "This email confirmation link expired or is invalid. Please issue a new email confirmation request."
@@ -7562,7 +7548,7 @@ msgstr ""
msgid "Delete selected attachments"
msgstr ""
-#: templates/attachment_table.html:12 templates/js/translated/attachment.js:110
+#: templates/attachment_table.html:12 templates/js/translated/attachment.js:112
msgid "Delete Attachments"
msgstr ""
@@ -7596,15 +7582,15 @@ msgid "The following parts are low on required stock"
msgstr ""
#: templates/email/build_order_required_stock.html:18
-#: templates/js/translated/bom.js:1425
+#: templates/js/translated/bom.js:1419
msgid "Required Quantity"
msgstr ""
#: templates/email/build_order_required_stock.html:19
#: templates/email/low_stock_notification.html:18
-#: templates/js/translated/bom.js:890 templates/js/translated/build.js:1787
-#: templates/js/translated/build.js:2650 templates/js/translated/part.js:527
-#: templates/js/translated/part.js:530
+#: templates/js/translated/bom.js:884 templates/js/translated/build.js:1787
+#: templates/js/translated/build.js:2650 templates/js/translated/part.js:571
+#: templates/js/translated/part.js:574
#: templates/js/translated/table_filters.js:178
msgid "Available"
msgstr ""
@@ -7622,6 +7608,13 @@ msgstr ""
msgid "Minimum Quantity"
msgstr ""
+#: templates/email/new_order_assigned.html:9
+#: templates/email/overdue_build_order.html:9
+#: templates/email/overdue_purchase_order.html:9
+#: templates/email/overdue_sales_order.html:9
+msgid "Click on the following link to view this order"
+msgstr ""
+
#: templates/image_download.html:8
msgid "Specify URL for downloading image"
msgstr ""
@@ -7638,91 +7631,91 @@ msgstr ""
msgid "Remote image must not exceed maximum allowable file size"
msgstr ""
-#: templates/js/translated/api.js:235 templates/js/translated/modals.js:1067
+#: templates/js/translated/api.js:195 templates/js/translated/modals.js:1073
msgid "No Response"
msgstr ""
-#: templates/js/translated/api.js:236 templates/js/translated/modals.js:1068
+#: templates/js/translated/api.js:196 templates/js/translated/modals.js:1074
msgid "No response from the InvenTree server"
msgstr ""
-#: templates/js/translated/api.js:242
+#: templates/js/translated/api.js:202
msgid "Error 400: Bad request"
msgstr ""
-#: templates/js/translated/api.js:243
+#: templates/js/translated/api.js:203
msgid "API request returned error code 400"
msgstr ""
-#: templates/js/translated/api.js:247 templates/js/translated/modals.js:1077
+#: templates/js/translated/api.js:207 templates/js/translated/modals.js:1083
msgid "Error 401: Not Authenticated"
msgstr ""
-#: templates/js/translated/api.js:248 templates/js/translated/modals.js:1078
+#: templates/js/translated/api.js:208 templates/js/translated/modals.js:1084
msgid "Authentication credentials not supplied"
msgstr ""
-#: templates/js/translated/api.js:252 templates/js/translated/modals.js:1082
+#: templates/js/translated/api.js:212 templates/js/translated/modals.js:1088
msgid "Error 403: Permission Denied"
msgstr ""
-#: templates/js/translated/api.js:253 templates/js/translated/modals.js:1083
+#: templates/js/translated/api.js:213 templates/js/translated/modals.js:1089
msgid "You do not have the required permissions to access this function"
msgstr ""
-#: templates/js/translated/api.js:257 templates/js/translated/modals.js:1087
+#: templates/js/translated/api.js:217 templates/js/translated/modals.js:1093
msgid "Error 404: Resource Not Found"
msgstr ""
-#: templates/js/translated/api.js:258 templates/js/translated/modals.js:1088
+#: templates/js/translated/api.js:218 templates/js/translated/modals.js:1094
msgid "The requested resource could not be located on the server"
msgstr ""
-#: templates/js/translated/api.js:262
+#: templates/js/translated/api.js:222
msgid "Error 405: Method Not Allowed"
msgstr ""
-#: templates/js/translated/api.js:263
+#: templates/js/translated/api.js:223
msgid "HTTP method not allowed at URL"
msgstr ""
-#: templates/js/translated/api.js:267 templates/js/translated/modals.js:1092
+#: templates/js/translated/api.js:227 templates/js/translated/modals.js:1098
msgid "Error 408: Timeout"
msgstr ""
-#: templates/js/translated/api.js:268 templates/js/translated/modals.js:1093
+#: templates/js/translated/api.js:228 templates/js/translated/modals.js:1099
msgid "Connection timeout while requesting data from server"
msgstr ""
-#: templates/js/translated/api.js:271
+#: templates/js/translated/api.js:231
msgid "Unhandled Error Code"
msgstr ""
-#: templates/js/translated/api.js:272
+#: templates/js/translated/api.js:232
msgid "Error code"
msgstr ""
-#: templates/js/translated/attachment.js:96
+#: templates/js/translated/attachment.js:98
msgid "All selected attachments will be deleted"
msgstr ""
-#: templates/js/translated/attachment.js:156
+#: templates/js/translated/attachment.js:152
msgid "No attachments found"
msgstr ""
-#: templates/js/translated/attachment.js:180
+#: templates/js/translated/attachment.js:176
msgid "Edit Attachment"
msgstr ""
-#: templates/js/translated/attachment.js:246
+#: templates/js/translated/attachment.js:242
msgid "Upload Date"
msgstr ""
-#: templates/js/translated/attachment.js:262
+#: templates/js/translated/attachment.js:264
msgid "Edit attachment"
msgstr ""
-#: templates/js/translated/attachment.js:269
+#: templates/js/translated/attachment.js:271
msgid "Delete attachment"
msgstr ""
@@ -7755,7 +7748,7 @@ msgid "Unknown response from server"
msgstr ""
#: templates/js/translated/barcode.js:182
-#: templates/js/translated/modals.js:1057
+#: templates/js/translated/modals.js:1063
msgid "Invalid server response"
msgstr ""
@@ -7783,7 +7776,7 @@ msgstr ""
msgid "Unlink"
msgstr ""
-#: templates/js/translated/barcode.js:456 templates/js/translated/stock.js:999
+#: templates/js/translated/barcode.js:456 templates/js/translated/stock.js:998
msgid "Remove stock item"
msgstr ""
@@ -7918,89 +7911,89 @@ msgstr ""
msgid "Edit BOM Item Substitutes"
msgstr ""
-#: templates/js/translated/bom.js:682
+#: templates/js/translated/bom.js:684
msgid "All selected BOM items will be deleted"
msgstr ""
-#: templates/js/translated/bom.js:697
+#: templates/js/translated/bom.js:699
msgid "Delete selected BOM items?"
msgstr ""
-#: templates/js/translated/bom.js:824
+#: templates/js/translated/bom.js:818
msgid "Load BOM for subassembly"
msgstr ""
-#: templates/js/translated/bom.js:834
+#: templates/js/translated/bom.js:828
msgid "Substitutes Available"
msgstr ""
-#: templates/js/translated/bom.js:838 templates/js/translated/build.js:1769
+#: templates/js/translated/bom.js:832 templates/js/translated/build.js:1769
msgid "Variant stock allowed"
msgstr ""
-#: templates/js/translated/bom.js:906 templates/js/translated/build.js:1814
+#: templates/js/translated/bom.js:900 templates/js/translated/build.js:1814
#: templates/js/translated/order.js:3562
msgid "No Stock Available"
msgstr ""
-#: templates/js/translated/bom.js:910 templates/js/translated/build.js:1818
+#: templates/js/translated/bom.js:904 templates/js/translated/build.js:1818
msgid "Includes variant and substitute stock"
msgstr ""
-#: templates/js/translated/bom.js:912 templates/js/translated/build.js:1820
-#: templates/js/translated/part.js:690
+#: templates/js/translated/bom.js:906 templates/js/translated/build.js:1820
+#: templates/js/translated/part.js:734
msgid "Includes variant stock"
msgstr ""
-#: templates/js/translated/bom.js:914 templates/js/translated/build.js:1822
+#: templates/js/translated/bom.js:908 templates/js/translated/build.js:1822
msgid "Includes substitute stock"
msgstr ""
-#: templates/js/translated/bom.js:928
+#: templates/js/translated/bom.js:922
msgid "Substitutes"
msgstr ""
-#: templates/js/translated/bom.js:943
+#: templates/js/translated/bom.js:937
msgid "Purchase Price Range"
msgstr ""
-#: templates/js/translated/bom.js:950
+#: templates/js/translated/bom.js:944
msgid "Purchase Price Average"
msgstr ""
-#: templates/js/translated/bom.js:999 templates/js/translated/bom.js:1090
+#: templates/js/translated/bom.js:993 templates/js/translated/bom.js:1084
msgid "View BOM"
msgstr ""
-#: templates/js/translated/bom.js:1061
+#: templates/js/translated/bom.js:1055
msgid "Validate BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:1063
+#: templates/js/translated/bom.js:1057
msgid "This line has been validated"
msgstr ""
-#: templates/js/translated/bom.js:1065
+#: templates/js/translated/bom.js:1059
msgid "Edit substitute parts"
msgstr ""
-#: templates/js/translated/bom.js:1067 templates/js/translated/bom.js:1228
+#: templates/js/translated/bom.js:1061 templates/js/translated/bom.js:1222
msgid "Edit BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:1069
+#: templates/js/translated/bom.js:1063
msgid "Delete BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:1164 templates/js/translated/build.js:1615
+#: templates/js/translated/bom.js:1158 templates/js/translated/build.js:1615
msgid "No BOM items found"
msgstr ""
-#: templates/js/translated/bom.js:1408 templates/js/translated/build.js:1753
+#: templates/js/translated/bom.js:1402 templates/js/translated/build.js:1753
msgid "Required Part"
msgstr ""
-#: templates/js/translated/bom.js:1430
+#: templates/js/translated/bom.js:1424
msgid "Inherited from parent BOM"
msgstr ""
@@ -8040,13 +8033,13 @@ msgstr ""
msgid "Complete Build Order"
msgstr ""
-#: templates/js/translated/build.js:259 templates/js/translated/stock.js:91
-#: templates/js/translated/stock.js:181
+#: templates/js/translated/build.js:259 templates/js/translated/stock.js:90
+#: templates/js/translated/stock.js:180
msgid "Next available serial number"
msgstr ""
-#: templates/js/translated/build.js:261 templates/js/translated/stock.js:93
-#: templates/js/translated/stock.js:183
+#: templates/js/translated/build.js:261 templates/js/translated/stock.js:92
+#: templates/js/translated/stock.js:182
msgid "Latest serial number"
msgstr ""
@@ -8259,9 +8252,9 @@ msgstr ""
msgid "No builds matching query"
msgstr ""
-#: templates/js/translated/build.js:2448 templates/js/translated/part.js:1314
-#: templates/js/translated/part.js:1729 templates/js/translated/stock.js:1619
-#: templates/js/translated/stock.js:2277
+#: templates/js/translated/build.js:2448 templates/js/translated/part.js:1358
+#: templates/js/translated/part.js:1825 templates/js/translated/stock.js:1629
+#: templates/js/translated/stock.js:2287
msgid "Select"
msgstr ""
@@ -8273,7 +8266,7 @@ msgstr ""
msgid "Progress"
msgstr ""
-#: templates/js/translated/build.js:2532 templates/js/translated/stock.js:2519
+#: templates/js/translated/build.js:2532 templates/js/translated/stock.js:2529
msgid "No user information"
msgstr ""
@@ -8285,107 +8278,107 @@ msgstr ""
msgid "No parts allocated for"
msgstr ""
-#: templates/js/translated/company.js:66
+#: templates/js/translated/company.js:65
msgid "Add Manufacturer"
msgstr ""
-#: templates/js/translated/company.js:79 templates/js/translated/company.js:169
+#: templates/js/translated/company.js:78 templates/js/translated/company.js:168
msgid "Add Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:100
+#: templates/js/translated/company.js:99
msgid "Edit Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:157 templates/js/translated/order.js:506
+#: templates/js/translated/company.js:156 templates/js/translated/order.js:506
msgid "Add Supplier"
msgstr ""
-#: templates/js/translated/company.js:185
+#: templates/js/translated/company.js:184
msgid "Add Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:200
+#: templates/js/translated/company.js:199
msgid "Edit Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:248
+#: templates/js/translated/company.js:249
msgid "All selected supplier parts will be deleted"
msgstr "Alle valgte leverandørdeler vil slettes"
-#: templates/js/translated/company.js:263
+#: templates/js/translated/company.js:264
msgid "Delete Supplier Parts"
msgstr ""
-#: templates/js/translated/company.js:342
+#: templates/js/translated/company.js:336
msgid "Add new Company"
msgstr ""
-#: templates/js/translated/company.js:419
+#: templates/js/translated/company.js:413
msgid "Parts Supplied"
msgstr ""
-#: templates/js/translated/company.js:428
+#: templates/js/translated/company.js:422
msgid "Parts Manufactured"
msgstr ""
-#: templates/js/translated/company.js:443
+#: templates/js/translated/company.js:437
msgid "No company information found"
msgstr ""
-#: templates/js/translated/company.js:482
+#: templates/js/translated/company.js:478
msgid "All selected manufacturer parts will be deleted"
msgstr ""
-#: templates/js/translated/company.js:496
+#: templates/js/translated/company.js:492
msgid "Delete Manufacturer Parts"
msgstr ""
-#: templates/js/translated/company.js:535
+#: templates/js/translated/company.js:526
msgid "All selected parameters will be deleted"
msgstr ""
-#: templates/js/translated/company.js:548
+#: templates/js/translated/company.js:539
msgid "Delete Parameters"
msgstr ""
-#: templates/js/translated/company.js:595
+#: templates/js/translated/company.js:580
msgid "No manufacturer parts found"
msgstr ""
-#: templates/js/translated/company.js:615
-#: templates/js/translated/company.js:874 templates/js/translated/part.js:565
-#: templates/js/translated/part.js:650
+#: templates/js/translated/company.js:600
+#: templates/js/translated/company.js:859 templates/js/translated/part.js:609
+#: templates/js/translated/part.js:694
msgid "Template part"
msgstr ""
-#: templates/js/translated/company.js:619
-#: templates/js/translated/company.js:878 templates/js/translated/part.js:569
-#: templates/js/translated/part.js:654
+#: templates/js/translated/company.js:604
+#: templates/js/translated/company.js:863 templates/js/translated/part.js:613
+#: templates/js/translated/part.js:698
msgid "Assembled part"
msgstr ""
-#: templates/js/translated/company.js:747 templates/js/translated/part.js:757
+#: templates/js/translated/company.js:732 templates/js/translated/part.js:801
msgid "No parameters found"
msgstr ""
-#: templates/js/translated/company.js:784 templates/js/translated/part.js:799
+#: templates/js/translated/company.js:769 templates/js/translated/part.js:843
msgid "Edit parameter"
msgstr ""
-#: templates/js/translated/company.js:785 templates/js/translated/part.js:800
+#: templates/js/translated/company.js:770 templates/js/translated/part.js:844
msgid "Delete parameter"
msgstr ""
-#: templates/js/translated/company.js:804 templates/js/translated/part.js:817
+#: templates/js/translated/company.js:789 templates/js/translated/part.js:861
msgid "Edit Parameter"
msgstr ""
-#: templates/js/translated/company.js:815 templates/js/translated/part.js:829
+#: templates/js/translated/company.js:800 templates/js/translated/part.js:873
msgid "Delete Parameter"
msgstr ""
-#: templates/js/translated/company.js:854
+#: templates/js/translated/company.js:839
msgid "No supplier parts found"
msgstr ""
@@ -8448,36 +8441,36 @@ msgstr ""
msgid "Keep this form open"
msgstr ""
-#: templates/js/translated/forms.js:756
+#: templates/js/translated/forms.js:757
msgid "Enter a valid number"
msgstr ""
-#: templates/js/translated/forms.js:1248 templates/modals.html:19
+#: templates/js/translated/forms.js:1249 templates/modals.html:19
#: templates/modals.html:43
msgid "Form errors exist"
msgstr ""
-#: templates/js/translated/forms.js:1681
+#: templates/js/translated/forms.js:1682
msgid "No results found"
msgstr ""
-#: templates/js/translated/forms.js:1896 templates/search.html:29
+#: templates/js/translated/forms.js:1897 templates/search.html:29
msgid "Searching"
msgstr ""
-#: templates/js/translated/forms.js:2149
+#: templates/js/translated/forms.js:2150
msgid "Clear input"
msgstr ""
-#: templates/js/translated/forms.js:2615
+#: templates/js/translated/forms.js:2616
msgid "File Column"
msgstr ""
-#: templates/js/translated/forms.js:2615
+#: templates/js/translated/forms.js:2616
msgid "Field Name"
msgstr ""
-#: templates/js/translated/forms.js:2627
+#: templates/js/translated/forms.js:2628
msgid "Select Columns"
msgstr ""
@@ -8498,7 +8491,7 @@ msgid "Labels sent to printer"
msgstr ""
#: templates/js/translated/label.js:60 templates/js/translated/report.js:118
-#: templates/js/translated/stock.js:1023
+#: templates/js/translated/stock.js:1022
msgid "Select Stock Items"
msgstr ""
@@ -8552,12 +8545,12 @@ msgid "Select Label Template"
msgstr ""
#: templates/js/translated/modals.js:82 templates/js/translated/modals.js:142
-#: templates/js/translated/modals.js:621
+#: templates/js/translated/modals.js:627
msgid "Cancel"
msgstr ""
#: templates/js/translated/modals.js:83 templates/js/translated/modals.js:141
-#: templates/js/translated/modals.js:688 templates/js/translated/modals.js:996
+#: templates/js/translated/modals.js:694 templates/js/translated/modals.js:1002
#: templates/modals.html:28 templates/modals.html:51
msgid "Submit"
msgstr ""
@@ -8566,47 +8559,47 @@ msgstr ""
msgid "Form Title"
msgstr ""
-#: templates/js/translated/modals.js:403
+#: templates/js/translated/modals.js:421
msgid "Waiting for server..."
msgstr ""
-#: templates/js/translated/modals.js:562
+#: templates/js/translated/modals.js:568
msgid "Show Error Information"
msgstr ""
-#: templates/js/translated/modals.js:620
+#: templates/js/translated/modals.js:626
msgid "Accept"
msgstr ""
-#: templates/js/translated/modals.js:677
+#: templates/js/translated/modals.js:683
msgid "Loading Data"
msgstr ""
-#: templates/js/translated/modals.js:948
+#: templates/js/translated/modals.js:954
msgid "Invalid response from server"
msgstr ""
-#: templates/js/translated/modals.js:948
+#: templates/js/translated/modals.js:954
msgid "Form data missing from server response"
msgstr ""
-#: templates/js/translated/modals.js:960
+#: templates/js/translated/modals.js:966
msgid "Error posting form data"
msgstr ""
-#: templates/js/translated/modals.js:1057
+#: templates/js/translated/modals.js:1063
msgid "JSON response missing form data"
msgstr ""
-#: templates/js/translated/modals.js:1072
+#: templates/js/translated/modals.js:1078
msgid "Error 400: Bad Request"
msgstr ""
-#: templates/js/translated/modals.js:1073
+#: templates/js/translated/modals.js:1079
msgid "Server returned error code 400"
msgstr ""
-#: templates/js/translated/modals.js:1096
+#: templates/js/translated/modals.js:1102
msgid "Error requesting form data"
msgstr ""
@@ -8656,11 +8649,11 @@ msgstr ""
msgid "Mark as read"
msgstr ""
-#: templates/js/translated/notification.js:259
+#: templates/js/translated/notification.js:260
msgid "No unread notifications"
msgstr ""
-#: templates/js/translated/notification.js:300 templates/notifications.html:10
+#: templates/js/translated/notification.js:302 templates/notifications.html:10
msgid "Notifications will load here"
msgstr ""
@@ -8804,7 +8797,7 @@ msgstr ""
msgid "Quantity to receive"
msgstr ""
-#: templates/js/translated/order.js:1225 templates/js/translated/stock.js:2080
+#: templates/js/translated/order.js:1225 templates/js/translated/stock.js:2090
msgid "Stock Status"
msgstr ""
@@ -8828,7 +8821,7 @@ msgstr ""
msgid "Receive Purchase Order Items"
msgstr ""
-#: templates/js/translated/order.js:1602 templates/js/translated/part.js:870
+#: templates/js/translated/order.js:1602 templates/js/translated/part.js:914
msgid "No purchase orders found"
msgstr ""
@@ -8863,7 +8856,7 @@ msgstr ""
#: templates/js/translated/order.js:1937 templates/js/translated/order.js:2139
#: templates/js/translated/order.js:3467 templates/js/translated/order.js:3978
-#: templates/js/translated/part.js:1948 templates/js/translated/part.js:2301
+#: templates/js/translated/part.js:2044 templates/js/translated/part.js:2397
msgid "Unit Price"
msgstr ""
@@ -8873,11 +8866,11 @@ msgid "Total Price"
msgstr ""
#: templates/js/translated/order.js:1993 templates/js/translated/order.js:3525
-#: templates/js/translated/part.js:979
+#: templates/js/translated/part.js:1023
msgid "This line item is overdue"
msgstr ""
-#: templates/js/translated/order.js:2052 templates/js/translated/part.js:1025
+#: templates/js/translated/order.js:2052 templates/js/translated/part.js:1069
msgid "Receive line item"
msgstr ""
@@ -8998,7 +8991,7 @@ msgid "Delete Stock Allocation"
msgstr ""
#: templates/js/translated/order.js:3243 templates/js/translated/order.js:3332
-#: templates/js/translated/stock.js:1535
+#: templates/js/translated/stock.js:1545
msgid "Shipped to customer"
msgstr ""
@@ -9138,165 +9131,209 @@ msgstr ""
msgid "Create Part Variant"
msgstr ""
+#: templates/js/translated/part.js:405
+msgid "Active Part"
+msgstr ""
+
+#: templates/js/translated/part.js:406
+msgid "Part cannot be deleted as it is currently active"
+msgstr ""
+
+#: templates/js/translated/part.js:420
+msgid "Deleting this part cannot be reversed"
+msgstr ""
+
+#: templates/js/translated/part.js:422
+msgid "Any stock items for this part will be deleted"
+msgstr ""
+
#: templates/js/translated/part.js:423
+msgid "This part will be removed from any Bills of Material"
+msgstr ""
+
+#: templates/js/translated/part.js:424
+msgid "All manufacturer and supplier information for this part will be deleted"
+msgstr ""
+
+#: templates/js/translated/part.js:431
+msgid "Delete Part"
+msgstr ""
+
+#: templates/js/translated/part.js:467
msgid "You are subscribed to notifications for this item"
msgstr ""
-#: templates/js/translated/part.js:425
+#: templates/js/translated/part.js:469
msgid "You have subscribed to notifications for this item"
msgstr ""
-#: templates/js/translated/part.js:430
+#: templates/js/translated/part.js:474
msgid "Subscribe to notifications for this item"
msgstr ""
-#: templates/js/translated/part.js:432
+#: templates/js/translated/part.js:476
msgid "You have unsubscribed to notifications for this item"
msgstr ""
-#: templates/js/translated/part.js:449
+#: templates/js/translated/part.js:493
msgid "Validating the BOM will mark each line item as valid"
msgstr ""
-#: templates/js/translated/part.js:459
+#: templates/js/translated/part.js:503
msgid "Validate Bill of Materials"
msgstr ""
-#: templates/js/translated/part.js:462
+#: templates/js/translated/part.js:506
msgid "Validated Bill of Materials"
msgstr ""
-#: templates/js/translated/part.js:487
+#: templates/js/translated/part.js:531
msgid "Copy Bill of Materials"
msgstr ""
-#: templates/js/translated/part.js:513 templates/js/translated/part.js:1397
+#: templates/js/translated/part.js:557 templates/js/translated/part.js:1441
#: templates/js/translated/table_filters.js:452
msgid "Low stock"
msgstr ""
-#: templates/js/translated/part.js:523 templates/js/translated/part.js:1409
+#: templates/js/translated/part.js:567 templates/js/translated/part.js:1453
msgid "No stock available"
msgstr ""
-#: templates/js/translated/part.js:557 templates/js/translated/part.js:642
+#: templates/js/translated/part.js:601 templates/js/translated/part.js:686
msgid "Trackable part"
msgstr ""
-#: templates/js/translated/part.js:561 templates/js/translated/part.js:646
+#: templates/js/translated/part.js:605 templates/js/translated/part.js:690
msgid "Virtual part"
msgstr ""
-#: templates/js/translated/part.js:573
+#: templates/js/translated/part.js:617
msgid "Subscribed part"
msgstr ""
-#: templates/js/translated/part.js:577
+#: templates/js/translated/part.js:621
msgid "Salable part"
msgstr ""
-#: templates/js/translated/part.js:705
+#: templates/js/translated/part.js:749
msgid "No variants found"
msgstr ""
-#: templates/js/translated/part.js:1095
+#: templates/js/translated/part.js:1139
msgid "Delete part relationship"
msgstr ""
-#: templates/js/translated/part.js:1119
+#: templates/js/translated/part.js:1163
msgid "Delete Part Relationship"
msgstr ""
-#: templates/js/translated/part.js:1184 templates/js/translated/part.js:1480
+#: templates/js/translated/part.js:1228 templates/js/translated/part.js:1524
msgid "No parts found"
msgstr ""
-#: templates/js/translated/part.js:1223
+#: templates/js/translated/part.js:1267
msgid "Not available"
msgstr ""
-#: templates/js/translated/part.js:1374
+#: templates/js/translated/part.js:1418
msgid "No category"
msgstr ""
-#: templates/js/translated/part.js:1504 templates/js/translated/part.js:1664
-#: templates/js/translated/stock.js:2238
+#: templates/js/translated/part.js:1548 templates/js/translated/part.js:1760
+#: templates/js/translated/stock.js:2248
msgid "Display as list"
msgstr ""
-#: templates/js/translated/part.js:1520
+#: templates/js/translated/part.js:1564
msgid "Display as grid"
msgstr ""
-#: templates/js/translated/part.js:1683 templates/js/translated/stock.js:2257
+#: templates/js/translated/part.js:1630
+msgid "Set the part category for the selected parts"
+msgstr ""
+
+#: templates/js/translated/part.js:1635
+msgid "Set Part Category"
+msgstr ""
+
+#: templates/js/translated/part.js:1640
+msgid "Select Part Category"
+msgstr ""
+
+#: templates/js/translated/part.js:1653
+msgid "Category is required"
+msgstr ""
+
+#: templates/js/translated/part.js:1779 templates/js/translated/stock.js:2267
msgid "Display as tree"
msgstr ""
-#: templates/js/translated/part.js:1747
+#: templates/js/translated/part.js:1843
msgid "Subscribed category"
msgstr ""
-#: templates/js/translated/part.js:1761 templates/js/translated/stock.js:2301
+#: templates/js/translated/part.js:1857 templates/js/translated/stock.js:2311
msgid "Path"
msgstr ""
-#: templates/js/translated/part.js:1805
+#: templates/js/translated/part.js:1901
msgid "No test templates matching query"
msgstr ""
-#: templates/js/translated/part.js:1856 templates/js/translated/stock.js:1233
+#: templates/js/translated/part.js:1952 templates/js/translated/stock.js:1243
msgid "Edit test result"
msgstr ""
-#: templates/js/translated/part.js:1857 templates/js/translated/stock.js:1234
-#: templates/js/translated/stock.js:1493
+#: templates/js/translated/part.js:1953 templates/js/translated/stock.js:1244
+#: templates/js/translated/stock.js:1503
msgid "Delete test result"
msgstr ""
-#: templates/js/translated/part.js:1863
+#: templates/js/translated/part.js:1959
msgid "This test is defined for a parent part"
msgstr ""
-#: templates/js/translated/part.js:1885
+#: templates/js/translated/part.js:1981
msgid "Edit Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:1899
+#: templates/js/translated/part.js:1995
msgid "Delete Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:1924
+#: templates/js/translated/part.js:2020
#, python-brace-format
msgid "No ${human_name} information found"
msgstr ""
-#: templates/js/translated/part.js:1981
+#: templates/js/translated/part.js:2077
#, python-brace-format
msgid "Edit ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:1982
+#: templates/js/translated/part.js:2078
#, python-brace-format
msgid "Delete ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:2096
+#: templates/js/translated/part.js:2192
msgid "Current Stock"
msgstr ""
-#: templates/js/translated/part.js:2129
+#: templates/js/translated/part.js:2225
msgid "No scheduling information available for this part"
msgstr ""
-#: templates/js/translated/part.js:2155
+#: templates/js/translated/part.js:2251
msgid "Scheduled Stock Quantities"
msgstr ""
-#: templates/js/translated/part.js:2225
+#: templates/js/translated/part.js:2321
msgid "Single Price"
msgstr ""
-#: templates/js/translated/part.js:2244
+#: templates/js/translated/part.js:2340
msgid "Single Price Difference"
msgstr ""
@@ -9378,360 +9415,360 @@ msgstr ""
msgid "Remove results"
msgstr ""
-#: templates/js/translated/stock.js:73
+#: templates/js/translated/stock.js:72
msgid "Serialize Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:101
+#: templates/js/translated/stock.js:100
msgid "Confirm Stock Serialization"
msgstr ""
-#: templates/js/translated/stock.js:110
+#: templates/js/translated/stock.js:109
msgid "Parent stock location"
msgstr ""
-#: templates/js/translated/stock.js:139
+#: templates/js/translated/stock.js:138
msgid "Edit Stock Location"
msgstr ""
-#: templates/js/translated/stock.js:154
+#: templates/js/translated/stock.js:153
msgid "New Stock Location"
msgstr ""
-#: templates/js/translated/stock.js:194
+#: templates/js/translated/stock.js:193
msgid "This part cannot be serialized"
msgstr ""
-#: templates/js/translated/stock.js:233
+#: templates/js/translated/stock.js:232
msgid "Enter initial quantity for this stock item"
msgstr ""
-#: templates/js/translated/stock.js:239
+#: templates/js/translated/stock.js:238
msgid "Enter serial numbers for new stock (or leave blank)"
msgstr ""
-#: templates/js/translated/stock.js:304
+#: templates/js/translated/stock.js:303
msgid "Stock item duplicated"
msgstr ""
-#: templates/js/translated/stock.js:324
+#: templates/js/translated/stock.js:323
msgid "Duplicate Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:344
+#: templates/js/translated/stock.js:343
msgid "Edit Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:394
+#: templates/js/translated/stock.js:393
msgid "Created new stock item"
msgstr ""
-#: templates/js/translated/stock.js:407
+#: templates/js/translated/stock.js:406
msgid "Created multiple stock items"
msgstr ""
-#: templates/js/translated/stock.js:432
+#: templates/js/translated/stock.js:431
msgid "Find Serial Number"
msgstr ""
-#: templates/js/translated/stock.js:436 templates/js/translated/stock.js:437
+#: templates/js/translated/stock.js:435 templates/js/translated/stock.js:436
msgid "Enter serial number"
msgstr ""
-#: templates/js/translated/stock.js:453
+#: templates/js/translated/stock.js:452
msgid "Enter a serial number"
msgstr ""
-#: templates/js/translated/stock.js:473
+#: templates/js/translated/stock.js:472
msgid "No matching serial number"
msgstr ""
-#: templates/js/translated/stock.js:482
+#: templates/js/translated/stock.js:481
msgid "More than one matching result found"
msgstr ""
-#: templates/js/translated/stock.js:605
+#: templates/js/translated/stock.js:604
msgid "Confirm stock assignment"
msgstr ""
-#: templates/js/translated/stock.js:606
+#: templates/js/translated/stock.js:605
msgid "Assign Stock to Customer"
msgstr ""
-#: templates/js/translated/stock.js:683
+#: templates/js/translated/stock.js:682
msgid "Warning: Merge operation cannot be reversed"
msgstr ""
-#: templates/js/translated/stock.js:684
+#: templates/js/translated/stock.js:683
msgid "Some information will be lost when merging stock items"
msgstr ""
-#: templates/js/translated/stock.js:686
+#: templates/js/translated/stock.js:685
msgid "Stock transaction history will be deleted for merged items"
msgstr ""
-#: templates/js/translated/stock.js:687
+#: templates/js/translated/stock.js:686
msgid "Supplier part information will be deleted for merged items"
msgstr ""
-#: templates/js/translated/stock.js:773
+#: templates/js/translated/stock.js:772
msgid "Confirm stock item merge"
msgstr ""
-#: templates/js/translated/stock.js:774
+#: templates/js/translated/stock.js:773
msgid "Merge Stock Items"
msgstr ""
-#: templates/js/translated/stock.js:869
+#: templates/js/translated/stock.js:868
msgid "Transfer Stock"
msgstr ""
-#: templates/js/translated/stock.js:870
+#: templates/js/translated/stock.js:869
msgid "Move"
msgstr ""
-#: templates/js/translated/stock.js:876
+#: templates/js/translated/stock.js:875
msgid "Count Stock"
msgstr ""
-#: templates/js/translated/stock.js:877
+#: templates/js/translated/stock.js:876
msgid "Count"
msgstr ""
-#: templates/js/translated/stock.js:881
+#: templates/js/translated/stock.js:880
msgid "Remove Stock"
msgstr ""
-#: templates/js/translated/stock.js:882
+#: templates/js/translated/stock.js:881
msgid "Take"
msgstr ""
-#: templates/js/translated/stock.js:886
+#: templates/js/translated/stock.js:885
msgid "Add Stock"
msgstr ""
-#: templates/js/translated/stock.js:887 users/models.py:215
+#: templates/js/translated/stock.js:886 users/models.py:215
msgid "Add"
msgstr ""
-#: templates/js/translated/stock.js:891
+#: templates/js/translated/stock.js:890
msgid "Delete Stock"
msgstr ""
-#: templates/js/translated/stock.js:984
+#: templates/js/translated/stock.js:983
msgid "Quantity cannot be adjusted for serialized stock"
msgstr ""
-#: templates/js/translated/stock.js:984
+#: templates/js/translated/stock.js:983
msgid "Specify stock quantity"
msgstr ""
-#: templates/js/translated/stock.js:1024
+#: templates/js/translated/stock.js:1023
msgid "You must select at least one available stock item"
msgstr ""
-#: templates/js/translated/stock.js:1047
+#: templates/js/translated/stock.js:1046
msgid "Confirm stock adjustment"
msgstr ""
-#: templates/js/translated/stock.js:1172
+#: templates/js/translated/stock.js:1182
msgid "PASS"
msgstr ""
-#: templates/js/translated/stock.js:1174
+#: templates/js/translated/stock.js:1184
msgid "FAIL"
msgstr ""
-#: templates/js/translated/stock.js:1179
+#: templates/js/translated/stock.js:1189
msgid "NO RESULT"
msgstr ""
-#: templates/js/translated/stock.js:1226
+#: templates/js/translated/stock.js:1236
msgid "Pass test"
msgstr ""
-#: templates/js/translated/stock.js:1229
+#: templates/js/translated/stock.js:1239
msgid "Add test result"
msgstr ""
-#: templates/js/translated/stock.js:1255
+#: templates/js/translated/stock.js:1265
msgid "No test results found"
msgstr ""
-#: templates/js/translated/stock.js:1311
+#: templates/js/translated/stock.js:1321
msgid "Test Date"
msgstr ""
-#: templates/js/translated/stock.js:1476
+#: templates/js/translated/stock.js:1486
msgid "Edit Test Result"
msgstr ""
-#: templates/js/translated/stock.js:1498
+#: templates/js/translated/stock.js:1508
msgid "Delete Test Result"
msgstr ""
-#: templates/js/translated/stock.js:1527
+#: templates/js/translated/stock.js:1537
msgid "In production"
msgstr ""
-#: templates/js/translated/stock.js:1531
+#: templates/js/translated/stock.js:1541
msgid "Installed in Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:1539
+#: templates/js/translated/stock.js:1549
msgid "Assigned to Sales Order"
msgstr ""
-#: templates/js/translated/stock.js:1545
+#: templates/js/translated/stock.js:1555
msgid "No stock location set"
msgstr ""
-#: templates/js/translated/stock.js:1712
+#: templates/js/translated/stock.js:1722
msgid "Stock item is in production"
msgstr ""
-#: templates/js/translated/stock.js:1717
+#: templates/js/translated/stock.js:1727
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:1720
+#: templates/js/translated/stock.js:1730
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:1723
+#: templates/js/translated/stock.js:1733
msgid "Serialized stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:1725
+#: templates/js/translated/stock.js:1735
msgid "Stock item has been fully allocated"
msgstr ""
-#: templates/js/translated/stock.js:1727
+#: templates/js/translated/stock.js:1737
msgid "Stock item has been partially allocated"
msgstr ""
-#: templates/js/translated/stock.js:1730
+#: templates/js/translated/stock.js:1740
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:1734
+#: templates/js/translated/stock.js:1744
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:1736
+#: templates/js/translated/stock.js:1746
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:1743
+#: templates/js/translated/stock.js:1753
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:1745
+#: templates/js/translated/stock.js:1755
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:1747
+#: templates/js/translated/stock.js:1757
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:1751
+#: templates/js/translated/stock.js:1761
#: templates/js/translated/table_filters.js:188
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:1802
+#: templates/js/translated/stock.js:1812
msgid "Stocktake"
msgstr ""
-#: templates/js/translated/stock.js:1884
+#: templates/js/translated/stock.js:1894
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:1922
+#: templates/js/translated/stock.js:1932
msgid "No stock items matching query"
msgstr ""
-#: templates/js/translated/stock.js:2095
+#: templates/js/translated/stock.js:2105
msgid "Set Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:2109
+#: templates/js/translated/stock.js:2119
msgid "Select Status Code"
msgstr ""
-#: templates/js/translated/stock.js:2110
+#: templates/js/translated/stock.js:2120
msgid "Status code must be selected"
msgstr ""
-#: templates/js/translated/stock.js:2365
+#: templates/js/translated/stock.js:2375
msgid "Details"
msgstr ""
-#: templates/js/translated/stock.js:2381
+#: templates/js/translated/stock.js:2391
msgid "Part information unavailable"
msgstr ""
-#: templates/js/translated/stock.js:2403
+#: templates/js/translated/stock.js:2413
msgid "Location no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2422
+#: templates/js/translated/stock.js:2432
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2441
+#: templates/js/translated/stock.js:2451
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2459
+#: templates/js/translated/stock.js:2469
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2482
+#: templates/js/translated/stock.js:2492
msgid "Added"
msgstr ""
-#: templates/js/translated/stock.js:2490
+#: templates/js/translated/stock.js:2500
msgid "Removed"
msgstr ""
-#: templates/js/translated/stock.js:2566
+#: templates/js/translated/stock.js:2576
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:2617 templates/js/translated/stock.js:2653
+#: templates/js/translated/stock.js:2627 templates/js/translated/stock.js:2663
msgid "Uninstall Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:2666
+#: templates/js/translated/stock.js:2676
msgid "Select stock item to uninstall"
msgstr ""
-#: templates/js/translated/stock.js:2687
+#: templates/js/translated/stock.js:2697
msgid "Install another stock item into this item"
msgstr ""
-#: templates/js/translated/stock.js:2688
+#: templates/js/translated/stock.js:2698
msgid "Stock items can only be installed if they meet the following criteria"
msgstr ""
-#: templates/js/translated/stock.js:2690
+#: templates/js/translated/stock.js:2700
msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:2691
+#: templates/js/translated/stock.js:2701
msgid "The Stock Item is currently available in stock"
msgstr ""
-#: templates/js/translated/stock.js:2692
+#: templates/js/translated/stock.js:2702
msgid "The Stock Item is not already installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:2693
+#: templates/js/translated/stock.js:2703
msgid "The Stock Item is tracked by either a batch code or serial number"
msgstr ""
-#: templates/js/translated/stock.js:2706
+#: templates/js/translated/stock.js:2716
msgid "Select part to install"
msgstr ""
diff --git a/InvenTree/locale/pl/LC_MESSAGES/django.po b/InvenTree/locale/pl/LC_MESSAGES/django.po
index be1e766494..79d8728264 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: 2022-06-05 14:26+0000\n"
-"PO-Revision-Date: 2022-06-05 14:34\n"
+"POT-Creation-Date: 2022-06-06 22:59+0000\n"
+"PO-Revision-Date: 2022-06-07 14:34\n"
"Last-Translator: \n"
"Language-Team: Polish\n"
"Language: pl_PL\n"
@@ -17,7 +17,7 @@ msgstr ""
"X-Crowdin-File: /[inventree.InvenTree] l10/InvenTree/locale/en/LC_MESSAGES/django.po\n"
"X-Crowdin-File-ID: 154\n"
-#: InvenTree/api.py:46
+#: InvenTree/api.py:49
msgid "API endpoint not found"
msgstr "Nie znaleziono punktu końcowego API"
@@ -29,275 +29,273 @@ msgstr "Szczegóły błędu można znaleźć w panelu administracyjnym"
msgid "Enter date"
msgstr "Wprowadź dane"
-#: InvenTree/forms.py:117 templates/account/email_confirm.html:20
-#: templates/js/translated/forms.js:630
-msgid "Confirm"
-msgstr "Potwierdź"
-
-#: InvenTree/forms.py:134
+#: InvenTree/forms.py:117
msgid "Confirm delete"
msgstr "Potwierdź usunięcie"
-#: InvenTree/forms.py:135
+#: InvenTree/forms.py:118
msgid "Confirm item deletion"
msgstr "Potwierdź usuwanie elementu"
-#: InvenTree/forms.py:167
+#: InvenTree/forms.py:150
msgid "Enter password"
msgstr "Wprowadź hasło"
-#: InvenTree/forms.py:168
+#: InvenTree/forms.py:151
msgid "Enter new password"
msgstr "Wprowadź nowe hasło"
-#: InvenTree/forms.py:175
+#: InvenTree/forms.py:158
msgid "Confirm password"
msgstr "Potwierdź hasło"
-#: InvenTree/forms.py:176
+#: InvenTree/forms.py:159
msgid "Confirm new password"
msgstr "Potwierdź nowe hasło"
-#: InvenTree/forms.py:213
-msgid "Select Category"
-msgstr "Wybierz kategorię"
-
-#: InvenTree/forms.py:234
+#: InvenTree/forms.py:184
msgid "Email (again)"
msgstr "Adres email (ponownie)"
-#: InvenTree/forms.py:238
+#: InvenTree/forms.py:188
msgid "Email address confirmation"
msgstr "Potwierdzenie adresu email"
-#: InvenTree/forms.py:259
+#: InvenTree/forms.py:209
msgid "You must type the same email each time."
msgstr "Należy ponownie wpisać ten sam adres e-mail."
-#: InvenTree/helpers.py:402
+#: InvenTree/helpers.py:404
#, python-brace-format
msgid "Duplicate serial: {sn}"
msgstr "Powtórzony numer seryjny: {sn}"
-#: InvenTree/helpers.py:409 order/models.py:365 order/models.py:517
+#: InvenTree/helpers.py:411 order/models.py:370 order/models.py:522
msgid "Invalid quantity provided"
msgstr "Podano nieprawidłową ilość"
-#: InvenTree/helpers.py:412
+#: InvenTree/helpers.py:414
msgid "Empty serial number string"
msgstr "Pusty ciąg numeru seryjnego"
-#: InvenTree/helpers.py:444
+#: InvenTree/helpers.py:446
#, python-brace-format
msgid "Invalid group range: {g}"
msgstr "Nieprawidłowy zakres grupy: {g}"
-#: InvenTree/helpers.py:447
+#: InvenTree/helpers.py:449
#, python-brace-format
msgid "Invalid group: {g}"
msgstr "Nieprawidłowa grupa: {g}"
-#: InvenTree/helpers.py:475
+#: InvenTree/helpers.py:477
#, python-brace-format
msgid "Invalid group sequence: {g}"
msgstr "Nieprawidłowa sekwencja grupy: {g}"
-#: InvenTree/helpers.py:483
+#: InvenTree/helpers.py:485
#, python-brace-format
msgid "Invalid/no group {group}"
msgstr "Nieprawidłowa/Brak grupy {group}"
-#: InvenTree/helpers.py:489
+#: InvenTree/helpers.py:491
msgid "No serial numbers found"
msgstr "Nie znaleziono numerów seryjnych"
-#: InvenTree/helpers.py:493
+#: InvenTree/helpers.py:495
#, python-brace-format
msgid "Number of unique serial numbers ({s}) must match quantity ({q})"
msgstr "Liczba unikalnych numerów seryjnych ({s}) musi odpowiadać ilości ({q})"
-#: InvenTree/models.py:174
+#: InvenTree/models.py:178
msgid "Missing file"
msgstr "Brak pliku"
-#: InvenTree/models.py:175
+#: InvenTree/models.py:179
msgid "Missing external link"
msgstr "Brak zewnętrznego odnośnika"
-#: InvenTree/models.py:187 stock/models.py:2087
-#: templates/js/translated/attachment.js:101
-#: templates/js/translated/attachment.js:198
+#: InvenTree/models.py:191 stock/models.py:2091
+#: templates/js/translated/attachment.js:103
+#: templates/js/translated/attachment.js:194
msgid "Attachment"
msgstr "Załącznik"
-#: InvenTree/models.py:188
+#: InvenTree/models.py:192
msgid "Select file to attach"
msgstr "Wybierz plik do załączenia"
-#: InvenTree/models.py:194 company/models.py:123 company/models.py:272
-#: company/models.py:506 order/models.py:135 order/models.py:1235
+#: InvenTree/models.py:198 company/models.py:123 company/models.py:272
+#: company/models.py:506 order/models.py:136 order/models.py:1251
#: part/models.py:795
#: report/templates/report/inventree_build_order_base.html:165
-#: templates/js/translated/company.js:655
-#: templates/js/translated/company.js:946 templates/js/translated/order.js:2676
-#: templates/js/translated/part.js:1441
+#: templates/js/translated/company.js:640
+#: templates/js/translated/company.js:931 templates/js/translated/order.js:2676
+#: templates/js/translated/part.js:1485
msgid "Link"
msgstr "Łącze"
-#: InvenTree/models.py:195 build/models.py:320 part/models.py:796
+#: InvenTree/models.py:199 build/models.py:320 part/models.py:796
#: stock/models.py:642
msgid "Link to external URL"
msgstr "Link do zewnętrznego adresu URL"
-#: InvenTree/models.py:198 templates/js/translated/attachment.js:102
-#: templates/js/translated/attachment.js:242
+#: InvenTree/models.py:202 templates/js/translated/attachment.js:104
+#: templates/js/translated/attachment.js:238
msgid "Comment"
msgstr "Komentarz"
-#: InvenTree/models.py:198
+#: InvenTree/models.py:202
msgid "File comment"
msgstr "Komentarz pliku"
-#: InvenTree/models.py:204 InvenTree/models.py:205 common/models.py:1499
-#: common/models.py:1500 common/models.py:1728 common/models.py:1729
-#: common/models.py:1991 common/models.py:1992 part/models.py:2153
-#: part/models.py:2173 plugin/models.py:238 plugin/models.py:239
+#: InvenTree/models.py:208 InvenTree/models.py:209 common/models.py:1506
+#: common/models.py:1507 common/models.py:1735 common/models.py:1736
+#: common/models.py:1998 common/models.py:1999 part/models.py:2141
+#: part/models.py:2161 plugin/models.py:238 plugin/models.py:239
#: report/templates/report/inventree_test_report_base.html:96
-#: templates/js/translated/stock.js:2513
+#: templates/js/translated/stock.js:2523
msgid "User"
msgstr "Użytkownik"
-#: InvenTree/models.py:208
+#: InvenTree/models.py:212
msgid "upload date"
msgstr "data przesłania"
-#: InvenTree/models.py:230
+#: InvenTree/models.py:234
msgid "Filename must not be empty"
msgstr "Nazwa pliku nie może być pusta"
-#: InvenTree/models.py:253
+#: InvenTree/models.py:257
msgid "Invalid attachment directory"
msgstr "Nieprawidłowy katalog załącznika"
-#: InvenTree/models.py:263
+#: InvenTree/models.py:267
#, python-brace-format
msgid "Filename contains illegal character '{c}'"
msgstr "Nazwa pliku zawiera niedozwolony znak '{c}'"
-#: InvenTree/models.py:266
+#: InvenTree/models.py:270
msgid "Filename missing extension"
msgstr "Brak rozszerzenia w nazwie pliku"
-#: InvenTree/models.py:273
+#: InvenTree/models.py:277
msgid "Attachment with this filename already exists"
msgstr "Załącznik o tej nazwie już istnieje"
-#: InvenTree/models.py:280
+#: InvenTree/models.py:284
msgid "Error renaming file"
msgstr "Błąd zmiany nazwy pliku"
-#: InvenTree/models.py:314
+#: InvenTree/models.py:318
msgid "Invalid choice"
msgstr "Błędny wybór"
-#: InvenTree/models.py:333 InvenTree/models.py:334 common/models.py:1714
+#: InvenTree/models.py:337 InvenTree/models.py:338 common/models.py:1721
#: company/models.py:354 label/models.py:101 part/models.py:739
-#: part/models.py:2331 plugin/models.py:93 report/models.py:151
+#: part/models.py:2319 plugin/models.py:93 report/models.py:151
#: templates/InvenTree/notifications/notifications.html:84
#: templates/InvenTree/settings/mixins/urls.html:13
#: templates/InvenTree/settings/plugin.html:49
#: templates/InvenTree/settings/plugin.html:132
#: templates/InvenTree/settings/plugin_settings.html:23
#: templates/InvenTree/settings/settings.html:346
-#: templates/js/translated/company.js:539
-#: templates/js/translated/company.js:757 templates/js/translated/part.js:615
-#: templates/js/translated/part.js:767 templates/js/translated/part.js:1736
-#: templates/js/translated/stock.js:2283
+#: templates/js/translated/company.js:530
+#: templates/js/translated/company.js:742 templates/js/translated/part.js:659
+#: templates/js/translated/part.js:811 templates/js/translated/part.js:1832
+#: templates/js/translated/stock.js:2293
msgid "Name"
msgstr "Nazwa"
-#: InvenTree/models.py:340 build/models.py:197
+#: InvenTree/models.py:344 build/models.py:197
#: build/templates/build/detail.html:24 company/models.py:278
#: company/models.py:512 company/templates/company/company_base.html:71
#: company/templates/company/manufacturer_part.html:75
#: company/templates/company/supplier_part.html:73 label/models.py:108
-#: order/models.py:133 part/models.py:762 part/templates/part/category.html:74
-#: part/templates/part/part_base.html:167
-#: part/templates/part/set_category.html:14 report/models.py:164
+#: order/models.py:134 part/models.py:762 part/templates/part/category.html:74
+#: part/templates/part/part_base.html:167 report/models.py:164
#: report/models.py:509 report/models.py:550
#: report/templates/report/inventree_build_order_base.html:118
#: stock/templates/stock/location.html:103
#: templates/InvenTree/settings/plugin_settings.html:33
-#: templates/js/translated/bom.js:553 templates/js/translated/bom.js:851
-#: templates/js/translated/build.js:2476 templates/js/translated/company.js:401
-#: templates/js/translated/company.js:666
-#: templates/js/translated/company.js:957 templates/js/translated/order.js:1656
+#: templates/js/translated/bom.js:553 templates/js/translated/bom.js:845
+#: templates/js/translated/build.js:2476 templates/js/translated/company.js:395
+#: templates/js/translated/company.js:651
+#: templates/js/translated/company.js:942 templates/js/translated/order.js:1656
#: templates/js/translated/order.js:1888 templates/js/translated/order.js:2476
-#: templates/js/translated/part.js:674 templates/js/translated/part.js:1082
-#: templates/js/translated/part.js:1355 templates/js/translated/part.js:1755
-#: templates/js/translated/part.js:1824 templates/js/translated/stock.js:1676
-#: templates/js/translated/stock.js:2295 templates/js/translated/stock.js:2350
+#: templates/js/translated/part.js:718 templates/js/translated/part.js:1126
+#: templates/js/translated/part.js:1399 templates/js/translated/part.js:1851
+#: templates/js/translated/part.js:1920 templates/js/translated/stock.js:1686
+#: templates/js/translated/stock.js:2305 templates/js/translated/stock.js:2360
msgid "Description"
msgstr "Opis"
-#: InvenTree/models.py:341
+#: InvenTree/models.py:345
msgid "Description (optional)"
msgstr "Opis (opcjonalny)"
-#: InvenTree/models.py:349
+#: InvenTree/models.py:353
msgid "parent"
msgstr "nadrzędny"
-#: InvenTree/serializers.py:52 part/models.py:2652
+#: InvenTree/models.py:466
+msgid "Server Error"
+msgstr ""
+
+#: InvenTree/models.py:467
+msgid "An error has been logged by the server."
+msgstr ""
+
+#: InvenTree/serializers.py:52 part/models.py:2640
msgid "Must be a valid number"
msgstr "Numer musi być prawidłowy"
-#: InvenTree/serializers.py:271
+#: InvenTree/serializers.py:263
msgid "Filename"
msgstr "Nazwa pliku"
-#: InvenTree/serializers.py:306
+#: InvenTree/serializers.py:298
msgid "Invalid value"
msgstr "Nieprawidłowa wartość"
-#: InvenTree/serializers.py:328
+#: InvenTree/serializers.py:320
msgid "Data File"
msgstr "Plik danych"
-#: InvenTree/serializers.py:329
+#: InvenTree/serializers.py:321
msgid "Select data file for upload"
msgstr "Wybierz plik danych do przesłania"
-#: InvenTree/serializers.py:350
+#: InvenTree/serializers.py:342
msgid "Unsupported file type"
msgstr "Nieobsługiwany typ pliku"
-#: InvenTree/serializers.py:356
+#: InvenTree/serializers.py:348
msgid "File is too large"
msgstr "Plik jest zbyt duży"
-#: InvenTree/serializers.py:377
+#: InvenTree/serializers.py:369
msgid "No columns found in file"
msgstr "Nie znaleziono kolumn w pliku"
-#: InvenTree/serializers.py:380
+#: InvenTree/serializers.py:372
msgid "No data rows found in file"
msgstr "Nie znaleziono wierszy danych w pliku"
-#: InvenTree/serializers.py:503
+#: InvenTree/serializers.py:495
msgid "No data rows provided"
msgstr "Nie podano wierszy danych"
-#: InvenTree/serializers.py:506
+#: InvenTree/serializers.py:498
msgid "No data columns supplied"
msgstr "Nie podano kolumn danych"
-#: InvenTree/serializers.py:583
+#: InvenTree/serializers.py:575
#, python-brace-format
msgid "Missing required column: '{name}'"
msgstr "Brakuje wymaganej kolumny: '{name}'"
-#: InvenTree/serializers.py:592
+#: InvenTree/serializers.py:584
#, python-brace-format
msgid "Duplicate column: '{col}'"
msgstr "Zduplikowana kolumna: '{col}'"
@@ -440,7 +438,7 @@ msgstr "Zagubiono"
msgid "Returned"
msgstr "Zwrócone"
-#: InvenTree/status_codes.py:141 order/models.py:1114
+#: InvenTree/status_codes.py:141 order/models.py:1130
#: templates/js/translated/order.js:3264 templates/js/translated/order.js:3607
msgid "Shipped"
msgstr "Wysłane"
@@ -525,7 +523,7 @@ msgstr "Podziel z pozycji nadrzędnej"
msgid "Split child item"
msgstr "Podziel element podrzędny"
-#: InvenTree/status_codes.py:281 templates/js/translated/stock.js:2020
+#: InvenTree/status_codes.py:281 templates/js/translated/stock.js:2030
msgid "Merged stock items"
msgstr ""
@@ -597,27 +595,27 @@ msgstr "Przedawnienie nie może przekroczyć 100 %"
msgid "Invalid value for overage"
msgstr "Nieprawidłowa wartość przedawnienia"
-#: InvenTree/views.py:522
+#: InvenTree/views.py:521
msgid "Delete Item"
msgstr "Usuń element"
-#: InvenTree/views.py:571
+#: InvenTree/views.py:570
msgid "Check box to confirm item deletion"
msgstr "Zaznacz pole aby potwierdzić usunięcie elementu"
-#: InvenTree/views.py:586 templates/InvenTree/settings/user.html:22
+#: InvenTree/views.py:585 templates/InvenTree/settings/user.html:22
msgid "Edit User Information"
msgstr "Edytuj informacje użytkownika"
-#: InvenTree/views.py:598 templates/InvenTree/settings/user.html:19
+#: InvenTree/views.py:597 templates/InvenTree/settings/user.html:19
msgid "Set Password"
msgstr "Ustaw hasło"
-#: InvenTree/views.py:618
+#: InvenTree/views.py:617
msgid "Password fields must match"
msgstr "Hasła muszą być zgodne"
-#: InvenTree/views.py:842 templates/navbar.html:152
+#: InvenTree/views.py:807 templates/navbar.html:152
msgid "System Information"
msgstr "Informacja systemowa"
@@ -628,6 +626,7 @@ msgstr ""
#: build/models.py:131 build/templates/build/build_base.html:9
#: build/templates/build/build_base.html:27
#: report/templates/report/inventree_build_order_base.html:106
+#: templates/email/overdue_build_order.html:15
#: templates/js/translated/build.js:727
msgid "Build Order"
msgstr "Zlecenie Budowy"
@@ -646,12 +645,12 @@ msgstr "Zlecenia budowy"
msgid "Build Order Reference"
msgstr "Odwołanie do zamówienia wykonania"
-#: build/models.py:189 order/models.py:288 order/models.py:638
-#: order/models.py:916 part/models.py:2570
+#: build/models.py:189 order/models.py:293 order/models.py:654
+#: order/models.py:932 part/models.py:2558
#: part/templates/part/upload_bom.html:54
#: report/templates/report/inventree_po_report.html:91
#: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:688 templates/js/translated/bom.js:858
+#: templates/js/translated/bom.js:690 templates/js/translated/bom.js:852
#: templates/js/translated/build.js:1777 templates/js/translated/order.js:1919
#: templates/js/translated/order.js:2120 templates/js/translated/order.js:3448
#: templates/js/translated/order.js:3959
@@ -673,13 +672,12 @@ msgstr "Zamówienie budowy, do którego budowa jest przypisana"
#: build/models.py:215 build/templates/build/build_base.html:77
#: build/templates/build/detail.html:29 company/models.py:647
-#: order/models.py:1012 order/models.py:1103 part/models.py:336
-#: part/models.py:2099 part/models.py:2114 part/models.py:2133
-#: part/models.py:2151 part/models.py:2250 part/models.py:2370
-#: part/models.py:2460 part/models.py:2545 part/models.py:2821
-#: part/serializers.py:793 part/templates/part/part_app_base.html:8
+#: order/models.py:1028 order/models.py:1119 part/models.py:336
+#: part/models.py:2087 part/models.py:2102 part/models.py:2121
+#: part/models.py:2139 part/models.py:2238 part/models.py:2358
+#: part/models.py:2448 part/models.py:2533 part/models.py:2809
+#: part/serializers.py:795 part/templates/part/part_app_base.html:8
#: part/templates/part/part_pricing.html:12
-#: part/templates/part/set_category.html:13
#: part/templates/part/upload_bom.html:52
#: report/templates/report/inventree_build_order_base.html:110
#: report/templates/report/inventree_po_report.html:89
@@ -687,22 +685,23 @@ msgstr "Zamówienie budowy, do którego budowa jest przypisana"
#: templates/InvenTree/search.html:80
#: templates/email/build_order_required_stock.html:17
#: templates/email/low_stock_notification.html:16
+#: templates/email/overdue_build_order.html:16
#: templates/js/translated/barcode.js:435 templates/js/translated/bom.js:552
-#: templates/js/translated/bom.js:687 templates/js/translated/bom.js:805
+#: templates/js/translated/bom.js:689 templates/js/translated/bom.js:799
#: templates/js/translated/build.js:1153 templates/js/translated/build.js:1647
#: templates/js/translated/build.js:2083 templates/js/translated/build.js:2481
-#: templates/js/translated/company.js:252
-#: templates/js/translated/company.js:486
-#: templates/js/translated/company.js:607
-#: templates/js/translated/company.js:866 templates/js/translated/order.js:100
+#: templates/js/translated/company.js:253
+#: templates/js/translated/company.js:482
+#: templates/js/translated/company.js:592
+#: templates/js/translated/company.js:851 templates/js/translated/order.js:100
#: templates/js/translated/order.js:883 templates/js/translated/order.js:1315
#: templates/js/translated/order.js:1873 templates/js/translated/order.js:2819
#: templates/js/translated/order.js:3217 templates/js/translated/order.js:3432
-#: templates/js/translated/part.js:1067 templates/js/translated/part.js:1137
-#: templates/js/translated/part.js:1333 templates/js/translated/stock.js:531
-#: templates/js/translated/stock.js:696 templates/js/translated/stock.js:903
-#: templates/js/translated/stock.js:1633 templates/js/translated/stock.js:2376
-#: templates/js/translated/stock.js:2571 templates/js/translated/stock.js:2705
+#: templates/js/translated/part.js:1111 templates/js/translated/part.js:1181
+#: templates/js/translated/part.js:1377 templates/js/translated/stock.js:530
+#: templates/js/translated/stock.js:695 templates/js/translated/stock.js:902
+#: templates/js/translated/stock.js:1643 templates/js/translated/stock.js:2386
+#: templates/js/translated/stock.js:2581 templates/js/translated/stock.js:2715
msgid "Part"
msgstr "Komponent"
@@ -768,12 +767,12 @@ msgstr "Kod partii"
msgid "Batch code for this build output"
msgstr "Kod partii dla wyjścia budowy"
-#: build/models.py:282 order/models.py:137 part/models.py:932
+#: build/models.py:282 order/models.py:138 part/models.py:932
#: part/templates/part/part_base.html:305 templates/js/translated/order.js:2489
msgid "Creation Date"
msgstr "Data utworzenia"
-#: build/models.py:286 order/models.py:660
+#: build/models.py:286 order/models.py:676
msgid "Target completion date"
msgstr "Docelowy termin zakończenia"
@@ -781,7 +780,7 @@ msgstr "Docelowy termin zakończenia"
msgid "Target date for build completion. Build will be overdue after this date."
msgstr ""
-#: build/models.py:290 order/models.py:331
+#: build/models.py:290 order/models.py:336
#: templates/js/translated/build.js:2558
msgid "Completion Date"
msgstr "Data zakończenia"
@@ -799,7 +798,7 @@ msgid "User who issued this build order"
msgstr "Użytkownik, który wydał to zamówienie"
#: build/models.py:313 build/templates/build/build_base.html:190
-#: build/templates/build/detail.html:115 order/models.py:151
+#: build/templates/build/detail.html:115 order/models.py:152
#: order/templates/order/order_base.html:176
#: order/templates/order/sales_order_base.html:183 part/models.py:936
#: report/templates/report/inventree_build_order_base.html:159
@@ -822,20 +821,20 @@ msgstr "Link Zewnętrzny"
#: build/models.py:324 build/serializers.py:374
#: build/templates/build/sidebar.html:21 company/models.py:134
#: company/models.py:519 company/templates/company/sidebar.html:25
-#: order/models.py:155 order/models.py:918 order/models.py:1213
+#: order/models.py:156 order/models.py:934 order/models.py:1229
#: order/templates/order/po_sidebar.html:11
#: order/templates/order/so_sidebar.html:17 part/models.py:921
#: part/templates/part/part_sidebar.html:59
#: report/templates/report/inventree_build_order_base.html:173
-#: stock/models.py:713 stock/models.py:1985 stock/models.py:2093
+#: stock/models.py:713 stock/models.py:1989 stock/models.py:2097
#: stock/serializers.py:315 stock/serializers.py:444 stock/serializers.py:486
-#: stock/serializers.py:772 stock/serializers.py:871 stock/serializers.py:1003
+#: stock/serializers.py:759 stock/serializers.py:858 stock/serializers.py:990
#: stock/templates/stock/stock_sidebar.html:25
-#: templates/js/translated/barcode.js:100 templates/js/translated/bom.js:1044
-#: templates/js/translated/company.js:962 templates/js/translated/order.js:2040
+#: templates/js/translated/barcode.js:100 templates/js/translated/bom.js:1038
+#: templates/js/translated/company.js:947 templates/js/translated/order.js:2040
#: templates/js/translated/order.js:2191 templates/js/translated/order.js:2687
#: templates/js/translated/order.js:3632 templates/js/translated/order.js:4030
-#: templates/js/translated/stock.js:1307 templates/js/translated/stock.js:1916
+#: templates/js/translated/stock.js:1317 templates/js/translated/stock.js:1926
msgid "Notes"
msgstr "Uwagi"
@@ -855,44 +854,44 @@ msgstr "Budowanie wyjścia jest już ukończone"
msgid "Build output does not match Build Order"
msgstr ""
-#: build/models.py:1108
+#: build/models.py:1111
msgid "Build item must specify a build output, as master part is marked as trackable"
msgstr ""
-#: build/models.py:1117
+#: build/models.py:1120
#, python-brace-format
msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})"
msgstr ""
-#: build/models.py:1127
+#: build/models.py:1130
msgid "Stock item is over-allocated"
msgstr ""
-#: build/models.py:1133 order/models.py:1372
+#: build/models.py:1136 order/models.py:1388
msgid "Allocation quantity must be greater than zero"
msgstr "Alokowana ilość musi być większa niż zero"
-#: build/models.py:1139
+#: build/models.py:1142
msgid "Quantity must be 1 for serialized stock"
msgstr ""
-#: build/models.py:1196
+#: build/models.py:1199
msgid "Selected stock item not found in BOM"
msgstr "Nie znaleziono wybranego elementu magazynowego w BOM"
-#: build/models.py:1265 stock/templates/stock/item_base.html:177
+#: build/models.py:1268 stock/templates/stock/item_base.html:177
#: templates/InvenTree/search.html:137 templates/js/translated/build.js:2454
#: templates/navbar.html:38
msgid "Build"
msgstr "Budowa"
-#: build/models.py:1266
+#: build/models.py:1269
msgid "Build to allocate parts"
msgstr ""
-#: build/models.py:1282 build/serializers.py:603 order/serializers.py:994
-#: order/serializers.py:1015 stock/serializers.py:382 stock/serializers.py:703
-#: stock/serializers.py:829 stock/templates/stock/item_base.html:10
+#: build/models.py:1285 build/serializers.py:603 order/serializers.py:996
+#: order/serializers.py:1017 stock/serializers.py:382 stock/serializers.py:690
+#: stock/serializers.py:816 stock/templates/stock/item_base.html:10
#: stock/templates/stock/item_base.html:23
#: stock/templates/stock/item_base.html:199
#: templates/js/translated/build.js:738 templates/js/translated/build.js:743
@@ -900,22 +899,22 @@ msgstr ""
#: templates/js/translated/order.js:101 templates/js/translated/order.js:2820
#: templates/js/translated/order.js:3124 templates/js/translated/order.js:3129
#: templates/js/translated/order.js:3224 templates/js/translated/order.js:3314
-#: templates/js/translated/stock.js:532 templates/js/translated/stock.js:697
-#: templates/js/translated/stock.js:2449
+#: templates/js/translated/stock.js:531 templates/js/translated/stock.js:696
+#: templates/js/translated/stock.js:2459
msgid "Stock Item"
msgstr "Element magazynowy"
-#: build/models.py:1283
+#: build/models.py:1286
msgid "Source stock item"
msgstr "Lokalizacja magazynowania przedmiotu"
-#: build/models.py:1295 build/serializers.py:183
+#: build/models.py:1298 build/serializers.py:183
#: build/templates/build/build_base.html:82
-#: build/templates/build/detail.html:34 common/models.py:1536
+#: build/templates/build/detail.html:34 common/models.py:1543
#: company/forms.py:36 company/templates/company/supplier_part.html:258
-#: order/models.py:909 order/models.py:1412 order/serializers.py:1134
-#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:68
-#: part/forms.py:83 part/forms.py:98 part/models.py:2561
+#: order/models.py:925 order/models.py:1428 order/serializers.py:1136
+#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:59
+#: part/forms.py:74 part/forms.py:89 part/models.py:2549
#: part/templates/part/detail.html:935 part/templates/part/detail.html:1021
#: part/templates/part/part_pricing.html:16
#: part/templates/part/upload_bom.html:53
@@ -926,8 +925,8 @@ msgstr "Lokalizacja magazynowania przedmiotu"
#: report/templates/report/inventree_test_report_base.html:139
#: stock/serializers.py:279 stock/templates/stock/item_base.html:292
#: stock/templates/stock/item_base.html:300
-#: templates/js/translated/barcode.js:437 templates/js/translated/bom.js:689
-#: templates/js/translated/bom.js:866 templates/js/translated/build.js:422
+#: templates/js/translated/barcode.js:437 templates/js/translated/bom.js:691
+#: templates/js/translated/bom.js:860 templates/js/translated/build.js:422
#: templates/js/translated/build.js:574 templates/js/translated/build.js:765
#: templates/js/translated/build.js:1175 templates/js/translated/build.js:1673
#: templates/js/translated/build.js:2086
@@ -937,23 +936,23 @@ msgstr "Lokalizacja magazynowania przedmiotu"
#: templates/js/translated/order.js:2821 templates/js/translated/order.js:3143
#: templates/js/translated/order.js:3231 templates/js/translated/order.js:3320
#: templates/js/translated/order.js:3454 templates/js/translated/order.js:3965
-#: templates/js/translated/part.js:967 templates/js/translated/part.js:1969
-#: templates/js/translated/part.js:2200 templates/js/translated/part.js:2234
-#: templates/js/translated/part.js:2312 templates/js/translated/stock.js:403
-#: templates/js/translated/stock.js:557 templates/js/translated/stock.js:727
-#: templates/js/translated/stock.js:2498 templates/js/translated/stock.js:2583
+#: templates/js/translated/part.js:1011 templates/js/translated/part.js:2065
+#: templates/js/translated/part.js:2296 templates/js/translated/part.js:2330
+#: templates/js/translated/part.js:2408 templates/js/translated/stock.js:402
+#: templates/js/translated/stock.js:556 templates/js/translated/stock.js:726
+#: templates/js/translated/stock.js:2508 templates/js/translated/stock.js:2593
msgid "Quantity"
msgstr "Ilość"
-#: build/models.py:1296
+#: build/models.py:1299
msgid "Stock quantity to allocate to build"
msgstr ""
-#: build/models.py:1304
+#: build/models.py:1307
msgid "Install into"
msgstr "Zainstaluj do"
-#: build/models.py:1305
+#: build/models.py:1308
msgid "Destination stock item"
msgstr "Docelowa lokalizacja magazynowa przedmiotu"
@@ -982,9 +981,9 @@ msgstr ""
msgid "Enter quantity for build output"
msgstr ""
-#: build/serializers.py:198 build/serializers.py:623 order/models.py:363
-#: order/serializers.py:280 order/serializers.py:435 part/serializers.py:512
-#: part/serializers.py:956 stock/models.py:470 stock/models.py:1239
+#: build/serializers.py:198 build/serializers.py:623 order/models.py:368
+#: order/serializers.py:280 order/serializers.py:435 part/serializers.py:514
+#: part/serializers.py:958 stock/models.py:470 stock/models.py:1239
#: stock/serializers.py:288
msgid "Quantity must be greater than zero"
msgstr "Ilość musi być większa niż zero"
@@ -997,9 +996,9 @@ msgstr ""
msgid "Integer quantity required, as the bill of materials contains trackable parts"
msgstr ""
-#: build/serializers.py:222 order/serializers.py:448 order/serializers.py:1138
+#: build/serializers.py:222 order/serializers.py:448 order/serializers.py:1140
#: stock/serializers.py:297 templates/js/translated/order.js:1186
-#: templates/js/translated/stock.js:238 templates/js/translated/stock.js:404
+#: templates/js/translated/stock.js:237 templates/js/translated/stock.js:403
msgid "Serial Numbers"
msgstr "Numer seryjny"
@@ -1015,7 +1014,7 @@ msgstr ""
msgid "Automatically allocate required items with matching serial numbers"
msgstr ""
-#: build/serializers.py:268 stock/api.py:552
+#: build/serializers.py:268 stock/api.py:553
msgid "The following serial numbers already exist"
msgstr ""
@@ -1025,16 +1024,16 @@ msgstr ""
#: build/serializers.py:356 order/serializers.py:421 order/serializers.py:525
#: stock/serializers.py:308 stock/serializers.py:439 stock/serializers.py:481
-#: stock/serializers.py:864 stock/serializers.py:1097
+#: stock/serializers.py:851 stock/serializers.py:1084
#: stock/templates/stock/item_base.html:390
#: templates/js/translated/barcode.js:436
#: templates/js/translated/barcode.js:618 templates/js/translated/build.js:750
#: templates/js/translated/build.js:1685 templates/js/translated/order.js:1213
#: templates/js/translated/order.js:3136 templates/js/translated/order.js:3239
#: templates/js/translated/order.js:3247 templates/js/translated/order.js:3328
-#: templates/js/translated/part.js:180 templates/js/translated/stock.js:533
-#: templates/js/translated/stock.js:698 templates/js/translated/stock.js:905
-#: templates/js/translated/stock.js:1787 templates/js/translated/stock.js:2390
+#: templates/js/translated/part.js:180 templates/js/translated/stock.js:532
+#: templates/js/translated/stock.js:697 templates/js/translated/stock.js:904
+#: templates/js/translated/stock.js:1797 templates/js/translated/stock.js:2400
msgid "Location"
msgstr "Lokalizacja"
@@ -1043,12 +1042,12 @@ msgid "Location for completed build outputs"
msgstr ""
#: build/serializers.py:363 build/templates/build/build_base.html:142
-#: build/templates/build/detail.html:62 order/models.py:654
+#: build/templates/build/detail.html:62 order/models.py:670
#: order/serializers.py:458 stock/templates/stock/item_base.html:423
#: templates/js/translated/barcode.js:182 templates/js/translated/build.js:2510
#: templates/js/translated/order.js:1320 templates/js/translated/order.js:1660
-#: templates/js/translated/order.js:2481 templates/js/translated/stock.js:1762
-#: templates/js/translated/stock.js:2467 templates/js/translated/stock.js:2599
+#: templates/js/translated/order.js:2481 templates/js/translated/stock.js:1772
+#: templates/js/translated/stock.js:2477 templates/js/translated/stock.js:2609
msgid "Status"
msgstr "Status"
@@ -1108,8 +1107,8 @@ msgstr ""
msgid "No build outputs have been created for this build order"
msgstr ""
-#: build/serializers.py:535 build/serializers.py:580 part/models.py:2679
-#: part/models.py:2813
+#: build/serializers.py:535 build/serializers.py:580 part/models.py:2667
+#: part/models.py:2801
msgid "BOM Item"
msgstr "Element BOM"
@@ -1125,11 +1124,11 @@ msgstr ""
msgid "bom_item.part must point to the same part as the build order"
msgstr ""
-#: build/serializers.py:609 stock/serializers.py:716
+#: build/serializers.py:609 stock/serializers.py:703
msgid "Item must be in stock"
msgstr "Towar musi znajdować się w magazynie"
-#: build/serializers.py:667 order/serializers.py:1052
+#: build/serializers.py:667 order/serializers.py:1054
#, python-brace-format
msgid "Available quantity ({q}) exceeded"
msgstr ""
@@ -1146,7 +1145,7 @@ msgstr ""
msgid "This stock item has already been allocated to this build output"
msgstr ""
-#: build/serializers.py:708 order/serializers.py:1298
+#: build/serializers.py:708 order/serializers.py:1300
msgid "Allocation items must be provided"
msgstr ""
@@ -1178,10 +1177,19 @@ msgstr "Zastępczy magazyn"
msgid "Allow allocation of substitute parts"
msgstr ""
-#: build/tasks.py:96
+#: build/tasks.py:100
msgid "Stock required for build order"
msgstr ""
+#: build/tasks.py:118
+msgid "Overdue Build Order"
+msgstr ""
+
+#: build/tasks.py:123
+#, python-brace-format
+msgid "Build order {bo} is now overdue"
+msgstr ""
+
#: build/templates/build/build_base.html:39
#: order/templates/order/order_base.html:28
#: order/templates/order/sales_order_base.html:38
@@ -1244,13 +1252,13 @@ msgid "Stock has not been fully allocated to this Build Order"
msgstr ""
#: build/templates/build/build_base.html:151
-#: build/templates/build/detail.html:131 order/models.py:922
+#: build/templates/build/detail.html:131 order/models.py:938
#: order/templates/order/order_base.html:162
#: order/templates/order/sales_order_base.html:164
#: report/templates/report/inventree_build_order_base.html:126
#: templates/js/translated/build.js:2550 templates/js/translated/order.js:1677
#: templates/js/translated/order.js:1987 templates/js/translated/order.js:2497
-#: templates/js/translated/order.js:3517 templates/js/translated/part.js:971
+#: templates/js/translated/order.js:3517 templates/js/translated/part.js:1015
msgid "Target Date"
msgstr "Data docelowa"
@@ -1277,13 +1285,14 @@ msgid "Completed"
msgstr "Zakończone"
#: build/templates/build/build_base.html:176
-#: build/templates/build/detail.html:94 order/models.py:1100
-#: order/models.py:1185 order/models.py:1320
+#: build/templates/build/detail.html:94 order/models.py:1116
+#: order/models.py:1201 order/models.py:1336
#: order/templates/order/sales_order_base.html:9
#: order/templates/order/sales_order_base.html:28
#: report/templates/report/inventree_build_order_base.html:136
#: report/templates/report/inventree_so_report.html:77
#: stock/templates/stock/item_base.html:370
+#: templates/email/overdue_sales_order.html:15
#: templates/js/translated/order.js:2436
msgid "Sales Order"
msgstr "Zamówienie zakupu"
@@ -1319,7 +1328,7 @@ msgstr "Źródło magazynu"
msgid "Stock can be taken from any available location."
msgstr ""
-#: build/templates/build/detail.html:49 order/models.py:1034
+#: build/templates/build/detail.html:49 order/models.py:1050
#: templates/js/translated/order.js:1321 templates/js/translated/order.js:2029
msgid "Destination"
msgstr "Przeznaczenie"
@@ -1336,8 +1345,8 @@ msgstr ""
#: stock/templates/stock/item_base.html:170
#: templates/js/translated/build.js:1179
#: templates/js/translated/model_renderers.js:112
-#: templates/js/translated/stock.js:971 templates/js/translated/stock.js:1776
-#: templates/js/translated/stock.js:2606
+#: templates/js/translated/stock.js:970 templates/js/translated/stock.js:1786
+#: templates/js/translated/stock.js:2616
#: templates/js/translated/table_filters.js:151
#: templates/js/translated/table_filters.js:242
msgid "Batch"
@@ -1716,7 +1725,7 @@ msgstr ""
msgid "Copy category parameter templates when creating a part"
msgstr ""
-#: common/models.py:820 part/models.py:2372 report/models.py:157
+#: common/models.py:820 part/models.py:2360 report/models.py:157
#: templates/js/translated/table_filters.js:38
#: templates/js/translated/table_filters.js:444
msgid "Template"
@@ -1726,7 +1735,7 @@ msgstr "Szablon"
msgid "Parts are templates by default"
msgstr ""
-#: common/models.py:827 part/models.py:884 templates/js/translated/bom.js:1390
+#: common/models.py:827 part/models.py:884 templates/js/translated/bom.js:1384
#: templates/js/translated/table_filters.js:168
#: templates/js/translated/table_filters.js:460
msgid "Assembly"
@@ -1880,576 +1889,584 @@ msgid "Default page size for PDF reports"
msgstr ""
#: common/models.py:968
-msgid "Test Reports"
-msgstr "Raporty testów"
+msgid "Enable Test Reports"
+msgstr ""
#: common/models.py:969
msgid "Enable generation of test reports"
msgstr "Włącz generowanie raportów testów"
#: common/models.py:975
-msgid "Batch Code Template"
+msgid "Attach Test Reports"
msgstr ""
#: common/models.py:976
-msgid "Template for generating default batch codes for stock items"
-msgstr ""
-
-#: common/models.py:981
-msgid "Stock Expiry"
+msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item"
msgstr ""
#: common/models.py:982
-msgid "Enable stock expiry functionality"
+msgid "Batch Code Template"
+msgstr ""
+
+#: common/models.py:983
+msgid "Template for generating default batch codes for stock items"
msgstr ""
#: common/models.py:988
-msgid "Sell Expired Stock"
+msgid "Stock Expiry"
msgstr ""
#: common/models.py:989
-msgid "Allow sale of expired stock"
+msgid "Enable stock expiry functionality"
msgstr ""
#: common/models.py:995
-msgid "Stock Stale Time"
+msgid "Sell Expired Stock"
msgstr ""
#: common/models.py:996
+msgid "Allow sale of expired stock"
+msgstr ""
+
+#: common/models.py:1002
+msgid "Stock Stale Time"
+msgstr ""
+
+#: common/models.py:1003
msgid "Number of days stock items are considered stale before expiring"
msgstr ""
-#: common/models.py:998
+#: common/models.py:1005
msgid "days"
msgstr "dni"
-#: common/models.py:1003
+#: common/models.py:1010
msgid "Build Expired Stock"
msgstr ""
-#: common/models.py:1004
+#: common/models.py:1011
msgid "Allow building with expired stock"
msgstr ""
-#: common/models.py:1010
+#: common/models.py:1017
msgid "Stock Ownership Control"
msgstr ""
-#: common/models.py:1011
+#: common/models.py:1018
msgid "Enable ownership control over stock locations and items"
msgstr ""
-#: common/models.py:1017
+#: common/models.py:1024
msgid "Build Order Reference Prefix"
msgstr ""
-#: common/models.py:1018
+#: common/models.py:1025
msgid "Prefix value for build order reference"
msgstr ""
-#: common/models.py:1023
+#: common/models.py:1030
msgid "Build Order Reference Regex"
msgstr ""
-#: common/models.py:1024
+#: common/models.py:1031
msgid "Regular expression pattern for matching build order reference"
msgstr ""
-#: common/models.py:1028
+#: common/models.py:1035
msgid "Sales Order Reference Prefix"
msgstr ""
-#: common/models.py:1029
+#: common/models.py:1036
msgid "Prefix value for sales order reference"
msgstr ""
-#: common/models.py:1034
+#: common/models.py:1041
msgid "Sales Order Default Shipment"
msgstr ""
-#: common/models.py:1035
+#: common/models.py:1042
msgid "Enable creation of default shipment with sales orders"
msgstr ""
-#: common/models.py:1041
+#: common/models.py:1048
msgid "Purchase Order Reference Prefix"
msgstr ""
-#: common/models.py:1042
+#: common/models.py:1049
msgid "Prefix value for purchase order reference"
msgstr ""
-#: common/models.py:1048
+#: common/models.py:1055
msgid "Enable password forgot"
msgstr "Włącz opcję zapomnianego hasła"
-#: common/models.py:1049
+#: common/models.py:1056
msgid "Enable password forgot function on the login pages"
msgstr "Włącz funkcję zapomnianego hasła na stronach logowania"
-#: common/models.py:1055
+#: common/models.py:1062
msgid "Enable registration"
msgstr "Włącz rejestrację"
-#: common/models.py:1056
+#: common/models.py:1063
msgid "Enable self-registration for users on the login pages"
msgstr "Włącz samodzielną rejestrację dla użytkowników na stronach logowania"
-#: common/models.py:1062
+#: common/models.py:1069
msgid "Enable SSO"
msgstr "Włącz SSO"
-#: common/models.py:1063
+#: common/models.py:1070
msgid "Enable SSO on the login pages"
msgstr "Włącz SSO na stronach logowania"
-#: common/models.py:1069
+#: common/models.py:1076
msgid "Email required"
msgstr "Adres e-mail jest wymagany"
-#: common/models.py:1070
+#: common/models.py:1077
msgid "Require user to supply mail on signup"
msgstr ""
-#: common/models.py:1076
+#: common/models.py:1083
msgid "Auto-fill SSO users"
msgstr "Autouzupełnianie użytkowników SSO"
-#: common/models.py:1077
+#: common/models.py:1084
msgid "Automatically fill out user-details from SSO account-data"
msgstr "Automatycznie wypełnij dane użytkownika z danych konta SSO"
-#: common/models.py:1083
+#: common/models.py:1090
msgid "Mail twice"
msgstr "E-mail dwa razy"
-#: common/models.py:1084
+#: common/models.py:1091
msgid "On signup ask users twice for their mail"
msgstr "Przy rejestracji dwukrotnie zapytaj użytkowników o ich adres e-mail"
-#: common/models.py:1090
+#: common/models.py:1097
msgid "Password twice"
msgstr "Hasło dwukrotnie"
-#: common/models.py:1091
+#: common/models.py:1098
msgid "On signup ask users twice for their password"
msgstr "Przy rejestracji dwukrotnie zapytaj użytkowników o ich hasło"
-#: common/models.py:1097
+#: common/models.py:1104
msgid "Group on signup"
msgstr "Grupuj przy rejestracji"
-#: common/models.py:1098
+#: common/models.py:1105
msgid "Group to which new users are assigned on registration"
msgstr ""
-#: common/models.py:1104
+#: common/models.py:1111
msgid "Enforce MFA"
msgstr "Wymuś MFA"
-#: common/models.py:1105
+#: common/models.py:1112
msgid "Users must use multifactor security."
msgstr "Użytkownicy muszą używać zabezpieczeń wieloskładnikowych."
-#: common/models.py:1111
+#: common/models.py:1118
msgid "Check plugins on startup"
msgstr ""
-#: common/models.py:1112
+#: common/models.py:1119
msgid "Check that all plugins are installed on startup - enable in container enviroments"
msgstr ""
-#: common/models.py:1120
+#: common/models.py:1127
msgid "Enable URL integration"
msgstr "Włącz integrację URL"
-#: common/models.py:1121
+#: common/models.py:1128
msgid "Enable plugins to add URL routes"
msgstr "Włącz wtyczki, aby dodać ścieżki URL"
-#: common/models.py:1128
+#: common/models.py:1135
msgid "Enable navigation integration"
msgstr ""
-#: common/models.py:1129
+#: common/models.py:1136
msgid "Enable plugins to integrate into navigation"
msgstr ""
-#: common/models.py:1136
+#: common/models.py:1143
msgid "Enable app integration"
msgstr "Włącz integrację z aplikacją"
-#: common/models.py:1137
+#: common/models.py:1144
msgid "Enable plugins to add apps"
msgstr "Włącz wtyczki, aby dodać aplikacje"
-#: common/models.py:1144
+#: common/models.py:1151
msgid "Enable schedule integration"
msgstr ""
-#: common/models.py:1145
+#: common/models.py:1152
msgid "Enable plugins to run scheduled tasks"
msgstr "Włącz wtyczki, aby uruchamiać zaplanowane zadania"
-#: common/models.py:1152
+#: common/models.py:1159
msgid "Enable event integration"
msgstr ""
-#: common/models.py:1153
+#: common/models.py:1160
msgid "Enable plugins to respond to internal events"
msgstr ""
-#: common/models.py:1170 common/models.py:1492
+#: common/models.py:1177 common/models.py:1499
msgid "Settings key (must be unique - case insensitive"
msgstr "Klucz ustawień (musi być unikalny - niewrażliwy na wielkość liter"
-#: common/models.py:1192
+#: common/models.py:1199
msgid "Show subscribed parts"
msgstr "Pokaż obserwowane części"
-#: common/models.py:1193
+#: common/models.py:1200
msgid "Show subscribed parts on the homepage"
msgstr "Pokaż obserwowane części na stronie głównej"
-#: common/models.py:1199
+#: common/models.py:1206
msgid "Show subscribed categories"
msgstr "Pokaż obserwowane kategorie"
-#: common/models.py:1200
+#: common/models.py:1207
msgid "Show subscribed part categories on the homepage"
msgstr "Pokaż obserwowane kategorie części na stronie głównej"
-#: common/models.py:1206
+#: common/models.py:1213
msgid "Show latest parts"
msgstr "Pokaż najnowsze części"
-#: common/models.py:1207
+#: common/models.py:1214
msgid "Show latest parts on the homepage"
msgstr "Pokaż najnowsze części na stronie głównej"
-#: common/models.py:1213
+#: common/models.py:1220
msgid "Recent Part Count"
msgstr ""
-#: common/models.py:1214
+#: common/models.py:1221
msgid "Number of recent parts to display on index page"
msgstr ""
-#: common/models.py:1220
+#: common/models.py:1227
msgid "Show unvalidated BOMs"
msgstr ""
-#: common/models.py:1221
+#: common/models.py:1228
msgid "Show BOMs that await validation on the homepage"
msgstr ""
-#: common/models.py:1227
+#: common/models.py:1234
msgid "Show recent stock changes"
msgstr ""
-#: common/models.py:1228
+#: common/models.py:1235
msgid "Show recently changed stock items on the homepage"
msgstr ""
-#: common/models.py:1234
+#: common/models.py:1241
msgid "Recent Stock Count"
msgstr ""
-#: common/models.py:1235
+#: common/models.py:1242
msgid "Number of recent stock items to display on index page"
msgstr ""
-#: common/models.py:1241
+#: common/models.py:1248
msgid "Show low stock"
msgstr "Pokaż niski stan magazynowy"
-#: common/models.py:1242
+#: common/models.py:1249
msgid "Show low stock items on the homepage"
msgstr "Pokaż elementy o niskim stanie na stronie głównej"
-#: common/models.py:1248
+#: common/models.py:1255
msgid "Show depleted stock"
msgstr ""
-#: common/models.py:1249
+#: common/models.py:1256
msgid "Show depleted stock items on the homepage"
msgstr ""
-#: common/models.py:1255
+#: common/models.py:1262
msgid "Show needed stock"
msgstr ""
-#: common/models.py:1256
+#: common/models.py:1263
msgid "Show stock items needed for builds on the homepage"
msgstr ""
-#: common/models.py:1262
+#: common/models.py:1269
msgid "Show expired stock"
msgstr ""
-#: common/models.py:1263
+#: common/models.py:1270
msgid "Show expired stock items on the homepage"
msgstr ""
-#: common/models.py:1269
+#: common/models.py:1276
msgid "Show stale stock"
msgstr ""
-#: common/models.py:1270
+#: common/models.py:1277
msgid "Show stale stock items on the homepage"
msgstr ""
-#: common/models.py:1276
+#: common/models.py:1283
msgid "Show pending builds"
msgstr ""
-#: common/models.py:1277
+#: common/models.py:1284
msgid "Show pending builds on the homepage"
msgstr ""
-#: common/models.py:1283
+#: common/models.py:1290
msgid "Show overdue builds"
msgstr ""
-#: common/models.py:1284
+#: common/models.py:1291
msgid "Show overdue builds on the homepage"
msgstr ""
-#: common/models.py:1290
+#: common/models.py:1297
msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:1291
+#: common/models.py:1298
msgid "Show outstanding POs on the homepage"
msgstr ""
-#: common/models.py:1297
+#: common/models.py:1304
msgid "Show overdue POs"
msgstr ""
-#: common/models.py:1298
+#: common/models.py:1305
msgid "Show overdue POs on the homepage"
msgstr ""
-#: common/models.py:1304
+#: common/models.py:1311
msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:1305
+#: common/models.py:1312
msgid "Show outstanding SOs on the homepage"
msgstr ""
-#: common/models.py:1311
+#: common/models.py:1318
msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:1312
+#: common/models.py:1319
msgid "Show overdue SOs on the homepage"
msgstr ""
-#: common/models.py:1317
+#: common/models.py:1324
msgid "Enable label printing"
msgstr ""
-#: common/models.py:1318
+#: common/models.py:1325
msgid "Enable label printing from the web interface"
msgstr ""
-#: common/models.py:1324
+#: common/models.py:1331
msgid "Inline label display"
msgstr ""
-#: common/models.py:1325
+#: common/models.py:1332
msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:1331
+#: common/models.py:1338
msgid "Inline report display"
msgstr ""
-#: common/models.py:1332
+#: common/models.py:1339
msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:1338
+#: common/models.py:1345
msgid "Search Parts"
msgstr "Szukaj części"
-#: common/models.py:1339
+#: common/models.py:1346
msgid "Display parts in search preview window"
msgstr ""
-#: common/models.py:1345
+#: common/models.py:1352
msgid "Seach Supplier Parts"
msgstr ""
-#: common/models.py:1346
+#: common/models.py:1353
msgid "Display supplier parts in search preview window"
msgstr ""
-#: common/models.py:1352
+#: common/models.py:1359
msgid "Search Manufacturer Parts"
msgstr ""
-#: common/models.py:1353
+#: common/models.py:1360
msgid "Display manufacturer parts in search preview window"
msgstr ""
-#: common/models.py:1359
+#: common/models.py:1366
msgid "Hide Inactive Parts"
msgstr ""
-#: common/models.py:1360
+#: common/models.py:1367
msgid "Excluded inactive parts from search preview window"
msgstr ""
-#: common/models.py:1366
+#: common/models.py:1373
msgid "Search Categories"
msgstr ""
-#: common/models.py:1367
+#: common/models.py:1374
msgid "Display part categories in search preview window"
msgstr ""
-#: common/models.py:1373
+#: common/models.py:1380
msgid "Search Stock"
msgstr ""
-#: common/models.py:1374
+#: common/models.py:1381
msgid "Display stock items in search preview window"
msgstr ""
-#: common/models.py:1380
+#: common/models.py:1387
msgid "Hide Unavailable Stock Items"
msgstr ""
-#: common/models.py:1381
+#: common/models.py:1388
msgid "Exclude stock items which are not available from the search preview window"
msgstr ""
-#: common/models.py:1387
+#: common/models.py:1394
msgid "Search Locations"
msgstr ""
-#: common/models.py:1388
+#: common/models.py:1395
msgid "Display stock locations in search preview window"
msgstr ""
-#: common/models.py:1394
+#: common/models.py:1401
msgid "Search Companies"
msgstr ""
-#: common/models.py:1395
+#: common/models.py:1402
msgid "Display companies in search preview window"
msgstr ""
-#: common/models.py:1401
+#: common/models.py:1408
msgid "Search Purchase Orders"
msgstr ""
-#: common/models.py:1402
+#: common/models.py:1409
msgid "Display purchase orders in search preview window"
msgstr ""
-#: common/models.py:1408
+#: common/models.py:1415
msgid "Exclude Inactive Purchase Orders"
msgstr ""
-#: common/models.py:1409
+#: common/models.py:1416
msgid "Exclude inactive purchase orders from search preview window"
msgstr ""
-#: common/models.py:1415
+#: common/models.py:1422
msgid "Search Sales Orders"
msgstr ""
-#: common/models.py:1416
+#: common/models.py:1423
msgid "Display sales orders in search preview window"
msgstr ""
-#: common/models.py:1422
+#: common/models.py:1429
msgid "Exclude Inactive Sales Orders"
msgstr ""
-#: common/models.py:1423
+#: common/models.py:1430
msgid "Exclude inactive sales orders from search preview window"
msgstr ""
-#: common/models.py:1429
+#: common/models.py:1436
msgid "Search Preview Results"
msgstr ""
-#: common/models.py:1430
+#: common/models.py:1437
msgid "Number of results to show in each section of the search preview window"
msgstr ""
-#: common/models.py:1436
+#: common/models.py:1443
msgid "Show Quantity in Forms"
msgstr "Pokaż ilość w formularzach"
-#: common/models.py:1437
+#: common/models.py:1444
msgid "Display available part quantity in some forms"
msgstr ""
-#: common/models.py:1443
+#: common/models.py:1450
msgid "Escape Key Closes Forms"
msgstr ""
-#: common/models.py:1444
+#: common/models.py:1451
msgid "Use the escape key to close modal forms"
msgstr ""
-#: common/models.py:1450
+#: common/models.py:1457
msgid "Fixed Navbar"
msgstr "Stały pasek nawigacyjny"
-#: common/models.py:1451
+#: common/models.py:1458
msgid "The navbar position is fixed to the top of the screen"
msgstr ""
-#: common/models.py:1457
+#: common/models.py:1464
msgid "Date Format"
msgstr "Format daty"
-#: common/models.py:1458
+#: common/models.py:1465
msgid "Preferred format for displaying dates"
msgstr "Preferowany format wyświetlania dat"
-#: common/models.py:1472 part/templates/part/detail.html:39
+#: common/models.py:1479 part/templates/part/detail.html:39
msgid "Part Scheduling"
msgstr "Planowanie komponentów"
-#: common/models.py:1473
+#: common/models.py:1480
msgid "Display part scheduling information"
msgstr ""
-#: common/models.py:1537 company/forms.py:37
+#: common/models.py:1544 company/forms.py:37
msgid "Price break quantity"
msgstr ""
-#: common/models.py:1544 company/serializers.py:288
-#: company/templates/company/supplier_part.html:263 order/models.py:949
-#: templates/js/translated/part.js:998 templates/js/translated/part.js:1974
+#: common/models.py:1551 company/serializers.py:290
+#: company/templates/company/supplier_part.html:263 order/models.py:965
+#: templates/js/translated/part.js:1042 templates/js/translated/part.js:2070
msgid "Price"
msgstr "Cena"
-#: common/models.py:1545
+#: common/models.py:1552
msgid "Unit price at specified quantity"
msgstr ""
-#: common/models.py:1705 common/models.py:1883
+#: common/models.py:1712 common/models.py:1890
msgid "Endpoint"
msgstr "Punkt końcowy"
-#: common/models.py:1706
+#: common/models.py:1713
msgid "Endpoint at which this webhook is received"
msgstr ""
-#: common/models.py:1715
+#: common/models.py:1722
msgid "Name for this webhook"
msgstr ""
-#: common/models.py:1720 part/models.py:911 plugin/models.py:99
+#: common/models.py:1727 part/models.py:911 plugin/models.py:99
#: templates/js/translated/table_filters.js:34
#: templates/js/translated/table_filters.js:96
#: templates/js/translated/table_filters.js:308
@@ -2457,79 +2474,89 @@ msgstr ""
msgid "Active"
msgstr "Aktywny"
-#: common/models.py:1721
+#: common/models.py:1728
msgid "Is this webhook active"
msgstr ""
-#: common/models.py:1735
+#: common/models.py:1742
msgid "Token"
msgstr ""
-#: common/models.py:1736
+#: common/models.py:1743
msgid "Token for access"
msgstr ""
-#: common/models.py:1743
+#: common/models.py:1750
msgid "Secret"
msgstr "Sekret"
-#: common/models.py:1744
+#: common/models.py:1751
msgid "Shared secret for HMAC"
msgstr "Współdzielony sekret dla HMAC"
-#: common/models.py:1850
+#: common/models.py:1857
msgid "Message ID"
msgstr "Id wiadomości"
-#: common/models.py:1851
+#: common/models.py:1858
msgid "Unique identifier for this message"
msgstr "Unikalny identyfikator dla tej wiadomości"
-#: common/models.py:1859
+#: common/models.py:1866
msgid "Host"
msgstr ""
-#: common/models.py:1860
+#: common/models.py:1867
msgid "Host from which this message was received"
msgstr "Host, od którego otrzymano tę wiadomość"
-#: common/models.py:1867
+#: common/models.py:1874
msgid "Header"
msgstr "Nagłówek"
-#: common/models.py:1868
+#: common/models.py:1875
msgid "Header of this message"
msgstr "Nagłówek tej wiadomości"
-#: common/models.py:1874
+#: common/models.py:1881
msgid "Body"
msgstr "Zawartość"
-#: common/models.py:1875
+#: common/models.py:1882
msgid "Body of this message"
msgstr ""
-#: common/models.py:1884
+#: common/models.py:1891
msgid "Endpoint on which this message was received"
msgstr ""
-#: common/models.py:1889
+#: common/models.py:1896
msgid "Worked on"
msgstr ""
-#: common/models.py:1890
+#: common/models.py:1897
msgid "Was the work on this message finished?"
msgstr ""
+#: common/notifications.py:292
+#, python-brace-format
+msgid "New {verbose_name}"
+msgstr ""
+
+#: common/notifications.py:294
+#, python-brace-format
+msgid "A new {verbose_name} has been created and ,assigned to you"
+msgstr ""
+
#: common/views.py:87 order/templates/order/purchase_order_detail.html:23
-#: order/views.py:102 part/views.py:191
+#: order/views.py:102 part/views.py:116
#: templates/patterns/wizard/upload.html:37
msgid "Upload File"
msgstr "Wyślij plik"
#: common/views.py:88 order/views.py:103
#: part/templates/part/import_wizard/ajax_match_fields.html:45
-#: part/views.py:192 templates/patterns/wizard/match_fields.html:51
+#: part/views.py:117 templates/patterns/wizard/match_fields.html:51
msgid "Match Fields"
msgstr ""
@@ -2545,19 +2572,19 @@ msgstr ""
msgid "Parts imported"
msgstr ""
-#: common/views.py:507 order/templates/order/order_wizard/match_parts.html:19
+#: common/views.py:511 order/templates/order/order_wizard/match_parts.html:19
#: part/templates/part/import_wizard/match_references.html:19
#: templates/patterns/wizard/match_fields.html:26
#: templates/patterns/wizard/upload.html:35
msgid "Previous Step"
msgstr "Poprzedni krok"
-#: company/forms.py:16 part/forms.py:21
+#: company/forms.py:16 part/forms.py:18
#: templates/InvenTree/settings/mixins/urls.html:14
msgid "URL"
msgstr ""
-#: company/forms.py:17 part/forms.py:22
+#: company/forms.py:17 part/forms.py:19
msgid "Image URL"
msgstr "URL zdjęcia"
@@ -2571,7 +2598,7 @@ msgstr "Opis firmy"
#: company/models.py:104 company/templates/company/company_base.html:100
#: templates/InvenTree/settings/plugin_settings.html:55
-#: templates/js/translated/company.js:405
+#: templates/js/translated/company.js:399
msgid "Website"
msgstr "Strona WWW"
@@ -2644,9 +2671,9 @@ msgstr "jest producentem"
msgid "Does this company manufacture parts?"
msgstr "Czy to przedsiębiorstwo produkuje części?"
-#: company/models.py:144 company/serializers.py:294
-#: company/templates/company/company_base.html:106 part/serializers.py:137
-#: part/serializers.py:168 stock/serializers.py:162
+#: company/models.py:144 company/serializers.py:296
+#: company/templates/company/company_base.html:106 part/serializers.py:139
+#: part/serializers.py:170 stock/serializers.py:162
msgid "Currency"
msgstr "Waluta"
@@ -2667,10 +2694,10 @@ msgstr "Wybierz część"
#: company/templates/company/manufacturer_part.html:90
#: company/templates/company/supplier_part.html:103
#: stock/templates/stock/item_base.html:212
-#: templates/js/translated/company.js:389
-#: templates/js/translated/company.js:488
-#: templates/js/translated/company.js:632
-#: templates/js/translated/company.js:917 templates/js/translated/part.js:235
+#: templates/js/translated/company.js:383
+#: templates/js/translated/company.js:484
+#: templates/js/translated/company.js:617
+#: templates/js/translated/company.js:902 templates/js/translated/part.js:235
#: templates/js/translated/table_filters.js:411
msgid "Manufacturer"
msgstr "Producent"
@@ -2681,11 +2708,11 @@ msgstr "Wybierz producenta"
#: company/models.py:266 company/templates/company/manufacturer_part.html:101
#: company/templates/company/supplier_part.html:111
-#: templates/js/translated/company.js:255
-#: templates/js/translated/company.js:487
-#: templates/js/translated/company.js:648
-#: templates/js/translated/company.js:935 templates/js/translated/order.js:1907
-#: templates/js/translated/part.js:246 templates/js/translated/part.js:956
+#: templates/js/translated/company.js:256
+#: templates/js/translated/company.js:483
+#: templates/js/translated/company.js:633
+#: templates/js/translated/company.js:920 templates/js/translated/order.js:1907
+#: templates/js/translated/part.js:246 templates/js/translated/part.js:1000
msgid "MPN"
msgstr ""
@@ -2714,9 +2741,9 @@ msgstr ""
#: company/models.py:361
#: report/templates/report/inventree_test_report_base.html:95
-#: stock/models.py:2080 templates/js/translated/company.js:540
-#: templates/js/translated/company.js:763 templates/js/translated/part.js:776
-#: templates/js/translated/stock.js:1294
+#: stock/models.py:2084 templates/js/translated/company.js:531
+#: templates/js/translated/company.js:748 templates/js/translated/part.js:820
+#: templates/js/translated/stock.js:1304
msgid "Value"
msgstr "Wartość"
@@ -2724,10 +2751,10 @@ msgstr "Wartość"
msgid "Parameter value"
msgstr ""
-#: company/models.py:368 part/models.py:878 part/models.py:2339
+#: company/models.py:368 part/models.py:878 part/models.py:2327
#: part/templates/part/part_base.html:280
#: templates/InvenTree/settings/settings.html:351
-#: templates/js/translated/company.js:769 templates/js/translated/part.js:782
+#: templates/js/translated/company.js:754 templates/js/translated/part.js:826
msgid "Units"
msgstr "Jednostki"
@@ -2740,13 +2767,14 @@ msgid "Linked manufacturer part must reference the same base part"
msgstr ""
#: company/models.py:487 company/templates/company/company_base.html:81
-#: company/templates/company/supplier_part.html:87 order/models.py:303
+#: company/templates/company/supplier_part.html:87 order/models.py:308
#: order/templates/order/order_base.html:112 part/bom.py:237 part/bom.py:265
#: stock/templates/stock/item_base.html:229
-#: templates/js/translated/company.js:254
-#: templates/js/translated/company.js:393
-#: templates/js/translated/company.js:891 templates/js/translated/order.js:1643
-#: templates/js/translated/part.js:216 templates/js/translated/part.js:924
+#: templates/email/overdue_purchase_order.html:16
+#: templates/js/translated/company.js:255
+#: templates/js/translated/company.js:387
+#: templates/js/translated/company.js:876 templates/js/translated/order.js:1643
+#: templates/js/translated/part.js:216 templates/js/translated/part.js:968
#: templates/js/translated/table_filters.js:415
msgid "Supplier"
msgstr "Dostawca"
@@ -2756,9 +2784,9 @@ msgid "Select supplier"
msgstr "Wybierz dostawcę"
#: company/models.py:493 company/templates/company/supplier_part.html:97
-#: part/bom.py:238 part/bom.py:266 templates/js/translated/company.js:253
+#: part/bom.py:238 part/bom.py:266 templates/js/translated/company.js:254
#: templates/js/translated/order.js:1894 templates/js/translated/part.js:227
-#: templates/js/translated/part.js:942
+#: templates/js/translated/part.js:986
msgid "SKU"
msgstr ""
@@ -2779,23 +2807,23 @@ msgid "Supplier part description"
msgstr ""
#: company/models.py:518 company/templates/company/supplier_part.html:125
-#: part/models.py:2573 part/templates/part/upload_bom.html:59
+#: part/models.py:2561 part/templates/part/upload_bom.html:59
#: report/templates/report/inventree_po_report.html:92
#: report/templates/report/inventree_so_report.html:93 stock/serializers.py:387
msgid "Note"
msgstr "Uwaga"
-#: company/models.py:522 part/models.py:1688
+#: company/models.py:522 part/models.py:1683
msgid "base cost"
msgstr "koszt podstawowy"
-#: company/models.py:522 part/models.py:1688
+#: company/models.py:522 part/models.py:1683
msgid "Minimum charge (e.g. stocking fee)"
msgstr ""
#: company/models.py:524 company/templates/company/supplier_part.html:118
#: stock/models.py:608 stock/templates/stock/item_base.html:245
-#: templates/js/translated/company.js:967 templates/js/translated/stock.js:1912
+#: templates/js/translated/company.js:952 templates/js/translated/stock.js:1922
msgid "Packaging"
msgstr "Opakowanie"
@@ -2803,7 +2831,7 @@ msgstr "Opakowanie"
msgid "Part packaging"
msgstr "Opakowanie części"
-#: company/models.py:526 part/models.py:1690
+#: company/models.py:526 part/models.py:1685
msgid "multiple"
msgstr "wielokrotność"
@@ -2825,7 +2853,7 @@ msgstr "Kod Waluty"
#: company/templates/company/company_base.html:8
#: company/templates/company/company_base.html:12
-#: templates/InvenTree/search.html:177 templates/js/translated/company.js:378
+#: templates/InvenTree/search.html:177 templates/js/translated/company.js:372
msgid "Company"
msgstr "Firma"
@@ -2843,7 +2871,7 @@ msgid "Edit company information"
msgstr ""
#: company/templates/company/company_base.html:34
-#: templates/js/translated/company.js:321
+#: templates/js/translated/company.js:315
msgid "Edit Company"
msgstr "Edytuj firmę"
@@ -2866,12 +2894,13 @@ msgstr "Prześlij nowy obraz"
msgid "Download image from URL"
msgstr "Pobierz obraz z adresu URL"
-#: company/templates/company/company_base.html:86 order/models.py:649
+#: company/templates/company/company_base.html:86 order/models.py:665
#: order/templates/order/sales_order_base.html:116 stock/models.py:627
-#: stock/models.py:628 stock/serializers.py:758
+#: stock/models.py:628 stock/serializers.py:745
#: stock/templates/stock/item_base.html:401
-#: templates/js/translated/company.js:385 templates/js/translated/order.js:2458
-#: templates/js/translated/stock.js:2431
+#: templates/email/overdue_sales_order.html:16
+#: templates/js/translated/company.js:379 templates/js/translated/order.js:2458
+#: templates/js/translated/stock.js:2441
#: templates/js/translated/table_filters.js:419
msgid "Customer"
msgstr "Klient"
@@ -2978,7 +3007,7 @@ msgstr ""
#: company/templates/company/detail.html:147
#: order/templates/order/sales_orders.html:20
msgid "Create new sales order"
-msgstr ""
+msgstr "Utwórz nowe zlecenie sprzedaży"
#: company/templates/company/detail.html:148
#: order/templates/order/sales_orders.html:21
@@ -2999,7 +3028,7 @@ msgid "Supplier List"
msgstr "Lista dostawców"
#: company/templates/company/manufacturer_part.html:15 company/views.py:45
-#: part/templates/part/prices.html:170 templates/InvenTree/search.html:179
+#: part/templates/part/prices.html:172 templates/InvenTree/search.html:179
#: templates/navbar.html:49
msgid "Manufacturers"
msgstr "Producenci"
@@ -3012,12 +3041,12 @@ msgid "Order part"
msgstr "Zamów komponent"
#: company/templates/company/manufacturer_part.html:39
-#: templates/js/translated/company.js:680
+#: templates/js/translated/company.js:665
msgid "Edit manufacturer part"
msgstr "Edytuj komponent producenta"
#: company/templates/company/manufacturer_part.html:43
-#: templates/js/translated/company.js:681
+#: templates/js/translated/company.js:666
msgid "Delete manufacturer part"
msgstr "Usuń komponent producenta"
@@ -3032,7 +3061,7 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:119
#: company/templates/company/supplier_part.html:15 company/views.py:39
-#: part/templates/part/part_sidebar.html:35 part/templates/part/prices.html:166
+#: part/templates/part/part_sidebar.html:35 part/templates/part/prices.html:168
#: templates/InvenTree/search.html:189 templates/navbar.html:48
msgid "Suppliers"
msgstr "Dostawcy"
@@ -3092,18 +3121,18 @@ msgstr ""
#: company/templates/company/supplier_part.html:7
#: company/templates/company/supplier_part.html:24 stock/models.py:592
#: stock/templates/stock/item_base.html:238
-#: templates/js/translated/company.js:907 templates/js/translated/order.js:884
-#: templates/js/translated/stock.js:1869
+#: templates/js/translated/company.js:892 templates/js/translated/order.js:884
+#: templates/js/translated/stock.js:1879
msgid "Supplier Part"
msgstr ""
#: company/templates/company/supplier_part.html:38
-#: templates/js/translated/company.js:980
+#: templates/js/translated/company.js:965
msgid "Edit supplier part"
msgstr ""
#: company/templates/company/supplier_part.html:42
-#: templates/js/translated/company.js:981
+#: templates/js/translated/company.js:966
msgid "Delete supplier part"
msgstr ""
@@ -3123,7 +3152,7 @@ msgstr "Utwórz nowy towar"
#: company/templates/company/supplier_part.html:148
#: part/templates/part/detail.html:24 stock/templates/stock/location.html:177
-#: templates/js/translated/stock.js:380
+#: templates/js/translated/stock.js:379
msgid "New Stock Item"
msgstr "Nowy towar"
@@ -3144,7 +3173,7 @@ msgstr "Informacja cenowa"
#: company/templates/company/supplier_part.html:191
#: company/templates/company/supplier_part.html:305
-#: part/templates/part/prices.html:274 templates/js/translated/part.js:2046
+#: part/templates/part/prices.html:276 templates/js/translated/part.js:2142
msgid "Add Price Break"
msgstr ""
@@ -3153,12 +3182,12 @@ msgid "No price break information found"
msgstr ""
#: company/templates/company/supplier_part.html:231
-#: templates/js/translated/part.js:2056
+#: templates/js/translated/part.js:2152
msgid "Delete Price Break"
msgstr ""
#: company/templates/company/supplier_part.html:245
-#: templates/js/translated/part.js:2070
+#: templates/js/translated/part.js:2166
msgid "Edit Price Break"
msgstr "Edytuj przedział cenowy"
@@ -3180,9 +3209,9 @@ msgstr "Ostatnio aktualizowane"
#: stock/templates/stock/stock_app_base.html:10
#: templates/InvenTree/search.html:151
#: templates/InvenTree/settings/sidebar.html:43
-#: templates/js/translated/bom.js:554 templates/js/translated/part.js:678
-#: templates/js/translated/part.js:1226 templates/js/translated/part.js:1387
-#: templates/js/translated/stock.js:904 templates/js/translated/stock.js:1687
+#: templates/js/translated/bom.js:554 templates/js/translated/part.js:722
+#: templates/js/translated/part.js:1270 templates/js/translated/part.js:1431
+#: templates/js/translated/stock.js:903 templates/js/translated/stock.js:1697
#: templates/navbar.html:31
msgid "Stock"
msgstr "Stan"
@@ -3209,7 +3238,7 @@ msgstr "Cennik"
#: stock/templates/stock/location.html:173
#: stock/templates/stock/location_sidebar.html:7
#: templates/InvenTree/search.html:153 templates/js/translated/search.js:223
-#: templates/js/translated/stock.js:2307 users/models.py:39
+#: templates/js/translated/stock.js:2317 users/models.py:39
msgid "Stock Items"
msgstr "Towary"
@@ -3238,20 +3267,20 @@ msgstr "Firmy"
msgid "New Company"
msgstr "Nowa firma"
-#: company/views.py:112 part/views.py:576
+#: company/views.py:112 part/views.py:501
msgid "Download Image"
msgstr "Pobierz obraz"
-#: company/views.py:139 part/views.py:606
+#: company/views.py:139 part/views.py:531
msgid "Image size exceeds maximum allowable size for download"
msgstr ""
-#: company/views.py:146 part/views.py:613
+#: company/views.py:146 part/views.py:538
#, python-brace-format
msgid "Invalid response: {code}"
msgstr ""
-#: company/views.py:155 part/views.py:622
+#: company/views.py:155 part/views.py:547
msgid "Supplied URL is not a valid image file"
msgstr ""
@@ -3320,313 +3349,314 @@ msgstr ""
msgid "Part query filters (comma-separated value of key=value pairs)"
msgstr ""
-#: order/models.py:133
+#: order/models.py:134
msgid "Order description"
msgstr "Opis Zamówienia"
-#: order/models.py:135 order/models.py:1236
+#: order/models.py:136 order/models.py:1252
msgid "Link to external page"
msgstr "Link do zewnętrznej witryny"
-#: order/models.py:143
+#: order/models.py:144
msgid "Created By"
msgstr "Utworzony przez"
-#: order/models.py:150
+#: order/models.py:151
msgid "User or group responsible for this order"
msgstr "Użytkownik lub grupa odpowiedzialna za to zamówienie"
-#: order/models.py:155
+#: order/models.py:156
msgid "Order notes"
msgstr "Notatki do zamówienia"
-#: order/models.py:289 order/models.py:639
+#: order/models.py:294 order/models.py:655
msgid "Order reference"
msgstr "Odniesienie zamówienia"
-#: order/models.py:294 order/models.py:654
+#: order/models.py:299 order/models.py:670
msgid "Purchase order status"
msgstr "Status zamówienia zakupu"
-#: order/models.py:304
+#: order/models.py:309
msgid "Company from which the items are being ordered"
msgstr ""
-#: order/models.py:307 order/templates/order/order_base.html:124
+#: order/models.py:312 order/templates/order/order_base.html:124
#: templates/js/translated/order.js:1652
msgid "Supplier Reference"
msgstr ""
-#: order/models.py:307
+#: order/models.py:312
msgid "Supplier order reference code"
msgstr ""
-#: order/models.py:314
+#: order/models.py:319
msgid "received by"
msgstr "odebrane przez"
-#: order/models.py:319
+#: order/models.py:324
msgid "Issue Date"
msgstr "Data wydania"
-#: order/models.py:320
+#: order/models.py:325
msgid "Date order was issued"
msgstr "Data wystawienia zamówienia"
-#: order/models.py:325
+#: order/models.py:330
msgid "Target Delivery Date"
msgstr "Data Dostawy Towaru"
-#: order/models.py:326
+#: order/models.py:331
msgid "Expected date for order delivery. Order will be overdue after this date."
msgstr ""
-#: order/models.py:332
+#: order/models.py:337
msgid "Date order was completed"
msgstr ""
-#: order/models.py:368
+#: order/models.py:373
msgid "Part supplier must match PO supplier"
msgstr ""
-#: order/models.py:512
+#: order/models.py:517
msgid "Quantity must be a positive number"
msgstr "Wartość musi być liczbą dodatnią"
-#: order/models.py:650
+#: order/models.py:666
msgid "Company to which the items are being sold"
msgstr ""
-#: order/models.py:656
+#: order/models.py:672
msgid "Customer Reference "
msgstr ""
-#: order/models.py:656
+#: order/models.py:672
msgid "Customer order reference code"
msgstr ""
-#: order/models.py:661
+#: order/models.py:677
msgid "Target date for order completion. Order will be overdue after this date."
msgstr ""
-#: order/models.py:664 order/models.py:1190
+#: order/models.py:680 order/models.py:1206
#: templates/js/translated/order.js:2505 templates/js/translated/order.js:2656
msgid "Shipment Date"
msgstr "Data wysyłki"
-#: order/models.py:671
+#: order/models.py:687
msgid "shipped by"
msgstr "wysłane przez"
-#: order/models.py:726
+#: order/models.py:742
msgid "Order cannot be completed as no parts have been assigned"
msgstr ""
-#: order/models.py:730
+#: order/models.py:746
msgid "Only a pending order can be marked as complete"
msgstr ""
-#: order/models.py:733
+#: order/models.py:749
msgid "Order cannot be completed as there are incomplete shipments"
msgstr ""
-#: order/models.py:736
+#: order/models.py:752
msgid "Order cannot be completed as there are incomplete line items"
msgstr ""
-#: order/models.py:910
+#: order/models.py:926
msgid "Item quantity"
msgstr "Ilość elementów"
-#: order/models.py:916
+#: order/models.py:932
msgid "Line item reference"
msgstr ""
-#: order/models.py:918
+#: order/models.py:934
msgid "Line item notes"
msgstr ""
-#: order/models.py:923
+#: order/models.py:939
msgid "Target shipping date for this line item"
msgstr ""
-#: order/models.py:941
+#: order/models.py:957
msgid "Context"
msgstr ""
-#: order/models.py:942
+#: order/models.py:958
msgid "Additional context for this line"
msgstr ""
-#: order/models.py:950
+#: order/models.py:966
msgid "Unit price"
msgstr ""
-#: order/models.py:980
+#: order/models.py:996
msgid "Supplier part must match supplier"
msgstr ""
-#: order/models.py:988
+#: order/models.py:1004
msgid "deleted"
msgstr ""
-#: order/models.py:994 order/models.py:1074 order/models.py:1099
-#: order/models.py:1184 order/models.py:1320
+#: order/models.py:1010 order/models.py:1090 order/models.py:1115
+#: order/models.py:1200 order/models.py:1336
#: templates/js/translated/order.js:3112
msgid "Order"
msgstr "Zamówienie"
-#: order/models.py:995 order/models.py:1074
+#: order/models.py:1011 order/models.py:1090
#: order/templates/order/order_base.html:9
#: order/templates/order/order_base.html:18
#: report/templates/report/inventree_po_report.html:76
#: stock/templates/stock/item_base.html:184
+#: templates/email/overdue_purchase_order.html:15
#: templates/js/translated/order.js:885 templates/js/translated/order.js:1621
-#: templates/js/translated/part.js:899 templates/js/translated/stock.js:1846
-#: templates/js/translated/stock.js:2412
+#: templates/js/translated/part.js:943 templates/js/translated/stock.js:1856
+#: templates/js/translated/stock.js:2422
msgid "Purchase Order"
msgstr "Zlecenie zakupu"
-#: order/models.py:1013
+#: order/models.py:1029
msgid "Supplier part"
msgstr ""
-#: order/models.py:1020 order/templates/order/order_base.html:169
+#: order/models.py:1036 order/templates/order/order_base.html:169
#: templates/js/translated/order.js:1318 templates/js/translated/order.js:2009
-#: templates/js/translated/part.js:993 templates/js/translated/part.js:1020
+#: templates/js/translated/part.js:1037 templates/js/translated/part.js:1064
#: templates/js/translated/table_filters.js:330
msgid "Received"
msgstr "Odebrane"
-#: order/models.py:1021
+#: order/models.py:1037
msgid "Number of items received"
msgstr ""
-#: order/models.py:1028 part/templates/part/prices.html:179 stock/models.py:722
+#: order/models.py:1044 part/templates/part/prices.html:181 stock/models.py:722
#: stock/serializers.py:153 stock/templates/stock/item_base.html:191
-#: templates/js/translated/stock.js:1900
+#: templates/js/translated/stock.js:1910
msgid "Purchase Price"
msgstr "Cena zakupu"
-#: order/models.py:1029
+#: order/models.py:1045
msgid "Unit purchase price"
msgstr "Cena zakupu jednostkowego"
-#: order/models.py:1037
+#: order/models.py:1053
msgid "Where does the Purchaser want this item to be stored?"
msgstr "Gdzie kupujący chce przechowywać ten przedmiot?"
-#: order/models.py:1109 part/templates/part/part_pricing.html:112
-#: part/templates/part/prices.html:119 part/templates/part/prices.html:288
+#: order/models.py:1125 part/templates/part/part_pricing.html:115
+#: part/templates/part/prices.html:121 part/templates/part/prices.html:290
msgid "Sale Price"
msgstr "Cena sprzedaży"
-#: order/models.py:1110
+#: order/models.py:1126
msgid "Unit sale price"
msgstr "Jednostkowa cena sprzedaży"
-#: order/models.py:1115
+#: order/models.py:1131
msgid "Shipped quantity"
msgstr "Wysłana ilość"
-#: order/models.py:1191
+#: order/models.py:1207
msgid "Date of shipment"
msgstr "Data wysyłki"
-#: order/models.py:1198
+#: order/models.py:1214
msgid "Checked By"
msgstr "Sprawdzone przez"
-#: order/models.py:1199
+#: order/models.py:1215
msgid "User who checked this shipment"
msgstr "Użytkownik, który sprawdził tę wysyłkę"
-#: order/models.py:1207
+#: order/models.py:1223
msgid "Shipment number"
msgstr "Numer przesyłki"
-#: order/models.py:1214
+#: order/models.py:1230
msgid "Shipment notes"
msgstr "Notatki do przesyłki"
-#: order/models.py:1221
+#: order/models.py:1237
msgid "Tracking Number"
msgstr "Numer śledzenia"
-#: order/models.py:1222
+#: order/models.py:1238
msgid "Shipment tracking information"
msgstr "Informacje o śledzeniu przesyłki"
-#: order/models.py:1229
+#: order/models.py:1245
msgid "Invoice Number"
msgstr ""
-#: order/models.py:1230
+#: order/models.py:1246
msgid "Reference number for associated invoice"
msgstr ""
-#: order/models.py:1248
+#: order/models.py:1264
msgid "Shipment has already been sent"
msgstr "Przesyłka została już wysłana"
-#: order/models.py:1251
+#: order/models.py:1267
msgid "Shipment has no allocated stock items"
msgstr ""
-#: order/models.py:1354 order/models.py:1356
+#: order/models.py:1370 order/models.py:1372
msgid "Stock item has not been assigned"
msgstr ""
-#: order/models.py:1360
+#: order/models.py:1376
msgid "Cannot allocate stock item to a line with a different part"
msgstr ""
-#: order/models.py:1362
+#: order/models.py:1378
msgid "Cannot allocate stock to a line without a part"
msgstr ""
-#: order/models.py:1365
+#: order/models.py:1381
msgid "Allocation quantity cannot exceed stock quantity"
msgstr "Zarezerwowana ilość nie może przekraczać ilości na stanie"
-#: order/models.py:1369
+#: order/models.py:1385
msgid "StockItem is over-allocated"
msgstr ""
-#: order/models.py:1375 order/serializers.py:1045
+#: order/models.py:1391 order/serializers.py:1047
msgid "Quantity must be 1 for serialized stock item"
msgstr ""
-#: order/models.py:1378
+#: order/models.py:1394
msgid "Sales order does not match shipment"
msgstr ""
-#: order/models.py:1379
+#: order/models.py:1395
msgid "Shipment does not match sales order"
msgstr ""
-#: order/models.py:1387
+#: order/models.py:1403
msgid "Line"
msgstr "Linia"
-#: order/models.py:1395 order/serializers.py:1149 order/serializers.py:1273
+#: order/models.py:1411 order/serializers.py:1151 order/serializers.py:1275
#: templates/js/translated/model_renderers.js:301
msgid "Shipment"
msgstr "Przesyłka"
-#: order/models.py:1396
+#: order/models.py:1412
msgid "Sales order shipment reference"
msgstr ""
-#: order/models.py:1408 templates/InvenTree/notifications/notifications.html:70
+#: order/models.py:1424 templates/InvenTree/notifications/notifications.html:70
msgid "Item"
msgstr "Komponent"
-#: order/models.py:1409
+#: order/models.py:1425
msgid "Select stock item to allocate"
msgstr ""
-#: order/models.py:1412
+#: order/models.py:1428
msgid "Enter stock allocation quantity"
msgstr ""
@@ -3662,7 +3692,7 @@ msgstr ""
msgid "Purchase order must match supplier"
msgstr ""
-#: order/serializers.py:406 order/serializers.py:1117
+#: order/serializers.py:406 order/serializers.py:1119
msgid "Line Item"
msgstr ""
@@ -3710,42 +3740,60 @@ msgstr ""
msgid "Supplied barcode values must be unique"
msgstr ""
-#: order/serializers.py:866
+#: order/serializers.py:868
msgid "Sale price currency"
msgstr ""
-#: order/serializers.py:947
+#: order/serializers.py:949
msgid "No shipment details provided"
msgstr ""
-#: order/serializers.py:1006 order/serializers.py:1126
+#: order/serializers.py:1008 order/serializers.py:1128
msgid "Line item is not associated with this order"
msgstr ""
-#: order/serializers.py:1028
+#: order/serializers.py:1030
msgid "Quantity must be positive"
msgstr ""
-#: order/serializers.py:1139
+#: order/serializers.py:1141
msgid "Enter serial numbers to allocate"
msgstr ""
-#: order/serializers.py:1161 order/serializers.py:1281
+#: order/serializers.py:1163 order/serializers.py:1283
msgid "Shipment has already been shipped"
msgstr ""
-#: order/serializers.py:1164 order/serializers.py:1284
+#: order/serializers.py:1166 order/serializers.py:1286
msgid "Shipment is not associated with this order"
msgstr ""
-#: order/serializers.py:1214
+#: order/serializers.py:1216
msgid "No match found for the following serial numbers"
msgstr ""
-#: order/serializers.py:1224
+#: order/serializers.py:1226
msgid "The following serial numbers are already allocated"
msgstr ""
+#: order/tasks.py:26
+msgid "Overdue Purchase Order"
+msgstr ""
+
+#: order/tasks.py:31
+#, python-brace-format
+msgid "Purchase order {po} is now overdue"
+msgstr ""
+
+#: order/tasks.py:88
+msgid "Overdue Sales Order"
+msgstr ""
+
+#: order/tasks.py:93
+#, python-brace-format
+msgid "Sales order {so} is now overdue"
+msgstr ""
+
#: order/templates/order/order_base.html:33
msgid "Print purchase order report"
msgstr ""
@@ -3870,8 +3918,8 @@ msgstr "Wybierz dostawcę części"
#: templates/js/translated/bom.js:77 templates/js/translated/build.js:427
#: templates/js/translated/build.js:579 templates/js/translated/build.js:1972
#: templates/js/translated/order.js:833 templates/js/translated/order.js:1265
-#: templates/js/translated/order.js:2731 templates/js/translated/stock.js:570
-#: templates/js/translated/stock.js:738
+#: templates/js/translated/order.js:2731 templates/js/translated/stock.js:569
+#: templates/js/translated/stock.js:737
#: templates/patterns/wizard/match_fields.html:70
msgid "Remove row"
msgstr "Usuń wiersz"
@@ -3990,7 +4038,7 @@ msgid "Pending Shipments"
msgstr "Oczekujące przesyłki"
#: order/templates/order/sales_order_detail.html:70
-#: templates/attachment_table.html:6 templates/js/translated/bom.js:1053
+#: templates/attachment_table.html:6 templates/js/translated/bom.js:1047
#: templates/js/translated/build.js:1880
msgid "Actions"
msgstr "Akcje"
@@ -4021,47 +4069,47 @@ msgstr ""
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr ""
-#: part/api.py:481
+#: part/api.py:482
msgid "Incoming Purchase Order"
msgstr ""
-#: part/api.py:501
+#: part/api.py:502
msgid "Outgoing Sales Order"
msgstr ""
-#: part/api.py:519
+#: part/api.py:520
msgid "Stock produced by Build Order"
msgstr ""
-#: part/api.py:551
+#: part/api.py:552
msgid "Stock required for Build Order"
msgstr ""
-#: part/api.py:637
+#: part/api.py:638
msgid "Valid"
msgstr "Ważny"
-#: part/api.py:638
+#: part/api.py:639
msgid "Validate entire Bill of Materials"
msgstr ""
-#: part/api.py:644
+#: part/api.py:645
msgid "This option must be selected"
msgstr "Ta opcja musi być zaznaczona"
-#: part/api.py:1010
+#: part/api.py:1011
msgid "Must be greater than zero"
msgstr "Musi być większe niż zero"
-#: part/api.py:1014
+#: part/api.py:1015
msgid "Must be a valid quantity"
msgstr "Musi być prawidłową ilością"
-#: part/api.py:1029
+#: part/api.py:1030
msgid "Specify location for initial part stock"
msgstr ""
-#: part/api.py:1060 part/api.py:1064 part/api.py:1079 part/api.py:1083
+#: part/api.py:1061 part/api.py:1065 part/api.py:1080 part/api.py:1084
msgid "This field is required"
msgstr "To pole jest wymagane"
@@ -4080,17 +4128,13 @@ msgid "Available Stock"
msgstr "Dostępna ilość"
#: part/bom.py:130 part/templates/part/part_base.html:207
-#: templates/js/translated/part.js:517 templates/js/translated/part.js:537
-#: templates/js/translated/part.js:1229 templates/js/translated/part.js:1401
-#: templates/js/translated/part.js:1417
+#: templates/js/translated/part.js:561 templates/js/translated/part.js:581
+#: templates/js/translated/part.js:1273 templates/js/translated/part.js:1445
+#: templates/js/translated/part.js:1461
msgid "On Order"
msgstr "W Zamówieniu"
-#: part/forms.py:59
-msgid "Select part category"
-msgstr "Wybierz kategorię części"
-
-#: part/forms.py:69
+#: part/forms.py:60
msgid "Input quantity for price calculation"
msgstr ""
@@ -4106,7 +4150,7 @@ msgstr "Domyślne słowa kluczowe"
msgid "Default keywords for parts in this category"
msgstr ""
-#: part/models.py:115 part/models.py:2415 part/templates/part/category.html:15
+#: part/models.py:115 part/models.py:2403 part/templates/part/category.html:15
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr "Kategoria komponentu"
@@ -4123,7 +4167,7 @@ msgstr "Kategorie części"
#: part/templates/part/category_sidebar.html:9
#: templates/InvenTree/index.html:85 templates/InvenTree/search.html:82
#: templates/InvenTree/settings/sidebar.html:39
-#: templates/js/translated/part.js:1768 templates/js/translated/search.js:144
+#: templates/js/translated/part.js:1864 templates/js/translated/search.js:144
#: templates/navbar.html:24 users/models.py:37
msgid "Parts"
msgstr "Części"
@@ -4153,7 +4197,7 @@ msgstr ""
msgid "Duplicate IPN not allowed in part settings"
msgstr ""
-#: part/models.py:738 part/models.py:2469
+#: part/models.py:738 part/models.py:2457
msgid "Part name"
msgstr "Nazwa komponentu"
@@ -4163,7 +4207,7 @@ msgstr "Czy szablon"
#: part/models.py:746
msgid "Is this part a template part?"
-msgstr ""
+msgstr "Czy ta część stanowi szablon części?"
#: part/models.py:756
msgid "Is this part a variant of another part?"
@@ -4186,12 +4230,11 @@ msgstr "Słowa kluczowe"
msgid "Part keywords to improve visibility in search results"
msgstr ""
-#: part/models.py:776 part/models.py:2171 part/models.py:2414
+#: part/models.py:776 part/models.py:2159 part/models.py:2402
#: part/templates/part/part_base.html:257
-#: part/templates/part/set_category.html:15
#: templates/InvenTree/notifications/notifications.html:65
#: templates/InvenTree/settings/settings.html:231
-#: templates/js/translated/part.js:1369
+#: templates/js/translated/part.js:1413 templates/js/translated/part.js:1639
msgid "Category"
msgstr "Kategoria"
@@ -4200,8 +4243,8 @@ msgid "Part category"
msgstr ""
#: part/models.py:782 part/templates/part/part_base.html:266
-#: templates/js/translated/part.js:666 templates/js/translated/part.js:1322
-#: templates/js/translated/stock.js:1659
+#: templates/js/translated/part.js:710 templates/js/translated/part.js:1366
+#: templates/js/translated/stock.js:1669
msgid "IPN"
msgstr ""
@@ -4214,7 +4257,7 @@ msgid "Part revision or version number"
msgstr ""
#: part/models.py:790 part/templates/part/part_base.html:273
-#: report/models.py:170 templates/js/translated/part.js:670
+#: report/models.py:170 templates/js/translated/part.js:714
msgid "Revision"
msgstr "Wersja"
@@ -4260,7 +4303,7 @@ msgstr "Czy ta część może być użyta do budowy innych części?"
#: part/models.py:897
msgid "Does this part have tracking for unique items?"
-msgstr ""
+msgstr "Czy ta część wymaga śledzenia każdego towaru z osobna?"
#: part/models.py:902
msgid "Can this part be purchased from external suppliers?"
@@ -4302,317 +4345,321 @@ msgstr ""
msgid "Creation User"
msgstr "Tworzenie użytkownika"
-#: part/models.py:1690
+#: part/models.py:1685
msgid "Sell multiple"
msgstr "Sprzedaj wiele"
-#: part/models.py:2218
+#: part/models.py:2206
msgid "Test templates can only be created for trackable parts"
msgstr ""
-#: part/models.py:2235
+#: part/models.py:2223
msgid "Test with this name already exists for this part"
msgstr ""
-#: part/models.py:2255 templates/js/translated/part.js:1819
-#: templates/js/translated/stock.js:1274
+#: part/models.py:2243 templates/js/translated/part.js:1915
+#: templates/js/translated/stock.js:1284
msgid "Test Name"
msgstr "Nazwa testu"
-#: part/models.py:2256
+#: part/models.py:2244
msgid "Enter a name for the test"
msgstr ""
-#: part/models.py:2261
+#: part/models.py:2249
msgid "Test Description"
msgstr "Testowy opis"
-#: part/models.py:2262
+#: part/models.py:2250
msgid "Enter description for this test"
msgstr "Wprowadź opis do tego testu"
-#: part/models.py:2267 templates/js/translated/part.js:1828
+#: part/models.py:2255 templates/js/translated/part.js:1924
#: templates/js/translated/table_filters.js:294
msgid "Required"
msgstr "Wymagane"
-#: part/models.py:2268
+#: part/models.py:2256
msgid "Is this test required to pass?"
msgstr ""
-#: part/models.py:2273 templates/js/translated/part.js:1836
+#: part/models.py:2261 templates/js/translated/part.js:1932
msgid "Requires Value"
msgstr "Wymaga wartości"
-#: part/models.py:2274
+#: part/models.py:2262
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:2279 templates/js/translated/part.js:1843
+#: part/models.py:2267 templates/js/translated/part.js:1939
msgid "Requires Attachment"
msgstr "Wymaga załącznika"
-#: part/models.py:2280
+#: part/models.py:2268
msgid "Does this test require a file attachment when adding a test result?"
msgstr ""
-#: part/models.py:2288
+#: part/models.py:2276
#, python-brace-format
msgid "Illegal character in template name ({c})"
msgstr ""
-#: part/models.py:2324
+#: part/models.py:2312
msgid "Parameter template name must be unique"
msgstr ""
-#: part/models.py:2332
+#: part/models.py:2320
msgid "Parameter Name"
msgstr ""
-#: part/models.py:2339
+#: part/models.py:2327
msgid "Parameter Units"
msgstr ""
-#: part/models.py:2370
+#: part/models.py:2358
msgid "Parent Part"
msgstr "Część nadrzędna"
-#: part/models.py:2372 part/models.py:2420 part/models.py:2421
+#: part/models.py:2360 part/models.py:2408 part/models.py:2409
#: templates/InvenTree/settings/settings.html:226
msgid "Parameter Template"
msgstr ""
-#: part/models.py:2374
+#: part/models.py:2362
msgid "Data"
msgstr "Dane"
-#: part/models.py:2374
+#: part/models.py:2362
msgid "Parameter Value"
msgstr "Wartość parametru"
-#: part/models.py:2425 templates/InvenTree/settings/settings.html:235
+#: part/models.py:2413 templates/InvenTree/settings/settings.html:235
msgid "Default Value"
msgstr "Wartość domyślna"
-#: part/models.py:2426
+#: part/models.py:2414
msgid "Default Parameter Value"
msgstr ""
-#: part/models.py:2461
+#: part/models.py:2449
msgid "Part ID or part name"
msgstr ""
-#: part/models.py:2464 templates/js/translated/model_renderers.js:200
+#: part/models.py:2452 templates/js/translated/model_renderers.js:200
msgid "Part ID"
msgstr "ID komponentu"
-#: part/models.py:2465
+#: part/models.py:2453
msgid "Unique part ID value"
msgstr "Unikalny wartość ID komponentu"
-#: part/models.py:2468
+#: part/models.py:2456
msgid "Part Name"
msgstr "Nazwa komponentu"
-#: part/models.py:2472
+#: part/models.py:2460
msgid "Part IPN"
msgstr "IPN komponentu"
-#: part/models.py:2473
+#: part/models.py:2461
msgid "Part IPN value"
msgstr "Wartość IPN części"
-#: part/models.py:2476
+#: part/models.py:2464
msgid "Level"
msgstr "Poziom"
-#: part/models.py:2477
+#: part/models.py:2465
msgid "BOM level"
msgstr ""
-#: part/models.py:2546
+#: part/models.py:2534
msgid "Select parent part"
msgstr "Wybierz część nadrzędną"
-#: part/models.py:2554
+#: part/models.py:2542
msgid "Sub part"
msgstr "Podczęść"
-#: part/models.py:2555
+#: part/models.py:2543
msgid "Select part to be used in BOM"
msgstr ""
-#: part/models.py:2561
+#: part/models.py:2549
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:2563 part/templates/part/upload_bom.html:58
-#: templates/js/translated/bom.js:877 templates/js/translated/bom.js:971
+#: part/models.py:2551 part/templates/part/upload_bom.html:58
+#: templates/js/translated/bom.js:871 templates/js/translated/bom.js:965
#: templates/js/translated/table_filters.js:92
msgid "Optional"
msgstr "Opcjonalne"
-#: part/models.py:2563
+#: part/models.py:2551
msgid "This BOM item is optional"
msgstr "Ten element BOM jest opcjonalny"
-#: part/models.py:2566 part/templates/part/upload_bom.html:55
+#: part/models.py:2554 part/templates/part/upload_bom.html:55
msgid "Overage"
msgstr ""
-#: part/models.py:2567
+#: part/models.py:2555
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr ""
-#: part/models.py:2570
+#: part/models.py:2558
msgid "BOM item reference"
msgstr ""
-#: part/models.py:2573
+#: part/models.py:2561
msgid "BOM item notes"
msgstr "Notatki pozycji BOM"
-#: part/models.py:2575
+#: part/models.py:2563
msgid "Checksum"
msgstr "Suma kontrolna"
-#: part/models.py:2575
+#: part/models.py:2563
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:2579 part/templates/part/upload_bom.html:57
-#: templates/js/translated/bom.js:988
+#: part/models.py:2567 part/templates/part/upload_bom.html:57
+#: templates/js/translated/bom.js:982
#: templates/js/translated/table_filters.js:68
#: templates/js/translated/table_filters.js:88
msgid "Inherited"
msgstr "Dziedziczone"
-#: part/models.py:2580
+#: part/models.py:2568
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr ""
-#: part/models.py:2585 part/templates/part/upload_bom.html:56
-#: templates/js/translated/bom.js:980
+#: part/models.py:2573 part/templates/part/upload_bom.html:56
+#: templates/js/translated/bom.js:974
msgid "Allow Variants"
msgstr "Zezwalaj na warianty"
-#: part/models.py:2586
+#: part/models.py:2574
msgid "Stock items for variant parts can be used for this BOM item"
msgstr ""
-#: part/models.py:2664 stock/models.py:460
+#: part/models.py:2652 stock/models.py:460
msgid "Quantity must be integer value for trackable parts"
msgstr ""
-#: part/models.py:2673 part/models.py:2675
+#: part/models.py:2661 part/models.py:2663
msgid "Sub part must be specified"
msgstr ""
-#: part/models.py:2780
+#: part/models.py:2768
msgid "BOM Item Substitute"
msgstr ""
-#: part/models.py:2801
+#: part/models.py:2789
msgid "Substitute part cannot be the same as the master part"
msgstr ""
-#: part/models.py:2814
+#: part/models.py:2802
msgid "Parent BOM item"
msgstr ""
-#: part/models.py:2822
+#: part/models.py:2810
msgid "Substitute part"
msgstr "Część zastępcza"
-#: part/models.py:2833
+#: part/models.py:2825
msgid "Part 1"
msgstr "Część 1"
-#: part/models.py:2837
+#: part/models.py:2829
msgid "Part 2"
msgstr "Część 2"
-#: part/models.py:2837
+#: part/models.py:2829
msgid "Select Related Part"
msgstr "Wybierz powiązaną część"
-#: part/models.py:2868
-msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique"
+#: part/models.py:2847
+msgid "Part relationship cannot be created between a part and itself"
msgstr ""
-#: part/serializers.py:138 part/serializers.py:169 stock/serializers.py:163
+#: part/models.py:2851
+msgid "Duplicate relationship already exists"
+msgstr ""
+
+#: part/serializers.py:140 part/serializers.py:171 stock/serializers.py:163
msgid "Purchase currency of this stock item"
msgstr "Waluta zakupu tego towaru"
-#: part/serializers.py:794
+#: part/serializers.py:796
msgid "Select part to copy BOM from"
msgstr ""
-#: part/serializers.py:802
+#: part/serializers.py:804
msgid "Remove Existing Data"
msgstr "Usuń istniejące dane"
-#: part/serializers.py:803
+#: part/serializers.py:805
msgid "Remove existing BOM items before copying"
msgstr ""
-#: part/serializers.py:808
+#: part/serializers.py:810
msgid "Include Inherited"
msgstr ""
-#: part/serializers.py:809
+#: part/serializers.py:811
msgid "Include BOM items which are inherited from templated parts"
msgstr ""
-#: part/serializers.py:814
+#: part/serializers.py:816
msgid "Skip Invalid Rows"
msgstr "Pomiń nieprawidłowe wiersze"
-#: part/serializers.py:815
+#: part/serializers.py:817
msgid "Enable this option to skip invalid rows"
msgstr "Włącz tę opcję, aby pominąć nieprawidłowe wiersze"
-#: part/serializers.py:820
+#: part/serializers.py:822
msgid "Copy Substitute Parts"
msgstr ""
-#: part/serializers.py:821
+#: part/serializers.py:823
msgid "Copy substitute parts when duplicate BOM items"
msgstr ""
-#: part/serializers.py:861
+#: part/serializers.py:863
msgid "Clear Existing BOM"
msgstr "Wyczyść istniejący BOM"
-#: part/serializers.py:862
+#: part/serializers.py:864
msgid "Delete existing BOM items before uploading"
msgstr ""
-#: part/serializers.py:892
+#: part/serializers.py:894
msgid "No part column specified"
msgstr ""
-#: part/serializers.py:935
+#: part/serializers.py:937
msgid "Multiple matching parts found"
msgstr ""
-#: part/serializers.py:938
+#: part/serializers.py:940
msgid "No matching part found"
msgstr ""
-#: part/serializers.py:941
+#: part/serializers.py:943
msgid "Part is not designated as a component"
msgstr ""
-#: part/serializers.py:950
+#: part/serializers.py:952
msgid "Quantity not provided"
msgstr "Nie podano ilości"
-#: part/serializers.py:958
+#: part/serializers.py:960
msgid "Invalid quantity"
msgstr "Nieprawidłowa ilość"
-#: part/serializers.py:979
+#: part/serializers.py:981
msgid "At least one BOM item is required"
msgstr ""
@@ -5088,10 +5135,10 @@ msgid "Part is virtual (not a physical part)"
msgstr "Część jest wirtualna (nie fizyczna)"
#: part/templates/part/part_base.html:143
-#: templates/js/translated/company.js:623
-#: templates/js/translated/company.js:882
+#: templates/js/translated/company.js:608
+#: templates/js/translated/company.js:867
#: templates/js/translated/model_renderers.js:192
-#: templates/js/translated/part.js:581 templates/js/translated/part.js:658
+#: templates/js/translated/part.js:625 templates/js/translated/part.js:702
msgid "Inactive"
msgstr "Nieaktywny"
@@ -5120,13 +5167,13 @@ msgstr ""
msgid "Allocated to Sales Orders"
msgstr "Przypisane do zamówień sprzedaży"
-#: part/templates/part/part_base.html:232 templates/js/translated/bom.js:1009
+#: part/templates/part/part_base.html:232 templates/js/translated/bom.js:1003
msgid "Can Build"
msgstr ""
-#: part/templates/part/part_base.html:238 templates/js/translated/part.js:520
-#: templates/js/translated/part.js:540 templates/js/translated/part.js:1233
-#: templates/js/translated/part.js:1405 templates/js/translated/part.js:1421
+#: part/templates/part/part_base.html:238 templates/js/translated/part.js:564
+#: templates/js/translated/part.js:584 templates/js/translated/part.js:1277
+#: templates/js/translated/part.js:1449 templates/js/translated/part.js:1465
msgid "Building"
msgstr ""
@@ -5143,7 +5190,7 @@ msgstr "Ostatni numer seryjny"
msgid "Search for serial number"
msgstr "Szukaj numeru seryjnego"
-#: part/templates/part/part_base.html:443 part/templates/part/prices.html:147
+#: part/templates/part/part_base.html:443 part/templates/part/prices.html:149
msgid "Calculate"
msgstr "Oblicz"
@@ -5161,54 +5208,55 @@ msgstr "Cennik dostawcy"
#: part/templates/part/part_pricing.html:26
#: part/templates/part/part_pricing.html:52
-#: part/templates/part/part_pricing.html:100
-#: part/templates/part/part_pricing.html:115 part/templates/part/prices.html:28
-#: part/templates/part/prices.html:55 part/templates/part/prices.html:106
-#: part/templates/part/prices.html:123
+#: part/templates/part/part_pricing.html:103
+#: part/templates/part/part_pricing.html:118 part/templates/part/prices.html:28
+#: part/templates/part/prices.html:55 part/templates/part/prices.html:108
+#: part/templates/part/prices.html:125
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:104
-#: part/templates/part/part_pricing.html:119 part/templates/part/prices.html:35
-#: part/templates/part/prices.html:62 part/templates/part/prices.html:111
-#: part/templates/part/prices.html:128
+#: part/templates/part/part_pricing.html:107
+#: part/templates/part/part_pricing.html:122 part/templates/part/prices.html:35
+#: part/templates/part/prices.html:62 part/templates/part/prices.html:113
+#: part/templates/part/prices.html:130
msgid "Total Cost"
msgstr "Całkowity Koszt"
#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:43
-#: templates/js/translated/bom.js:963
+#: templates/js/translated/bom.js:957
msgid "No supplier pricing available"
msgstr "Brak dostępnych cen dostawców"
#: part/templates/part/part_pricing.html:48 part/templates/part/prices.html:52
-#: part/templates/part/prices.html:246
+#: part/templates/part/prices.html:248
msgid "BOM Pricing"
msgstr ""
-#: part/templates/part/part_pricing.html:65 part/templates/part/prices.html:72
+#: part/templates/part/part_pricing.html:66 part/templates/part/prices.html:72
msgid "Unit Purchase Price"
msgstr "Cena zakupu jednostkowego"
-#: part/templates/part/part_pricing.html:71 part/templates/part/prices.html:79
+#: part/templates/part/part_pricing.html:72 part/templates/part/prices.html:79
msgid "Total Purchase Price"
msgstr "Całkowita cena zakupu"
-#: part/templates/part/part_pricing.html:81 part/templates/part/prices.html:89
+#: part/templates/part/part_pricing.html:82 part/templates/part/prices.html:89
msgid "Note: BOM pricing is incomplete for this part"
msgstr "Uwaga: cena BOM jest niekompletna dla tej części"
-#: part/templates/part/part_pricing.html:88 part/templates/part/prices.html:96
+#: part/templates/part/part_pricing.html:91 part/templates/part/prices.html:98
msgid "No BOM pricing available"
msgstr "Brak dostępnych cen BOM"
-#: part/templates/part/part_pricing.html:97 part/templates/part/prices.html:105
+#: part/templates/part/part_pricing.html:100
+#: part/templates/part/prices.html:107
msgid "Internal Price"
msgstr "Cena wewnętrzna"
-#: part/templates/part/part_pricing.html:128
-#: part/templates/part/prices.html:137
+#: part/templates/part/part_pricing.html:131
+#: part/templates/part/prices.html:139
msgid "No pricing information is available for this part."
msgstr "Brak dostępnych informacji o cenach dla tej części."
@@ -5232,45 +5280,6 @@ msgstr "Szablony testowe"
msgid "Select from existing images"
msgstr "Wybierz z istniejących obrazów"
-#: part/templates/part/partial_delete.html:9
-#, python-format
-msgid "Part '%(full_name)s' cannot be deleted as it is still marked as active.\n"
-"
Disable the \"Active\" part attribute and re-try.\n"
-" "
-msgstr "Część '%(full_name)s' nie może zostać usunięta, ponieważ jest nadal oznaczona jako aktywna.\n"
-"
Wyłącz atrybut części \"Aktywne\" i spróbuj ponownie.\n"
-" "
-
-#: part/templates/part/partial_delete.html:17
-#, python-format
-msgid "Are you sure you want to delete part '%(full_name)s'?"
-msgstr "Czy na pewno chcesz usunąć część '%(full_name)s'?"
-
-#: part/templates/part/partial_delete.html:22
-#, python-format
-msgid "This part is used in BOMs for %(count)s other parts. If you delete this part, the BOMs for the following parts will be updated"
-msgstr "Ta część jest używana w BOM-ach dla %(count)s innych części. Jeśli usuniesz tę część, BOM-y dla następujących części zostaną zaktualizowane"
-
-#: part/templates/part/partial_delete.html:32
-#, python-format
-msgid "There are %(count)s stock entries defined for this part. If you delete this part, the following stock entries will also be deleted:"
-msgstr ""
-
-#: part/templates/part/partial_delete.html:43
-#, python-format
-msgid "There are %(count)s manufacturers defined for this part. If you delete this part, the following manufacturer parts will also be deleted:"
-msgstr ""
-
-#: part/templates/part/partial_delete.html:54
-#, python-format
-msgid "There are %(count)s suppliers defined for this part. If you delete this part, the following supplier parts will also be deleted:"
-msgstr ""
-
-#: part/templates/part/partial_delete.html:67
-#, python-format
-msgid "There are %(count)s unique parts tracked for '%(full_name)s'. Deleting this part will permanently remove this tracking information."
-msgstr ""
-
#: part/templates/part/prices.html:19
msgid "Pricing ranges"
msgstr "Przedziały cenowe"
@@ -5287,66 +5296,58 @@ msgstr "Pokaż cenę zakupu"
msgid "Show BOM cost"
msgstr "Pokaż koszt BOM"
-#: part/templates/part/prices.html:120
+#: part/templates/part/prices.html:122
msgid "Show sale cost"
msgstr "Pokaż koszt sprzedaży"
-#: part/templates/part/prices.html:121
+#: part/templates/part/prices.html:123
msgid "Show sale price"
msgstr "Pokaż cenę sprzedaży"
-#: part/templates/part/prices.html:143
+#: part/templates/part/prices.html:145
msgid "Calculation parameters"
msgstr "Parametry obliczeniowe"
-#: part/templates/part/prices.html:158 templates/js/translated/bom.js:957
+#: part/templates/part/prices.html:160 templates/js/translated/bom.js:951
msgid "Supplier Cost"
msgstr "Koszty dostawcy"
-#: part/templates/part/prices.html:159 part/templates/part/prices.html:180
-#: part/templates/part/prices.html:204 part/templates/part/prices.html:234
-#: part/templates/part/prices.html:260 part/templates/part/prices.html:289
+#: part/templates/part/prices.html:161 part/templates/part/prices.html:182
+#: part/templates/part/prices.html:206 part/templates/part/prices.html:236
+#: part/templates/part/prices.html:262 part/templates/part/prices.html:291
msgid "Jump to overview"
msgstr "Przejdź do przeglądu"
-#: part/templates/part/prices.html:184
+#: part/templates/part/prices.html:186
msgid "Stock Pricing"
msgstr ""
-#: part/templates/part/prices.html:193
+#: part/templates/part/prices.html:195
msgid "No stock pricing history is available for this part."
msgstr ""
-#: part/templates/part/prices.html:203
+#: part/templates/part/prices.html:205
msgid "Internal Cost"
msgstr "Koszt wewnętrzny"
-#: part/templates/part/prices.html:218
+#: part/templates/part/prices.html:220
msgid "Add Internal Price Break"
msgstr ""
-#: part/templates/part/prices.html:233
+#: part/templates/part/prices.html:235
msgid "BOM Cost"
msgstr "Koszt BOM"
-#: part/templates/part/prices.html:259
+#: part/templates/part/prices.html:261
msgid "Sale Cost"
msgstr "Koszt sprzedaży"
-#: part/templates/part/prices.html:300
+#: part/templates/part/prices.html:302
msgid "No sale pice history available for this part."
msgstr ""
-#: part/templates/part/set_category.html:9
-msgid "Set category for the following parts"
-msgstr ""
-
-#: part/templates/part/set_category.html:32
-msgid "Remove part"
-msgstr "Usuń część"
-
-#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:543
-#: templates/js/translated/part.js:1221 templates/js/translated/part.js:1425
+#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:587
+#: templates/js/translated/part.js:1265 templates/js/translated/part.js:1469
msgid "No Stock"
msgstr "Brak w magazynie"
@@ -5409,56 +5410,39 @@ msgstr "Nieznana baza danych"
msgid "{title} v{version}"
msgstr ""
-#: part/views.py:74
-msgid "Set Part Category"
-msgstr "Ustaw kategorię części"
-
-#: part/views.py:122
-#, python-brace-format
-msgid "Set category for {n} parts"
-msgstr ""
-
-#: part/views.py:193
+#: part/views.py:118
msgid "Match References"
msgstr ""
-#: part/views.py:494
+#: part/views.py:419
msgid "None"
msgstr "Żaden"
-#: part/views.py:556
+#: part/views.py:481
msgid "Part QR Code"
msgstr "Kod QR części"
-#: part/views.py:650
+#: part/views.py:575
msgid "Select Part Image"
msgstr "Wybierz obrazek części"
-#: part/views.py:676
+#: part/views.py:601
msgid "Updated part image"
msgstr "Zaktualizowano zdjęcie części"
-#: part/views.py:679
+#: part/views.py:604
msgid "Part image not found"
msgstr "Nie znaleziono obrazka części"
-#: part/views.py:768
-msgid "Confirm Part Deletion"
-msgstr "Potwierdź usunięcie części"
-
-#: part/views.py:776
-msgid "Part was deleted"
-msgstr "Część została usunięta"
-
-#: part/views.py:785
+#: part/views.py:693
msgid "Part Pricing"
msgstr "Cennik części"
-#: part/views.py:976
+#: part/views.py:884
msgid "Delete Part Category"
msgstr ""
-#: part/views.py:983
+#: part/views.py:891
msgid "Part category was deleted"
msgstr ""
@@ -5518,21 +5502,21 @@ msgstr ""
msgid "Label printing failed"
msgstr ""
-#: plugin/builtin/integration/core_notifications.py:28
+#: plugin/builtin/integration/core_notifications.py:29
msgid "InvenTree contributors"
msgstr ""
-#: plugin/builtin/integration/core_notifications.py:29
+#: plugin/builtin/integration/core_notifications.py:30
msgid "Integrated outgoing notificaton methods"
msgstr ""
-#: plugin/builtin/integration/core_notifications.py:33
-#: plugin/builtin/integration/core_notifications.py:52
-msgid "Enable email notifications"
-msgstr ""
-
#: plugin/builtin/integration/core_notifications.py:34
#: plugin/builtin/integration/core_notifications.py:53
+msgid "Enable email notifications"
+msgstr ""
+
+#: plugin/builtin/integration/core_notifications.py:35
+#: plugin/builtin/integration/core_notifications.py:54
msgid "Allow sending of emails for event notifications"
msgstr ""
@@ -5648,15 +5632,19 @@ msgstr "Instalacja nie została potwierdzona"
msgid "Either packagename of URL must be provided"
msgstr ""
-#: report/api.py:166
+#: report/api.py:179
msgid "No valid objects provided to template"
msgstr ""
-#: report/api.py:198 report/api.py:239
+#: report/api.py:215 report/api.py:256
#, python-brace-format
msgid "Template file '{template}' is missing or does not exist"
msgstr ""
+#: report/api.py:359
+msgid "Test report"
+msgstr ""
+
#: report/models.py:152
msgid "Template name"
msgstr "Nazwa szablonu"
@@ -5759,7 +5747,7 @@ msgstr ""
#: templates/js/translated/build.js:1173 templates/js/translated/build.js:1671
#: templates/js/translated/model_renderers.js:106
#: templates/js/translated/order.js:115 templates/js/translated/order.js:3229
-#: templates/js/translated/order.js:3318 templates/js/translated/stock.js:435
+#: templates/js/translated/order.js:3318 templates/js/translated/stock.js:434
msgid "Serial Number"
msgstr "Numer Seryjny"
@@ -5768,19 +5756,19 @@ msgid "Test Results"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:93
-#: stock/models.py:2068
+#: stock/models.py:2072
msgid "Test"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:94
-#: stock/models.py:2074
+#: stock/models.py:2078
msgid "Result"
msgstr "Wynik"
#: report/templates/report/inventree_test_report_base.html:97
#: templates/InvenTree/settings/plugin.html:51
#: templates/InvenTree/settings/plugin_settings.html:38
-#: templates/js/translated/order.js:1669 templates/js/translated/stock.js:2340
+#: templates/js/translated/order.js:1669 templates/js/translated/stock.js:2350
msgid "Date"
msgstr "Data"
@@ -5798,20 +5786,20 @@ msgid "Installed Items"
msgstr "Zainstalowane elementy"
#: report/templates/report/inventree_test_report_base.html:137
-#: templates/js/translated/stock.js:555 templates/js/translated/stock.js:725
-#: templates/js/translated/stock.js:2589
+#: templates/js/translated/stock.js:554 templates/js/translated/stock.js:724
+#: templates/js/translated/stock.js:2599
msgid "Serial"
msgstr "Numer seryjny"
-#: stock/api.py:504
+#: stock/api.py:505
msgid "Quantity is required"
msgstr ""
-#: stock/api.py:511
+#: stock/api.py:512
msgid "Valid part must be supplied"
msgstr ""
-#: stock/api.py:536
+#: stock/api.py:537
msgid "Serial numbers cannot be supplied for a non-trackable part"
msgstr ""
@@ -5919,7 +5907,7 @@ msgid "Destination Sales Order"
msgstr ""
#: stock/models.py:690 stock/templates/stock/item_base.html:429
-#: templates/js/translated/stock.js:1816
+#: templates/js/translated/stock.js:1826
msgid "Expiry Date"
msgstr "Data ważności"
@@ -5973,79 +5961,79 @@ msgstr ""
msgid "Serial numbers already exist: {exists}"
msgstr ""
-#: stock/models.py:1321
+#: stock/models.py:1325
msgid "Stock item has been assigned to a sales order"
msgstr ""
-#: stock/models.py:1324
+#: stock/models.py:1328
msgid "Stock item is installed in another item"
msgstr ""
-#: stock/models.py:1327
+#: stock/models.py:1331
msgid "Stock item contains other items"
msgstr ""
-#: stock/models.py:1330
+#: stock/models.py:1334
msgid "Stock item has been assigned to a customer"
msgstr ""
-#: stock/models.py:1333
+#: stock/models.py:1337
msgid "Stock item is currently in production"
msgstr ""
-#: stock/models.py:1336
+#: stock/models.py:1340
msgid "Serialized stock cannot be merged"
msgstr ""
-#: stock/models.py:1343 stock/serializers.py:908
+#: stock/models.py:1347 stock/serializers.py:895
msgid "Duplicate stock items"
msgstr ""
-#: stock/models.py:1347
+#: stock/models.py:1351
msgid "Stock items must refer to the same part"
msgstr ""
-#: stock/models.py:1351
+#: stock/models.py:1355
msgid "Stock items must refer to the same supplier part"
msgstr ""
-#: stock/models.py:1355
+#: stock/models.py:1359
msgid "Stock status codes must match"
msgstr ""
-#: stock/models.py:1524
+#: stock/models.py:1528
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:1986
+#: stock/models.py:1990
msgid "Entry notes"
msgstr "Notatki do wpisu"
-#: stock/models.py:2044
+#: stock/models.py:2048
msgid "Value must be provided for this test"
msgstr "Należy podać wartość dla tego testu"
-#: stock/models.py:2050
+#: stock/models.py:2054
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:2069
+#: stock/models.py:2073
msgid "Test name"
msgstr "Nazwa testu"
-#: stock/models.py:2075
+#: stock/models.py:2079
msgid "Test result"
msgstr "Wynik testu"
-#: stock/models.py:2081
+#: stock/models.py:2085
msgid "Test output value"
msgstr ""
-#: stock/models.py:2088
+#: stock/models.py:2092
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:2094
+#: stock/models.py:2098
msgid "Test notes"
msgstr ""
@@ -6066,7 +6054,7 @@ msgstr ""
msgid "Enter serial numbers for new items"
msgstr ""
-#: stock/serializers.py:309 stock/serializers.py:865 stock/serializers.py:1098
+#: stock/serializers.py:309 stock/serializers.py:852 stock/serializers.py:1085
msgid "Destination stock location"
msgstr ""
@@ -6106,63 +6094,63 @@ msgstr ""
msgid "Destination location for returned item"
msgstr ""
-#: stock/serializers.py:720
+#: stock/serializers.py:707
msgid "Part must be salable"
msgstr "Część musi być dostępna do sprzedaży"
-#: stock/serializers.py:724
+#: stock/serializers.py:711
msgid "Item is allocated to a sales order"
msgstr ""
-#: stock/serializers.py:728
+#: stock/serializers.py:715
msgid "Item is allocated to a build order"
msgstr ""
-#: stock/serializers.py:759
+#: stock/serializers.py:746
msgid "Customer to assign stock items"
msgstr ""
-#: stock/serializers.py:765
+#: stock/serializers.py:752
msgid "Selected company is not a customer"
msgstr ""
-#: stock/serializers.py:773
+#: stock/serializers.py:760
msgid "Stock assignment notes"
msgstr ""
-#: stock/serializers.py:783 stock/serializers.py:1014
+#: stock/serializers.py:770 stock/serializers.py:1001
msgid "A list of stock items must be provided"
msgstr ""
-#: stock/serializers.py:872
+#: stock/serializers.py:859
msgid "Stock merging notes"
msgstr ""
-#: stock/serializers.py:877
+#: stock/serializers.py:864
msgid "Allow mismatched suppliers"
msgstr ""
-#: stock/serializers.py:878
+#: stock/serializers.py:865
msgid "Allow stock items with different supplier parts to be merged"
msgstr ""
-#: stock/serializers.py:883
+#: stock/serializers.py:870
msgid "Allow mismatched status"
msgstr ""
-#: stock/serializers.py:884
+#: stock/serializers.py:871
msgid "Allow stock items with different status codes to be merged"
msgstr ""
-#: stock/serializers.py:894
+#: stock/serializers.py:881
msgid "At least two stock items must be provided"
msgstr ""
-#: stock/serializers.py:976
+#: stock/serializers.py:963
msgid "StockItem primary key value"
msgstr ""
-#: stock/serializers.py:1004
+#: stock/serializers.py:991
msgid "Stock transaction notes"
msgstr ""
@@ -6187,7 +6175,7 @@ msgstr ""
msgid "Test Report"
msgstr ""
-#: stock/templates/stock/item.html:94
+#: stock/templates/stock/item.html:94 stock/templates/stock/item.html:298
msgid "Delete Test Data"
msgstr ""
@@ -6199,11 +6187,15 @@ msgstr ""
msgid "Installed Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:151 templates/js/translated/stock.js:2733
+#: stock/templates/stock/item.html:151 templates/js/translated/stock.js:2743
msgid "Install Stock Item"
msgstr ""
-#: stock/templates/stock/item.html:292 templates/js/translated/stock.js:1455
+#: stock/templates/stock/item.html:290
+msgid "Delete all test results for this stock item"
+msgstr ""
+
+#: stock/templates/stock/item.html:323 templates/js/translated/stock.js:1465
msgid "Add Test Result"
msgstr ""
@@ -6390,7 +6382,7 @@ msgid "Stale"
msgstr ""
#: stock/templates/stock/item_base.html:442
-#: templates/js/translated/stock.js:1832
+#: templates/js/translated/stock.js:1842
msgid "Last Updated"
msgstr "Ostatnia aktualizacja"
@@ -6458,7 +6450,7 @@ msgstr "Nowa lokalizacja"
#: stock/templates/stock/location.html:109
#: stock/templates/stock/location.html:115
msgid "Location Path"
-msgstr ""
+msgstr "Ścieżka lokalizacji"
#: stock/templates/stock/location.html:116
msgid "Top level stock location"
@@ -6476,7 +6468,7 @@ msgstr ""
#: stock/templates/stock/location.html:189
#: stock/templates/stock/location_sidebar.html:5
msgid "Sublocations"
-msgstr ""
+msgstr "Podlokalizacje"
#: stock/templates/stock/location.html:156 templates/InvenTree/search.html:165
#: templates/js/translated/search.js:238 users/models.py:38
@@ -6531,7 +6523,7 @@ msgstr ""
msgid "Child Items"
msgstr "Elementy podrzędne"
-#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:182
+#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:144
msgid "Convert Stock Item"
msgstr ""
@@ -6552,31 +6544,19 @@ msgstr "Ostrzeżenie"
msgid "This action cannot be easily undone"
msgstr ""
-#: stock/views.py:113
+#: stock/views.py:111
msgid "Stock Location QR code"
msgstr ""
-#: stock/views.py:131
-msgid "Delete All Test Data"
-msgstr "Usuń wszystkie dane testowe"
-
-#: stock/views.py:149
-msgid "Confirm test data deletion"
-msgstr ""
-
-#: stock/views.py:150
-msgid "Check the confirmation box"
-msgstr ""
-
-#: stock/views.py:165
+#: stock/views.py:127
msgid "Stock Item QR Code"
msgstr ""
-#: stock/views.py:216
+#: stock/views.py:178
msgid "Delete Stock Location"
msgstr ""
-#: stock/views.py:229
+#: stock/views.py:191
msgid "Delete Stock Item"
msgstr ""
@@ -6663,23 +6643,23 @@ msgstr ""
#: templates/InvenTree/index.html:235
msgid "Overdue Build Orders"
-msgstr ""
+msgstr "Zaległe zlecenia budowy"
#: templates/InvenTree/index.html:255
msgid "Outstanding Purchase Orders"
-msgstr ""
+msgstr "Trwające zlecenia zakupu"
#: templates/InvenTree/index.html:266
msgid "Overdue Purchase Orders"
-msgstr ""
+msgstr "Zaległe zlecenia zakupu"
#: templates/InvenTree/index.html:286
msgid "Outstanding Sales Orders"
-msgstr ""
+msgstr "Trwające zlecenia sprzedaży"
#: templates/InvenTree/index.html:297
msgid "Overdue Sales Orders"
-msgstr ""
+msgstr "Zaległe zlecenia sprzedaży"
#: templates/InvenTree/notifications/history.html:9
msgid "Notification History"
@@ -7319,8 +7299,8 @@ msgstr "Informacje o wersji InvenTree"
#: templates/about.html:11 templates/about.html:105
#: templates/js/translated/bom.js:133 templates/js/translated/bom.js:621
-#: templates/js/translated/modals.js:56 templates/js/translated/modals.js:595
-#: templates/js/translated/modals.js:689 templates/js/translated/modals.js:997
+#: templates/js/translated/modals.js:56 templates/js/translated/modals.js:601
+#: templates/js/translated/modals.js:695 templates/js/translated/modals.js:1003
#: templates/js/translated/order.js:928 templates/modals.html:15
#: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50
msgid "Close"
@@ -7392,6 +7372,10 @@ msgstr "Potwierdź adres e-mail"
msgid "Please confirm that %(email)s is an email address for user %(user_display)s."
msgstr "Proszę potwierdzić że %(email)s jest adresem e-mail dla użytkownika %(user_display)s."
+#: templates/account/email_confirm.html:20 templates/js/translated/forms.js:630
+msgid "Confirm"
+msgstr "Potwierdź"
+
#: templates/account/email_confirm.html:27
#, python-format
msgid "This email confirmation link expired or is invalid. Please issue a new email confirmation request."
@@ -7567,7 +7551,7 @@ msgstr "Dodaj załącznik"
msgid "Delete selected attachments"
msgstr ""
-#: templates/attachment_table.html:12 templates/js/translated/attachment.js:110
+#: templates/attachment_table.html:12 templates/js/translated/attachment.js:112
msgid "Delete Attachments"
msgstr ""
@@ -7601,15 +7585,15 @@ msgid "The following parts are low on required stock"
msgstr ""
#: templates/email/build_order_required_stock.html:18
-#: templates/js/translated/bom.js:1425
+#: templates/js/translated/bom.js:1419
msgid "Required Quantity"
msgstr "Wymagana ilość"
#: templates/email/build_order_required_stock.html:19
#: templates/email/low_stock_notification.html:18
-#: templates/js/translated/bom.js:890 templates/js/translated/build.js:1787
-#: templates/js/translated/build.js:2650 templates/js/translated/part.js:527
-#: templates/js/translated/part.js:530
+#: templates/js/translated/bom.js:884 templates/js/translated/build.js:1787
+#: templates/js/translated/build.js:2650 templates/js/translated/part.js:571
+#: templates/js/translated/part.js:574
#: templates/js/translated/table_filters.js:178
msgid "Available"
msgstr "Dostępne"
@@ -7627,6 +7611,13 @@ msgstr ""
msgid "Minimum Quantity"
msgstr "Minimalna ilość"
+#: templates/email/new_order_assigned.html:9
+#: templates/email/overdue_build_order.html:9
+#: templates/email/overdue_purchase_order.html:9
+#: templates/email/overdue_sales_order.html:9
+msgid "Click on the following link to view this order"
+msgstr ""
+
#: templates/image_download.html:8
msgid "Specify URL for downloading image"
msgstr "Określ adres URL do pobrania obrazu"
@@ -7643,91 +7634,91 @@ msgstr "Zdalny serwer musi być dostępny"
msgid "Remote image must not exceed maximum allowable file size"
msgstr "Zewnętrzne zdjęcie nie może przekraczać maksymalnego dopuszczalnego rozmiaru pliku"
-#: templates/js/translated/api.js:235 templates/js/translated/modals.js:1067
+#: templates/js/translated/api.js:195 templates/js/translated/modals.js:1073
msgid "No Response"
msgstr "Brak odpowiedzi"
-#: templates/js/translated/api.js:236 templates/js/translated/modals.js:1068
+#: templates/js/translated/api.js:196 templates/js/translated/modals.js:1074
msgid "No response from the InvenTree server"
msgstr "Brak odpowiedzi z serwera InvenTree"
-#: templates/js/translated/api.js:242
+#: templates/js/translated/api.js:202
msgid "Error 400: Bad request"
msgstr "Błąd 400: Błędne żądanie"
-#: templates/js/translated/api.js:243
+#: templates/js/translated/api.js:203
msgid "API request returned error code 400"
msgstr "Żądanie interfejsu API zwróciło kod błędu 400"
-#: templates/js/translated/api.js:247 templates/js/translated/modals.js:1077
+#: templates/js/translated/api.js:207 templates/js/translated/modals.js:1083
msgid "Error 401: Not Authenticated"
msgstr "Błąd 401: Nieuwierzytelniony"
-#: templates/js/translated/api.js:248 templates/js/translated/modals.js:1078
+#: templates/js/translated/api.js:208 templates/js/translated/modals.js:1084
msgid "Authentication credentials not supplied"
msgstr "Dane uwierzytelniające nie zostały dostarczone"
-#: templates/js/translated/api.js:252 templates/js/translated/modals.js:1082
+#: templates/js/translated/api.js:212 templates/js/translated/modals.js:1088
msgid "Error 403: Permission Denied"
msgstr "Błąd 403: Odmowa dostępu"
-#: templates/js/translated/api.js:253 templates/js/translated/modals.js:1083
+#: templates/js/translated/api.js:213 templates/js/translated/modals.js:1089
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:257 templates/js/translated/modals.js:1087
+#: templates/js/translated/api.js:217 templates/js/translated/modals.js:1093
msgid "Error 404: Resource Not Found"
msgstr "Błąd 404: Nie znaleziono zasobu"
-#: templates/js/translated/api.js:258 templates/js/translated/modals.js:1088
+#: templates/js/translated/api.js:218 templates/js/translated/modals.js:1094
msgid "The requested resource could not be located on the server"
msgstr "Żądany zasób nie mógł być zlokalizowany na serwerze"
-#: templates/js/translated/api.js:262
+#: templates/js/translated/api.js:222
msgid "Error 405: Method Not Allowed"
msgstr "Błąd 405: Metoda nie jest dozwolona"
-#: templates/js/translated/api.js:263
+#: templates/js/translated/api.js:223
msgid "HTTP method not allowed at URL"
msgstr "Metoda HTTP nie jest dozwolona pod tym adresem URL"
-#: templates/js/translated/api.js:267 templates/js/translated/modals.js:1092
+#: templates/js/translated/api.js:227 templates/js/translated/modals.js:1098
msgid "Error 408: Timeout"
msgstr "Błąd 408: Przekroczony limit czasu"
-#: templates/js/translated/api.js:268 templates/js/translated/modals.js:1093
+#: templates/js/translated/api.js:228 templates/js/translated/modals.js:1099
msgid "Connection timeout while requesting data from server"
msgstr "Limit czasu połączenia podczas żądania danych z serwera"
-#: templates/js/translated/api.js:271
+#: templates/js/translated/api.js:231
msgid "Unhandled Error Code"
msgstr "Nieobsługiwany kod błędu"
-#: templates/js/translated/api.js:272
+#: templates/js/translated/api.js:232
msgid "Error code"
msgstr "Kod błędu"
-#: templates/js/translated/attachment.js:96
+#: templates/js/translated/attachment.js:98
msgid "All selected attachments will be deleted"
msgstr ""
-#: templates/js/translated/attachment.js:156
+#: templates/js/translated/attachment.js:152
msgid "No attachments found"
msgstr "Nie znaleziono załączników"
-#: templates/js/translated/attachment.js:180
+#: templates/js/translated/attachment.js:176
msgid "Edit Attachment"
msgstr "Edytuj załącznik"
-#: templates/js/translated/attachment.js:246
+#: templates/js/translated/attachment.js:242
msgid "Upload Date"
msgstr "Data przesłania"
-#: templates/js/translated/attachment.js:262
+#: templates/js/translated/attachment.js:264
msgid "Edit attachment"
msgstr "Edytuj załącznik"
-#: templates/js/translated/attachment.js:269
+#: templates/js/translated/attachment.js:271
msgid "Delete attachment"
msgstr "Usuń załącznik"
@@ -7760,7 +7751,7 @@ msgid "Unknown response from server"
msgstr "Nieznana odpowiedź serwera"
#: templates/js/translated/barcode.js:182
-#: templates/js/translated/modals.js:1057
+#: templates/js/translated/modals.js:1063
msgid "Invalid server response"
msgstr "Niepoprawna odpowiedź serwera"
@@ -7788,7 +7779,7 @@ msgstr ""
msgid "Unlink"
msgstr "Rozłącz"
-#: templates/js/translated/barcode.js:456 templates/js/translated/stock.js:999
+#: templates/js/translated/barcode.js:456 templates/js/translated/stock.js:998
msgid "Remove stock item"
msgstr ""
@@ -7839,7 +7830,7 @@ msgstr "Dane wiersza"
#: templates/js/translated/bom.js:250
msgid "Download BOM Template"
-msgstr ""
+msgstr "Pobierz szablon BOM-u"
#: templates/js/translated/bom.js:253 templates/js/translated/bom.js:287
#: templates/js/translated/order.js:709 templates/js/translated/tables.js:145
@@ -7923,89 +7914,89 @@ msgstr "Dodaj zamiennik"
msgid "Edit BOM Item Substitutes"
msgstr ""
-#: templates/js/translated/bom.js:682
+#: templates/js/translated/bom.js:684
msgid "All selected BOM items will be deleted"
msgstr ""
-#: templates/js/translated/bom.js:697
+#: templates/js/translated/bom.js:699
msgid "Delete selected BOM items?"
msgstr ""
-#: templates/js/translated/bom.js:824
+#: templates/js/translated/bom.js:818
msgid "Load BOM for subassembly"
msgstr ""
-#: templates/js/translated/bom.js:834
+#: templates/js/translated/bom.js:828
msgid "Substitutes Available"
msgstr ""
-#: templates/js/translated/bom.js:838 templates/js/translated/build.js:1769
+#: templates/js/translated/bom.js:832 templates/js/translated/build.js:1769
msgid "Variant stock allowed"
msgstr ""
-#: templates/js/translated/bom.js:906 templates/js/translated/build.js:1814
+#: templates/js/translated/bom.js:900 templates/js/translated/build.js:1814
#: templates/js/translated/order.js:3562
msgid "No Stock Available"
msgstr ""
-#: templates/js/translated/bom.js:910 templates/js/translated/build.js:1818
+#: templates/js/translated/bom.js:904 templates/js/translated/build.js:1818
msgid "Includes variant and substitute stock"
msgstr ""
-#: templates/js/translated/bom.js:912 templates/js/translated/build.js:1820
-#: templates/js/translated/part.js:690
+#: templates/js/translated/bom.js:906 templates/js/translated/build.js:1820
+#: templates/js/translated/part.js:734
msgid "Includes variant stock"
msgstr ""
-#: templates/js/translated/bom.js:914 templates/js/translated/build.js:1822
+#: templates/js/translated/bom.js:908 templates/js/translated/build.js:1822
msgid "Includes substitute stock"
msgstr ""
-#: templates/js/translated/bom.js:928
+#: templates/js/translated/bom.js:922
msgid "Substitutes"
msgstr ""
-#: templates/js/translated/bom.js:943
+#: templates/js/translated/bom.js:937
msgid "Purchase Price Range"
msgstr ""
-#: templates/js/translated/bom.js:950
+#: templates/js/translated/bom.js:944
msgid "Purchase Price Average"
msgstr ""
-#: templates/js/translated/bom.js:999 templates/js/translated/bom.js:1090
+#: templates/js/translated/bom.js:993 templates/js/translated/bom.js:1084
msgid "View BOM"
msgstr "Zobacz BOM"
-#: templates/js/translated/bom.js:1061
+#: templates/js/translated/bom.js:1055
msgid "Validate BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:1063
+#: templates/js/translated/bom.js:1057
msgid "This line has been validated"
msgstr ""
-#: templates/js/translated/bom.js:1065
+#: templates/js/translated/bom.js:1059
msgid "Edit substitute parts"
msgstr ""
-#: templates/js/translated/bom.js:1067 templates/js/translated/bom.js:1228
+#: templates/js/translated/bom.js:1061 templates/js/translated/bom.js:1222
msgid "Edit BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:1069
+#: templates/js/translated/bom.js:1063
msgid "Delete BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:1164 templates/js/translated/build.js:1615
+#: templates/js/translated/bom.js:1158 templates/js/translated/build.js:1615
msgid "No BOM items found"
msgstr ""
-#: templates/js/translated/bom.js:1408 templates/js/translated/build.js:1753
+#: templates/js/translated/bom.js:1402 templates/js/translated/build.js:1753
msgid "Required Part"
msgstr ""
-#: templates/js/translated/bom.js:1430
+#: templates/js/translated/bom.js:1424
msgid "Inherited from parent BOM"
msgstr ""
@@ -8045,13 +8036,13 @@ msgstr ""
msgid "Complete Build Order"
msgstr ""
-#: templates/js/translated/build.js:259 templates/js/translated/stock.js:91
-#: templates/js/translated/stock.js:181
+#: templates/js/translated/build.js:259 templates/js/translated/stock.js:90
+#: templates/js/translated/stock.js:180
msgid "Next available serial number"
msgstr ""
-#: templates/js/translated/build.js:261 templates/js/translated/stock.js:93
-#: templates/js/translated/stock.js:183
+#: templates/js/translated/build.js:261 templates/js/translated/stock.js:92
+#: templates/js/translated/stock.js:182
msgid "Latest serial number"
msgstr "Ostatni numer seryjny"
@@ -8264,9 +8255,9 @@ msgstr ""
msgid "No builds matching query"
msgstr ""
-#: templates/js/translated/build.js:2448 templates/js/translated/part.js:1314
-#: templates/js/translated/part.js:1729 templates/js/translated/stock.js:1619
-#: templates/js/translated/stock.js:2277
+#: templates/js/translated/build.js:2448 templates/js/translated/part.js:1358
+#: templates/js/translated/part.js:1825 templates/js/translated/stock.js:1629
+#: templates/js/translated/stock.js:2287
msgid "Select"
msgstr "Wybierz"
@@ -8278,7 +8269,7 @@ msgstr ""
msgid "Progress"
msgstr ""
-#: templates/js/translated/build.js:2532 templates/js/translated/stock.js:2519
+#: templates/js/translated/build.js:2532 templates/js/translated/stock.js:2529
msgid "No user information"
msgstr "Brak informacji o użytkowniku"
@@ -8290,107 +8281,107 @@ msgstr "Brak informacji"
msgid "No parts allocated for"
msgstr ""
-#: templates/js/translated/company.js:66
+#: templates/js/translated/company.js:65
msgid "Add Manufacturer"
msgstr "Dodaj producenta"
-#: templates/js/translated/company.js:79 templates/js/translated/company.js:169
+#: templates/js/translated/company.js:78 templates/js/translated/company.js:168
msgid "Add Manufacturer Part"
msgstr "Dodaj część producenta"
-#: templates/js/translated/company.js:100
+#: templates/js/translated/company.js:99
msgid "Edit Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:157 templates/js/translated/order.js:506
+#: templates/js/translated/company.js:156 templates/js/translated/order.js:506
msgid "Add Supplier"
msgstr "Dodaj dostawcę"
-#: templates/js/translated/company.js:185
+#: templates/js/translated/company.js:184
msgid "Add Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:200
+#: templates/js/translated/company.js:199
msgid "Edit Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:248
+#: templates/js/translated/company.js:249
msgid "All selected supplier parts will be deleted"
msgstr "Wszystkie wybrane komponenty dostawcy zostaną usunięte"
-#: templates/js/translated/company.js:263
+#: templates/js/translated/company.js:264
msgid "Delete Supplier Parts"
msgstr ""
-#: templates/js/translated/company.js:342
+#: templates/js/translated/company.js:336
msgid "Add new Company"
msgstr "Dodaj nową firmę"
-#: templates/js/translated/company.js:419
+#: templates/js/translated/company.js:413
msgid "Parts Supplied"
msgstr ""
-#: templates/js/translated/company.js:428
+#: templates/js/translated/company.js:422
msgid "Parts Manufactured"
msgstr ""
-#: templates/js/translated/company.js:443
+#: templates/js/translated/company.js:437
msgid "No company information found"
msgstr ""
-#: templates/js/translated/company.js:482
+#: templates/js/translated/company.js:478
msgid "All selected manufacturer parts will be deleted"
msgstr ""
-#: templates/js/translated/company.js:496
+#: templates/js/translated/company.js:492
msgid "Delete Manufacturer Parts"
msgstr ""
-#: templates/js/translated/company.js:535
+#: templates/js/translated/company.js:526
msgid "All selected parameters will be deleted"
msgstr ""
-#: templates/js/translated/company.js:548
+#: templates/js/translated/company.js:539
msgid "Delete Parameters"
msgstr "Usuń parametry"
-#: templates/js/translated/company.js:595
+#: templates/js/translated/company.js:580
msgid "No manufacturer parts found"
msgstr ""
-#: templates/js/translated/company.js:615
-#: templates/js/translated/company.js:874 templates/js/translated/part.js:565
-#: templates/js/translated/part.js:650
+#: templates/js/translated/company.js:600
+#: templates/js/translated/company.js:859 templates/js/translated/part.js:609
+#: templates/js/translated/part.js:694
msgid "Template part"
msgstr ""
-#: templates/js/translated/company.js:619
-#: templates/js/translated/company.js:878 templates/js/translated/part.js:569
-#: templates/js/translated/part.js:654
+#: templates/js/translated/company.js:604
+#: templates/js/translated/company.js:863 templates/js/translated/part.js:613
+#: templates/js/translated/part.js:698
msgid "Assembled part"
msgstr ""
-#: templates/js/translated/company.js:747 templates/js/translated/part.js:757
+#: templates/js/translated/company.js:732 templates/js/translated/part.js:801
msgid "No parameters found"
msgstr "Nie znaleziono parametrów"
-#: templates/js/translated/company.js:784 templates/js/translated/part.js:799
+#: templates/js/translated/company.js:769 templates/js/translated/part.js:843
msgid "Edit parameter"
msgstr "Edytuj Parametr"
-#: templates/js/translated/company.js:785 templates/js/translated/part.js:800
+#: templates/js/translated/company.js:770 templates/js/translated/part.js:844
msgid "Delete parameter"
msgstr "Usuń parametr"
-#: templates/js/translated/company.js:804 templates/js/translated/part.js:817
+#: templates/js/translated/company.js:789 templates/js/translated/part.js:861
msgid "Edit Parameter"
msgstr "Edytuj Parametr"
-#: templates/js/translated/company.js:815 templates/js/translated/part.js:829
+#: templates/js/translated/company.js:800 templates/js/translated/part.js:873
msgid "Delete Parameter"
msgstr "Usuń parametr"
-#: templates/js/translated/company.js:854
+#: templates/js/translated/company.js:839
msgid "No supplier parts found"
msgstr ""
@@ -8453,36 +8444,36 @@ msgstr "Operacja przeglądania nie jest dozwolona"
msgid "Keep this form open"
msgstr "Pozostaw ten formularz otwarty"
-#: templates/js/translated/forms.js:756
+#: templates/js/translated/forms.js:757
msgid "Enter a valid number"
msgstr "Wprowadź poprawny numer"
-#: templates/js/translated/forms.js:1248 templates/modals.html:19
+#: templates/js/translated/forms.js:1249 templates/modals.html:19
#: templates/modals.html:43
msgid "Form errors exist"
msgstr "Istnieją błędy formularza"
-#: templates/js/translated/forms.js:1681
+#: templates/js/translated/forms.js:1682
msgid "No results found"
msgstr "Nie znaleziono wyników"
-#: templates/js/translated/forms.js:1896 templates/search.html:29
+#: templates/js/translated/forms.js:1897 templates/search.html:29
msgid "Searching"
msgstr "Wyszukiwanie"
-#: templates/js/translated/forms.js:2149
+#: templates/js/translated/forms.js:2150
msgid "Clear input"
msgstr "Wyczyść wejście"
-#: templates/js/translated/forms.js:2615
+#: templates/js/translated/forms.js:2616
msgid "File Column"
msgstr "Kolumna pliku"
-#: templates/js/translated/forms.js:2615
+#: templates/js/translated/forms.js:2616
msgid "Field Name"
msgstr "Nazwa pola"
-#: templates/js/translated/forms.js:2627
+#: templates/js/translated/forms.js:2628
msgid "Select Columns"
msgstr "Wybór Kolumn"
@@ -8503,7 +8494,7 @@ msgid "Labels sent to printer"
msgstr ""
#: templates/js/translated/label.js:60 templates/js/translated/report.js:118
-#: templates/js/translated/stock.js:1023
+#: templates/js/translated/stock.js:1022
msgid "Select Stock Items"
msgstr "Wybierz przedmioty magazynowe"
@@ -8557,12 +8548,12 @@ msgid "Select Label Template"
msgstr "Wybierz szablon etykiety"
#: templates/js/translated/modals.js:82 templates/js/translated/modals.js:142
-#: templates/js/translated/modals.js:621
+#: templates/js/translated/modals.js:627
msgid "Cancel"
msgstr "Anuluj"
#: templates/js/translated/modals.js:83 templates/js/translated/modals.js:141
-#: templates/js/translated/modals.js:688 templates/js/translated/modals.js:996
+#: templates/js/translated/modals.js:694 templates/js/translated/modals.js:1002
#: templates/modals.html:28 templates/modals.html:51
msgid "Submit"
msgstr "Zatwierdź"
@@ -8571,47 +8562,47 @@ msgstr "Zatwierdź"
msgid "Form Title"
msgstr "Tytuł formularza"
-#: templates/js/translated/modals.js:403
+#: templates/js/translated/modals.js:421
msgid "Waiting for server..."
msgstr "Oczekiwanie na serwer..."
-#: templates/js/translated/modals.js:562
+#: templates/js/translated/modals.js:568
msgid "Show Error Information"
msgstr "Pokaż informacje o błędzie"
-#: templates/js/translated/modals.js:620
+#: templates/js/translated/modals.js:626
msgid "Accept"
msgstr "Zaakceptuj"
-#: templates/js/translated/modals.js:677
+#: templates/js/translated/modals.js:683
msgid "Loading Data"
msgstr "Wczytywanie danych"
-#: templates/js/translated/modals.js:948
+#: templates/js/translated/modals.js:954
msgid "Invalid response from server"
msgstr "Niepoprawna odpowiedź serwera"
-#: templates/js/translated/modals.js:948
+#: templates/js/translated/modals.js:954
msgid "Form data missing from server response"
msgstr "Brak danych formularza z odpowiedzi serwera"
-#: templates/js/translated/modals.js:960
+#: templates/js/translated/modals.js:966
msgid "Error posting form data"
msgstr "Błąd podczas wysyłania danych formularza"
-#: templates/js/translated/modals.js:1057
+#: templates/js/translated/modals.js:1063
msgid "JSON response missing form data"
msgstr "Brak danych w formularzu odpowiedzi JSON"
-#: templates/js/translated/modals.js:1072
+#: templates/js/translated/modals.js:1078
msgid "Error 400: Bad Request"
msgstr "400: Nieprawidłowe zapytanie"
-#: templates/js/translated/modals.js:1073
+#: templates/js/translated/modals.js:1079
msgid "Server returned error code 400"
msgstr "Serwer zwrócił kod błędu 400"
-#: templates/js/translated/modals.js:1096
+#: templates/js/translated/modals.js:1102
msgid "Error requesting form data"
msgstr "Błąd podczas żądania danych formularza"
@@ -8661,11 +8652,11 @@ msgstr ""
msgid "Mark as read"
msgstr ""
-#: templates/js/translated/notification.js:259
+#: templates/js/translated/notification.js:260
msgid "No unread notifications"
msgstr ""
-#: templates/js/translated/notification.js:300 templates/notifications.html:10
+#: templates/js/translated/notification.js:302 templates/notifications.html:10
msgid "Notifications will load here"
msgstr ""
@@ -8809,7 +8800,7 @@ msgstr ""
msgid "Quantity to receive"
msgstr ""
-#: templates/js/translated/order.js:1225 templates/js/translated/stock.js:2080
+#: templates/js/translated/order.js:1225 templates/js/translated/stock.js:2090
msgid "Stock Status"
msgstr ""
@@ -8833,7 +8824,7 @@ msgstr "Potwierdź odbiór elementów"
msgid "Receive Purchase Order Items"
msgstr ""
-#: templates/js/translated/order.js:1602 templates/js/translated/part.js:870
+#: templates/js/translated/order.js:1602 templates/js/translated/part.js:914
msgid "No purchase orders found"
msgstr ""
@@ -8868,7 +8859,7 @@ msgstr "Razem"
#: templates/js/translated/order.js:1937 templates/js/translated/order.js:2139
#: templates/js/translated/order.js:3467 templates/js/translated/order.js:3978
-#: templates/js/translated/part.js:1948 templates/js/translated/part.js:2301
+#: templates/js/translated/part.js:2044 templates/js/translated/part.js:2397
msgid "Unit Price"
msgstr "Cena jednostkowa"
@@ -8878,11 +8869,11 @@ msgid "Total Price"
msgstr "Cena całkowita"
#: templates/js/translated/order.js:1993 templates/js/translated/order.js:3525
-#: templates/js/translated/part.js:979
+#: templates/js/translated/part.js:1023
msgid "This line item is overdue"
msgstr ""
-#: templates/js/translated/order.js:2052 templates/js/translated/part.js:1025
+#: templates/js/translated/order.js:2052 templates/js/translated/part.js:1069
msgid "Receive line item"
msgstr ""
@@ -9003,7 +8994,7 @@ msgid "Delete Stock Allocation"
msgstr ""
#: templates/js/translated/order.js:3243 templates/js/translated/order.js:3332
-#: templates/js/translated/stock.js:1535
+#: templates/js/translated/stock.js:1545
msgid "Shipped to customer"
msgstr ""
@@ -9143,165 +9134,209 @@ msgstr "Część zmodyfikowana"
msgid "Create Part Variant"
msgstr "Utwórz wariant części"
+#: templates/js/translated/part.js:405
+msgid "Active Part"
+msgstr ""
+
+#: templates/js/translated/part.js:406
+msgid "Part cannot be deleted as it is currently active"
+msgstr ""
+
+#: templates/js/translated/part.js:420
+msgid "Deleting this part cannot be reversed"
+msgstr ""
+
+#: templates/js/translated/part.js:422
+msgid "Any stock items for this part will be deleted"
+msgstr ""
+
#: templates/js/translated/part.js:423
+msgid "This part will be removed from any Bills of Material"
+msgstr ""
+
+#: templates/js/translated/part.js:424
+msgid "All manufacturer and supplier information for this part will be deleted"
+msgstr ""
+
+#: templates/js/translated/part.js:431
+msgid "Delete Part"
+msgstr ""
+
+#: templates/js/translated/part.js:467
msgid "You are subscribed to notifications for this item"
msgstr "Masz włączone powiadomienia dla tej części"
-#: templates/js/translated/part.js:425
+#: templates/js/translated/part.js:469
msgid "You have subscribed to notifications for this item"
msgstr "Masz włączone powiadomienia dla tej części"
-#: templates/js/translated/part.js:430
+#: templates/js/translated/part.js:474
msgid "Subscribe to notifications for this item"
msgstr "Włącz powiadomienia dla tej części"
-#: templates/js/translated/part.js:432
+#: templates/js/translated/part.js:476
msgid "You have unsubscribed to notifications for this item"
msgstr "Zostałeś wypisany z powiadomień dla tej części"
-#: templates/js/translated/part.js:449
+#: templates/js/translated/part.js:493
msgid "Validating the BOM will mark each line item as valid"
msgstr ""
-#: templates/js/translated/part.js:459
+#: templates/js/translated/part.js:503
msgid "Validate Bill of Materials"
msgstr ""
-#: templates/js/translated/part.js:462
+#: templates/js/translated/part.js:506
msgid "Validated Bill of Materials"
msgstr ""
-#: templates/js/translated/part.js:487
+#: templates/js/translated/part.js:531
msgid "Copy Bill of Materials"
msgstr ""
-#: templates/js/translated/part.js:513 templates/js/translated/part.js:1397
+#: templates/js/translated/part.js:557 templates/js/translated/part.js:1441
#: templates/js/translated/table_filters.js:452
msgid "Low stock"
msgstr ""
-#: templates/js/translated/part.js:523 templates/js/translated/part.js:1409
+#: templates/js/translated/part.js:567 templates/js/translated/part.js:1453
msgid "No stock available"
msgstr ""
-#: templates/js/translated/part.js:557 templates/js/translated/part.js:642
+#: templates/js/translated/part.js:601 templates/js/translated/part.js:686
msgid "Trackable part"
msgstr ""
-#: templates/js/translated/part.js:561 templates/js/translated/part.js:646
+#: templates/js/translated/part.js:605 templates/js/translated/part.js:690
msgid "Virtual part"
msgstr ""
-#: templates/js/translated/part.js:573
+#: templates/js/translated/part.js:617
msgid "Subscribed part"
msgstr "Obserwowane części"
-#: templates/js/translated/part.js:577
+#: templates/js/translated/part.js:621
msgid "Salable part"
msgstr ""
-#: templates/js/translated/part.js:705
+#: templates/js/translated/part.js:749
msgid "No variants found"
msgstr "Nie znaleziono wariantów"
-#: templates/js/translated/part.js:1095
+#: templates/js/translated/part.js:1139
msgid "Delete part relationship"
msgstr ""
-#: templates/js/translated/part.js:1119
+#: templates/js/translated/part.js:1163
msgid "Delete Part Relationship"
msgstr ""
-#: templates/js/translated/part.js:1184 templates/js/translated/part.js:1480
+#: templates/js/translated/part.js:1228 templates/js/translated/part.js:1524
msgid "No parts found"
msgstr "Nie znaleziono części"
-#: templates/js/translated/part.js:1223
+#: templates/js/translated/part.js:1267
msgid "Not available"
msgstr ""
-#: templates/js/translated/part.js:1374
+#: templates/js/translated/part.js:1418
msgid "No category"
msgstr "Brak kategorii"
-#: templates/js/translated/part.js:1504 templates/js/translated/part.js:1664
-#: templates/js/translated/stock.js:2238
+#: templates/js/translated/part.js:1548 templates/js/translated/part.js:1760
+#: templates/js/translated/stock.js:2248
msgid "Display as list"
msgstr "Wyświetl jako listę"
-#: templates/js/translated/part.js:1520
+#: templates/js/translated/part.js:1564
msgid "Display as grid"
msgstr "Wyświetl jako siatkę"
-#: templates/js/translated/part.js:1683 templates/js/translated/stock.js:2257
+#: templates/js/translated/part.js:1630
+msgid "Set the part category for the selected parts"
+msgstr ""
+
+#: templates/js/translated/part.js:1635
+msgid "Set Part Category"
+msgstr "Ustaw kategorię części"
+
+#: templates/js/translated/part.js:1640
+msgid "Select Part Category"
+msgstr ""
+
+#: templates/js/translated/part.js:1653
+msgid "Category is required"
+msgstr ""
+
+#: templates/js/translated/part.js:1779 templates/js/translated/stock.js:2267
msgid "Display as tree"
msgstr "Wyświetl jako drzewo"
-#: templates/js/translated/part.js:1747
+#: templates/js/translated/part.js:1843
msgid "Subscribed category"
msgstr "Obserwowana kategoria"
-#: templates/js/translated/part.js:1761 templates/js/translated/stock.js:2301
+#: templates/js/translated/part.js:1857 templates/js/translated/stock.js:2311
msgid "Path"
msgstr "Ścieżka"
-#: templates/js/translated/part.js:1805
+#: templates/js/translated/part.js:1901
msgid "No test templates matching query"
msgstr ""
-#: templates/js/translated/part.js:1856 templates/js/translated/stock.js:1233
+#: templates/js/translated/part.js:1952 templates/js/translated/stock.js:1243
msgid "Edit test result"
msgstr ""
-#: templates/js/translated/part.js:1857 templates/js/translated/stock.js:1234
-#: templates/js/translated/stock.js:1493
+#: templates/js/translated/part.js:1953 templates/js/translated/stock.js:1244
+#: templates/js/translated/stock.js:1503
msgid "Delete test result"
msgstr ""
-#: templates/js/translated/part.js:1863
+#: templates/js/translated/part.js:1959
msgid "This test is defined for a parent part"
msgstr ""
-#: templates/js/translated/part.js:1885
+#: templates/js/translated/part.js:1981
msgid "Edit Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:1899
+#: templates/js/translated/part.js:1995
msgid "Delete Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:1924
+#: templates/js/translated/part.js:2020
#, python-brace-format
msgid "No ${human_name} information found"
msgstr "Nie znaleziono informacji o ${human_name}"
-#: templates/js/translated/part.js:1981
+#: templates/js/translated/part.js:2077
#, python-brace-format
msgid "Edit ${human_name}"
msgstr "Edytuj ${human_name}"
-#: templates/js/translated/part.js:1982
+#: templates/js/translated/part.js:2078
#, python-brace-format
msgid "Delete ${human_name}"
msgstr "Usuń ${human_name}"
-#: templates/js/translated/part.js:2096
+#: templates/js/translated/part.js:2192
msgid "Current Stock"
msgstr ""
-#: templates/js/translated/part.js:2129
+#: templates/js/translated/part.js:2225
msgid "No scheduling information available for this part"
msgstr ""
-#: templates/js/translated/part.js:2155
+#: templates/js/translated/part.js:2251
msgid "Scheduled Stock Quantities"
msgstr ""
-#: templates/js/translated/part.js:2225
+#: templates/js/translated/part.js:2321
msgid "Single Price"
msgstr "Cena jednostkowa"
-#: templates/js/translated/part.js:2244
+#: templates/js/translated/part.js:2340
msgid "Single Price Difference"
msgstr ""
@@ -9383,360 +9418,360 @@ msgstr ""
msgid "Remove results"
msgstr ""
-#: templates/js/translated/stock.js:73
+#: templates/js/translated/stock.js:72
msgid "Serialize Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:101
+#: templates/js/translated/stock.js:100
msgid "Confirm Stock Serialization"
msgstr ""
-#: templates/js/translated/stock.js:110
+#: templates/js/translated/stock.js:109
msgid "Parent stock location"
msgstr ""
-#: templates/js/translated/stock.js:139
+#: templates/js/translated/stock.js:138
msgid "Edit Stock Location"
msgstr ""
-#: templates/js/translated/stock.js:154
+#: templates/js/translated/stock.js:153
msgid "New Stock Location"
msgstr ""
-#: templates/js/translated/stock.js:194
+#: templates/js/translated/stock.js:193
msgid "This part cannot be serialized"
msgstr ""
-#: templates/js/translated/stock.js:233
+#: templates/js/translated/stock.js:232
msgid "Enter initial quantity for this stock item"
msgstr ""
-#: templates/js/translated/stock.js:239
+#: templates/js/translated/stock.js:238
msgid "Enter serial numbers for new stock (or leave blank)"
msgstr ""
-#: templates/js/translated/stock.js:304
+#: templates/js/translated/stock.js:303
msgid "Stock item duplicated"
msgstr ""
-#: templates/js/translated/stock.js:324
+#: templates/js/translated/stock.js:323
msgid "Duplicate Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:344
+#: templates/js/translated/stock.js:343
msgid "Edit Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:394
+#: templates/js/translated/stock.js:393
msgid "Created new stock item"
msgstr ""
-#: templates/js/translated/stock.js:407
+#: templates/js/translated/stock.js:406
msgid "Created multiple stock items"
msgstr ""
-#: templates/js/translated/stock.js:432
+#: templates/js/translated/stock.js:431
msgid "Find Serial Number"
msgstr ""
-#: templates/js/translated/stock.js:436 templates/js/translated/stock.js:437
+#: templates/js/translated/stock.js:435 templates/js/translated/stock.js:436
msgid "Enter serial number"
msgstr ""
-#: templates/js/translated/stock.js:453
+#: templates/js/translated/stock.js:452
msgid "Enter a serial number"
msgstr ""
-#: templates/js/translated/stock.js:473
+#: templates/js/translated/stock.js:472
msgid "No matching serial number"
msgstr ""
-#: templates/js/translated/stock.js:482
+#: templates/js/translated/stock.js:481
msgid "More than one matching result found"
msgstr ""
-#: templates/js/translated/stock.js:605
+#: templates/js/translated/stock.js:604
msgid "Confirm stock assignment"
msgstr ""
-#: templates/js/translated/stock.js:606
+#: templates/js/translated/stock.js:605
msgid "Assign Stock to Customer"
msgstr ""
-#: templates/js/translated/stock.js:683
+#: templates/js/translated/stock.js:682
msgid "Warning: Merge operation cannot be reversed"
msgstr ""
-#: templates/js/translated/stock.js:684
+#: templates/js/translated/stock.js:683
msgid "Some information will be lost when merging stock items"
msgstr ""
-#: templates/js/translated/stock.js:686
+#: templates/js/translated/stock.js:685
msgid "Stock transaction history will be deleted for merged items"
msgstr ""
-#: templates/js/translated/stock.js:687
+#: templates/js/translated/stock.js:686
msgid "Supplier part information will be deleted for merged items"
msgstr ""
-#: templates/js/translated/stock.js:773
+#: templates/js/translated/stock.js:772
msgid "Confirm stock item merge"
msgstr ""
-#: templates/js/translated/stock.js:774
+#: templates/js/translated/stock.js:773
msgid "Merge Stock Items"
msgstr ""
-#: templates/js/translated/stock.js:869
+#: templates/js/translated/stock.js:868
msgid "Transfer Stock"
msgstr ""
-#: templates/js/translated/stock.js:870
+#: templates/js/translated/stock.js:869
msgid "Move"
msgstr "Przenieś"
-#: templates/js/translated/stock.js:876
+#: templates/js/translated/stock.js:875
msgid "Count Stock"
msgstr ""
-#: templates/js/translated/stock.js:877
+#: templates/js/translated/stock.js:876
msgid "Count"
msgstr ""
-#: templates/js/translated/stock.js:881
+#: templates/js/translated/stock.js:880
msgid "Remove Stock"
msgstr ""
-#: templates/js/translated/stock.js:882
+#: templates/js/translated/stock.js:881
msgid "Take"
msgstr "Weź"
-#: templates/js/translated/stock.js:886
+#: templates/js/translated/stock.js:885
msgid "Add Stock"
msgstr "Dodaj stan"
-#: templates/js/translated/stock.js:887 users/models.py:215
+#: templates/js/translated/stock.js:886 users/models.py:215
msgid "Add"
msgstr "Dodaj"
-#: templates/js/translated/stock.js:891
+#: templates/js/translated/stock.js:890
msgid "Delete Stock"
msgstr "Usuń stan magazynowy"
-#: templates/js/translated/stock.js:984
+#: templates/js/translated/stock.js:983
msgid "Quantity cannot be adjusted for serialized stock"
msgstr ""
-#: templates/js/translated/stock.js:984
+#: templates/js/translated/stock.js:983
msgid "Specify stock quantity"
msgstr ""
-#: templates/js/translated/stock.js:1024
+#: templates/js/translated/stock.js:1023
msgid "You must select at least one available stock item"
msgstr ""
-#: templates/js/translated/stock.js:1047
+#: templates/js/translated/stock.js:1046
msgid "Confirm stock adjustment"
msgstr ""
-#: templates/js/translated/stock.js:1172
+#: templates/js/translated/stock.js:1182
msgid "PASS"
msgstr ""
-#: templates/js/translated/stock.js:1174
+#: templates/js/translated/stock.js:1184
msgid "FAIL"
msgstr ""
-#: templates/js/translated/stock.js:1179
+#: templates/js/translated/stock.js:1189
msgid "NO RESULT"
msgstr "BRAK WYNIKÓW"
-#: templates/js/translated/stock.js:1226
+#: templates/js/translated/stock.js:1236
msgid "Pass test"
msgstr ""
-#: templates/js/translated/stock.js:1229
+#: templates/js/translated/stock.js:1239
msgid "Add test result"
msgstr "Dodaj wynik testu"
-#: templates/js/translated/stock.js:1255
+#: templates/js/translated/stock.js:1265
msgid "No test results found"
msgstr ""
-#: templates/js/translated/stock.js:1311
+#: templates/js/translated/stock.js:1321
msgid "Test Date"
msgstr ""
-#: templates/js/translated/stock.js:1476
+#: templates/js/translated/stock.js:1486
msgid "Edit Test Result"
msgstr ""
-#: templates/js/translated/stock.js:1498
+#: templates/js/translated/stock.js:1508
msgid "Delete Test Result"
msgstr ""
-#: templates/js/translated/stock.js:1527
+#: templates/js/translated/stock.js:1537
msgid "In production"
msgstr "W produkcji"
-#: templates/js/translated/stock.js:1531
+#: templates/js/translated/stock.js:1541
msgid "Installed in Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:1539
+#: templates/js/translated/stock.js:1549
msgid "Assigned to Sales Order"
msgstr ""
-#: templates/js/translated/stock.js:1545
+#: templates/js/translated/stock.js:1555
msgid "No stock location set"
msgstr ""
-#: templates/js/translated/stock.js:1712
+#: templates/js/translated/stock.js:1722
msgid "Stock item is in production"
msgstr ""
-#: templates/js/translated/stock.js:1717
+#: templates/js/translated/stock.js:1727
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:1720
+#: templates/js/translated/stock.js:1730
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:1723
+#: templates/js/translated/stock.js:1733
msgid "Serialized stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:1725
+#: templates/js/translated/stock.js:1735
msgid "Stock item has been fully allocated"
msgstr ""
-#: templates/js/translated/stock.js:1727
+#: templates/js/translated/stock.js:1737
msgid "Stock item has been partially allocated"
msgstr ""
-#: templates/js/translated/stock.js:1730
+#: templates/js/translated/stock.js:1740
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:1734
+#: templates/js/translated/stock.js:1744
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:1736
+#: templates/js/translated/stock.js:1746
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:1743
+#: templates/js/translated/stock.js:1753
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:1745
+#: templates/js/translated/stock.js:1755
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:1747
+#: templates/js/translated/stock.js:1757
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:1751
+#: templates/js/translated/stock.js:1761
#: templates/js/translated/table_filters.js:188
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:1802
+#: templates/js/translated/stock.js:1812
msgid "Stocktake"
msgstr ""
-#: templates/js/translated/stock.js:1884
+#: templates/js/translated/stock.js:1894
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:1922
+#: templates/js/translated/stock.js:1932
msgid "No stock items matching query"
msgstr ""
-#: templates/js/translated/stock.js:2095
+#: templates/js/translated/stock.js:2105
msgid "Set Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:2109
+#: templates/js/translated/stock.js:2119
msgid "Select Status Code"
msgstr ""
-#: templates/js/translated/stock.js:2110
+#: templates/js/translated/stock.js:2120
msgid "Status code must be selected"
msgstr "Kod statusu musi być wybrany"
-#: templates/js/translated/stock.js:2365
+#: templates/js/translated/stock.js:2375
msgid "Details"
msgstr "Szczegóły"
-#: templates/js/translated/stock.js:2381
+#: templates/js/translated/stock.js:2391
msgid "Part information unavailable"
msgstr ""
-#: templates/js/translated/stock.js:2403
+#: templates/js/translated/stock.js:2413
msgid "Location no longer exists"
msgstr "Lokalizacja już nie istnieje"
-#: templates/js/translated/stock.js:2422
+#: templates/js/translated/stock.js:2432
msgid "Purchase order no longer exists"
msgstr "Zamówienie zakupu już nie istnieje"
-#: templates/js/translated/stock.js:2441
+#: templates/js/translated/stock.js:2451
msgid "Customer no longer exists"
msgstr "Klient już nie istnieje"
-#: templates/js/translated/stock.js:2459
+#: templates/js/translated/stock.js:2469
msgid "Stock item no longer exists"
msgstr "Element magazynowy już nie istnieje"
-#: templates/js/translated/stock.js:2482
+#: templates/js/translated/stock.js:2492
msgid "Added"
msgstr "Dodano"
-#: templates/js/translated/stock.js:2490
+#: templates/js/translated/stock.js:2500
msgid "Removed"
msgstr "Usunięto"
-#: templates/js/translated/stock.js:2566
+#: templates/js/translated/stock.js:2576
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:2617 templates/js/translated/stock.js:2653
+#: templates/js/translated/stock.js:2627 templates/js/translated/stock.js:2663
msgid "Uninstall Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:2666
+#: templates/js/translated/stock.js:2676
msgid "Select stock item to uninstall"
msgstr ""
-#: templates/js/translated/stock.js:2687
+#: templates/js/translated/stock.js:2697
msgid "Install another stock item into this item"
msgstr ""
-#: templates/js/translated/stock.js:2688
+#: templates/js/translated/stock.js:2698
msgid "Stock items can only be installed if they meet the following criteria"
msgstr ""
-#: templates/js/translated/stock.js:2690
+#: templates/js/translated/stock.js:2700
msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:2691
+#: templates/js/translated/stock.js:2701
msgid "The Stock Item is currently available in stock"
msgstr ""
-#: templates/js/translated/stock.js:2692
+#: templates/js/translated/stock.js:2702
msgid "The Stock Item is not already installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:2693
+#: templates/js/translated/stock.js:2703
msgid "The Stock Item is tracked by either a batch code or serial number"
msgstr ""
-#: templates/js/translated/stock.js:2706
+#: templates/js/translated/stock.js:2716
msgid "Select part to install"
msgstr ""
diff --git a/InvenTree/locale/pt/LC_MESSAGES/django.po b/InvenTree/locale/pt/LC_MESSAGES/django.po
index cbd00e0665..9e6a479213 100644
--- a/InvenTree/locale/pt/LC_MESSAGES/django.po
+++ b/InvenTree/locale/pt/LC_MESSAGES/django.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-06-05 14:26+0000\n"
-"PO-Revision-Date: 2022-06-05 14:34\n"
+"POT-Creation-Date: 2022-06-06 22:59+0000\n"
+"PO-Revision-Date: 2022-06-07 14:34\n"
"Last-Translator: \n"
"Language-Team: Portuguese, Brazilian\n"
"Language: pt_BR\n"
@@ -17,7 +17,7 @@ msgstr ""
"X-Crowdin-File: /[inventree.InvenTree] l10/InvenTree/locale/en/LC_MESSAGES/django.po\n"
"X-Crowdin-File-ID: 154\n"
-#: InvenTree/api.py:46
+#: InvenTree/api.py:49
msgid "API endpoint not found"
msgstr "API endpoint não encontrado"
@@ -29,275 +29,273 @@ msgstr ""
msgid "Enter date"
msgstr "Insira uma Data"
-#: InvenTree/forms.py:117 templates/account/email_confirm.html:20
-#: templates/js/translated/forms.js:630
-msgid "Confirm"
-msgstr "Confirmar"
-
-#: InvenTree/forms.py:134
+#: InvenTree/forms.py:117
msgid "Confirm delete"
msgstr "Confirmar exclusão"
-#: InvenTree/forms.py:135
+#: InvenTree/forms.py:118
msgid "Confirm item deletion"
msgstr "Confirmar exclusão do item"
-#: InvenTree/forms.py:167
+#: InvenTree/forms.py:150
msgid "Enter password"
msgstr "Digite a senha"
-#: InvenTree/forms.py:168
+#: InvenTree/forms.py:151
msgid "Enter new password"
msgstr "Insira uma nova senha"
-#: InvenTree/forms.py:175
+#: InvenTree/forms.py:158
msgid "Confirm password"
msgstr "Confirmar senha"
-#: InvenTree/forms.py:176
+#: InvenTree/forms.py:159
msgid "Confirm new password"
msgstr "Confirmar nova senha"
-#: InvenTree/forms.py:213
-msgid "Select Category"
-msgstr "Selecionar Categoria"
-
-#: InvenTree/forms.py:234
+#: InvenTree/forms.py:184
msgid "Email (again)"
msgstr "E-mail (novamente)"
-#: InvenTree/forms.py:238
+#: InvenTree/forms.py:188
msgid "Email address confirmation"
msgstr "Confirmação do endereço de email"
-#: InvenTree/forms.py:259
+#: InvenTree/forms.py:209
msgid "You must type the same email each time."
msgstr ""
-#: InvenTree/helpers.py:402
+#: InvenTree/helpers.py:404
#, python-brace-format
msgid "Duplicate serial: {sn}"
msgstr ""
-#: InvenTree/helpers.py:409 order/models.py:365 order/models.py:517
+#: InvenTree/helpers.py:411 order/models.py:370 order/models.py:522
msgid "Invalid quantity provided"
msgstr ""
-#: InvenTree/helpers.py:412
+#: InvenTree/helpers.py:414
msgid "Empty serial number string"
msgstr ""
-#: InvenTree/helpers.py:444
+#: InvenTree/helpers.py:446
#, python-brace-format
msgid "Invalid group range: {g}"
msgstr ""
-#: InvenTree/helpers.py:447
+#: InvenTree/helpers.py:449
#, python-brace-format
msgid "Invalid group: {g}"
msgstr ""
-#: InvenTree/helpers.py:475
+#: InvenTree/helpers.py:477
#, python-brace-format
msgid "Invalid group sequence: {g}"
msgstr ""
-#: InvenTree/helpers.py:483
+#: InvenTree/helpers.py:485
#, python-brace-format
msgid "Invalid/no group {group}"
msgstr ""
-#: InvenTree/helpers.py:489
+#: InvenTree/helpers.py:491
msgid "No serial numbers found"
msgstr ""
-#: InvenTree/helpers.py:493
+#: InvenTree/helpers.py:495
#, python-brace-format
msgid "Number of unique serial numbers ({s}) must match quantity ({q})"
msgstr ""
-#: InvenTree/models.py:174
+#: InvenTree/models.py:178
msgid "Missing file"
msgstr ""
-#: InvenTree/models.py:175
+#: InvenTree/models.py:179
msgid "Missing external link"
msgstr ""
-#: InvenTree/models.py:187 stock/models.py:2087
-#: templates/js/translated/attachment.js:101
-#: templates/js/translated/attachment.js:198
+#: InvenTree/models.py:191 stock/models.py:2091
+#: templates/js/translated/attachment.js:103
+#: templates/js/translated/attachment.js:194
msgid "Attachment"
msgstr ""
-#: InvenTree/models.py:188
+#: InvenTree/models.py:192
msgid "Select file to attach"
msgstr ""
-#: InvenTree/models.py:194 company/models.py:123 company/models.py:272
-#: company/models.py:506 order/models.py:135 order/models.py:1235
+#: InvenTree/models.py:198 company/models.py:123 company/models.py:272
+#: company/models.py:506 order/models.py:136 order/models.py:1251
#: part/models.py:795
#: report/templates/report/inventree_build_order_base.html:165
-#: templates/js/translated/company.js:655
-#: templates/js/translated/company.js:946 templates/js/translated/order.js:2676
-#: templates/js/translated/part.js:1441
+#: templates/js/translated/company.js:640
+#: templates/js/translated/company.js:931 templates/js/translated/order.js:2676
+#: templates/js/translated/part.js:1485
msgid "Link"
msgstr ""
-#: InvenTree/models.py:195 build/models.py:320 part/models.py:796
+#: InvenTree/models.py:199 build/models.py:320 part/models.py:796
#: stock/models.py:642
msgid "Link to external URL"
msgstr ""
-#: InvenTree/models.py:198 templates/js/translated/attachment.js:102
-#: templates/js/translated/attachment.js:242
+#: InvenTree/models.py:202 templates/js/translated/attachment.js:104
+#: templates/js/translated/attachment.js:238
msgid "Comment"
msgstr ""
-#: InvenTree/models.py:198
+#: InvenTree/models.py:202
msgid "File comment"
msgstr ""
-#: InvenTree/models.py:204 InvenTree/models.py:205 common/models.py:1499
-#: common/models.py:1500 common/models.py:1728 common/models.py:1729
-#: common/models.py:1991 common/models.py:1992 part/models.py:2153
-#: part/models.py:2173 plugin/models.py:238 plugin/models.py:239
+#: InvenTree/models.py:208 InvenTree/models.py:209 common/models.py:1506
+#: common/models.py:1507 common/models.py:1735 common/models.py:1736
+#: common/models.py:1998 common/models.py:1999 part/models.py:2141
+#: part/models.py:2161 plugin/models.py:238 plugin/models.py:239
#: report/templates/report/inventree_test_report_base.html:96
-#: templates/js/translated/stock.js:2513
+#: templates/js/translated/stock.js:2523
msgid "User"
msgstr ""
-#: InvenTree/models.py:208
+#: InvenTree/models.py:212
msgid "upload date"
msgstr ""
-#: InvenTree/models.py:230
+#: InvenTree/models.py:234
msgid "Filename must not be empty"
msgstr ""
-#: InvenTree/models.py:253
+#: InvenTree/models.py:257
msgid "Invalid attachment directory"
msgstr ""
-#: InvenTree/models.py:263
+#: InvenTree/models.py:267
#, python-brace-format
msgid "Filename contains illegal character '{c}'"
msgstr ""
-#: InvenTree/models.py:266
+#: InvenTree/models.py:270
msgid "Filename missing extension"
msgstr ""
-#: InvenTree/models.py:273
+#: InvenTree/models.py:277
msgid "Attachment with this filename already exists"
msgstr ""
-#: InvenTree/models.py:280
+#: InvenTree/models.py:284
msgid "Error renaming file"
msgstr ""
-#: InvenTree/models.py:314
+#: InvenTree/models.py:318
msgid "Invalid choice"
msgstr ""
-#: InvenTree/models.py:333 InvenTree/models.py:334 common/models.py:1714
+#: InvenTree/models.py:337 InvenTree/models.py:338 common/models.py:1721
#: company/models.py:354 label/models.py:101 part/models.py:739
-#: part/models.py:2331 plugin/models.py:93 report/models.py:151
+#: part/models.py:2319 plugin/models.py:93 report/models.py:151
#: templates/InvenTree/notifications/notifications.html:84
#: templates/InvenTree/settings/mixins/urls.html:13
#: templates/InvenTree/settings/plugin.html:49
#: templates/InvenTree/settings/plugin.html:132
#: templates/InvenTree/settings/plugin_settings.html:23
#: templates/InvenTree/settings/settings.html:346
-#: templates/js/translated/company.js:539
-#: templates/js/translated/company.js:757 templates/js/translated/part.js:615
-#: templates/js/translated/part.js:767 templates/js/translated/part.js:1736
-#: templates/js/translated/stock.js:2283
+#: templates/js/translated/company.js:530
+#: templates/js/translated/company.js:742 templates/js/translated/part.js:659
+#: templates/js/translated/part.js:811 templates/js/translated/part.js:1832
+#: templates/js/translated/stock.js:2293
msgid "Name"
msgstr ""
-#: InvenTree/models.py:340 build/models.py:197
+#: InvenTree/models.py:344 build/models.py:197
#: build/templates/build/detail.html:24 company/models.py:278
#: company/models.py:512 company/templates/company/company_base.html:71
#: company/templates/company/manufacturer_part.html:75
#: company/templates/company/supplier_part.html:73 label/models.py:108
-#: order/models.py:133 part/models.py:762 part/templates/part/category.html:74
-#: part/templates/part/part_base.html:167
-#: part/templates/part/set_category.html:14 report/models.py:164
+#: order/models.py:134 part/models.py:762 part/templates/part/category.html:74
+#: part/templates/part/part_base.html:167 report/models.py:164
#: report/models.py:509 report/models.py:550
#: report/templates/report/inventree_build_order_base.html:118
#: stock/templates/stock/location.html:103
#: templates/InvenTree/settings/plugin_settings.html:33
-#: templates/js/translated/bom.js:553 templates/js/translated/bom.js:851
-#: templates/js/translated/build.js:2476 templates/js/translated/company.js:401
-#: templates/js/translated/company.js:666
-#: templates/js/translated/company.js:957 templates/js/translated/order.js:1656
+#: templates/js/translated/bom.js:553 templates/js/translated/bom.js:845
+#: templates/js/translated/build.js:2476 templates/js/translated/company.js:395
+#: templates/js/translated/company.js:651
+#: templates/js/translated/company.js:942 templates/js/translated/order.js:1656
#: templates/js/translated/order.js:1888 templates/js/translated/order.js:2476
-#: templates/js/translated/part.js:674 templates/js/translated/part.js:1082
-#: templates/js/translated/part.js:1355 templates/js/translated/part.js:1755
-#: templates/js/translated/part.js:1824 templates/js/translated/stock.js:1676
-#: templates/js/translated/stock.js:2295 templates/js/translated/stock.js:2350
+#: templates/js/translated/part.js:718 templates/js/translated/part.js:1126
+#: templates/js/translated/part.js:1399 templates/js/translated/part.js:1851
+#: templates/js/translated/part.js:1920 templates/js/translated/stock.js:1686
+#: templates/js/translated/stock.js:2305 templates/js/translated/stock.js:2360
msgid "Description"
msgstr ""
-#: InvenTree/models.py:341
+#: InvenTree/models.py:345
msgid "Description (optional)"
msgstr ""
-#: InvenTree/models.py:349
+#: InvenTree/models.py:353
msgid "parent"
msgstr ""
-#: InvenTree/serializers.py:52 part/models.py:2652
+#: InvenTree/models.py:466
+msgid "Server Error"
+msgstr ""
+
+#: InvenTree/models.py:467
+msgid "An error has been logged by the server."
+msgstr ""
+
+#: InvenTree/serializers.py:52 part/models.py:2640
msgid "Must be a valid number"
msgstr ""
-#: InvenTree/serializers.py:271
+#: InvenTree/serializers.py:263
msgid "Filename"
msgstr ""
-#: InvenTree/serializers.py:306
+#: InvenTree/serializers.py:298
msgid "Invalid value"
msgstr ""
-#: InvenTree/serializers.py:328
+#: InvenTree/serializers.py:320
msgid "Data File"
msgstr ""
-#: InvenTree/serializers.py:329
+#: InvenTree/serializers.py:321
msgid "Select data file for upload"
msgstr ""
-#: InvenTree/serializers.py:350
+#: InvenTree/serializers.py:342
msgid "Unsupported file type"
msgstr ""
-#: InvenTree/serializers.py:356
+#: InvenTree/serializers.py:348
msgid "File is too large"
msgstr ""
-#: InvenTree/serializers.py:377
+#: InvenTree/serializers.py:369
msgid "No columns found in file"
msgstr ""
-#: InvenTree/serializers.py:380
+#: InvenTree/serializers.py:372
msgid "No data rows found in file"
msgstr ""
-#: InvenTree/serializers.py:503
+#: InvenTree/serializers.py:495
msgid "No data rows provided"
msgstr ""
-#: InvenTree/serializers.py:506
+#: InvenTree/serializers.py:498
msgid "No data columns supplied"
msgstr ""
-#: InvenTree/serializers.py:583
+#: InvenTree/serializers.py:575
#, python-brace-format
msgid "Missing required column: '{name}'"
msgstr ""
-#: InvenTree/serializers.py:592
+#: InvenTree/serializers.py:584
#, python-brace-format
msgid "Duplicate column: '{col}'"
msgstr ""
@@ -440,7 +438,7 @@ msgstr ""
msgid "Returned"
msgstr ""
-#: InvenTree/status_codes.py:141 order/models.py:1114
+#: InvenTree/status_codes.py:141 order/models.py:1130
#: templates/js/translated/order.js:3264 templates/js/translated/order.js:3607
msgid "Shipped"
msgstr ""
@@ -525,7 +523,7 @@ msgstr ""
msgid "Split child item"
msgstr ""
-#: InvenTree/status_codes.py:281 templates/js/translated/stock.js:2020
+#: InvenTree/status_codes.py:281 templates/js/translated/stock.js:2030
msgid "Merged stock items"
msgstr ""
@@ -597,27 +595,27 @@ msgstr ""
msgid "Invalid value for overage"
msgstr ""
-#: InvenTree/views.py:522
+#: InvenTree/views.py:521
msgid "Delete Item"
msgstr ""
-#: InvenTree/views.py:571
+#: InvenTree/views.py:570
msgid "Check box to confirm item deletion"
msgstr ""
-#: InvenTree/views.py:586 templates/InvenTree/settings/user.html:22
+#: InvenTree/views.py:585 templates/InvenTree/settings/user.html:22
msgid "Edit User Information"
msgstr ""
-#: InvenTree/views.py:598 templates/InvenTree/settings/user.html:19
+#: InvenTree/views.py:597 templates/InvenTree/settings/user.html:19
msgid "Set Password"
msgstr ""
-#: InvenTree/views.py:618
+#: InvenTree/views.py:617
msgid "Password fields must match"
msgstr ""
-#: InvenTree/views.py:842 templates/navbar.html:152
+#: InvenTree/views.py:807 templates/navbar.html:152
msgid "System Information"
msgstr ""
@@ -628,6 +626,7 @@ msgstr ""
#: build/models.py:131 build/templates/build/build_base.html:9
#: build/templates/build/build_base.html:27
#: report/templates/report/inventree_build_order_base.html:106
+#: templates/email/overdue_build_order.html:15
#: templates/js/translated/build.js:727
msgid "Build Order"
msgstr ""
@@ -646,12 +645,12 @@ msgstr ""
msgid "Build Order Reference"
msgstr ""
-#: build/models.py:189 order/models.py:288 order/models.py:638
-#: order/models.py:916 part/models.py:2570
+#: build/models.py:189 order/models.py:293 order/models.py:654
+#: order/models.py:932 part/models.py:2558
#: part/templates/part/upload_bom.html:54
#: report/templates/report/inventree_po_report.html:91
#: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:688 templates/js/translated/bom.js:858
+#: templates/js/translated/bom.js:690 templates/js/translated/bom.js:852
#: templates/js/translated/build.js:1777 templates/js/translated/order.js:1919
#: templates/js/translated/order.js:2120 templates/js/translated/order.js:3448
#: templates/js/translated/order.js:3959
@@ -673,13 +672,12 @@ msgstr ""
#: build/models.py:215 build/templates/build/build_base.html:77
#: build/templates/build/detail.html:29 company/models.py:647
-#: order/models.py:1012 order/models.py:1103 part/models.py:336
-#: part/models.py:2099 part/models.py:2114 part/models.py:2133
-#: part/models.py:2151 part/models.py:2250 part/models.py:2370
-#: part/models.py:2460 part/models.py:2545 part/models.py:2821
-#: part/serializers.py:793 part/templates/part/part_app_base.html:8
+#: order/models.py:1028 order/models.py:1119 part/models.py:336
+#: part/models.py:2087 part/models.py:2102 part/models.py:2121
+#: part/models.py:2139 part/models.py:2238 part/models.py:2358
+#: part/models.py:2448 part/models.py:2533 part/models.py:2809
+#: part/serializers.py:795 part/templates/part/part_app_base.html:8
#: part/templates/part/part_pricing.html:12
-#: part/templates/part/set_category.html:13
#: part/templates/part/upload_bom.html:52
#: report/templates/report/inventree_build_order_base.html:110
#: report/templates/report/inventree_po_report.html:89
@@ -687,22 +685,23 @@ msgstr ""
#: templates/InvenTree/search.html:80
#: templates/email/build_order_required_stock.html:17
#: templates/email/low_stock_notification.html:16
+#: templates/email/overdue_build_order.html:16
#: templates/js/translated/barcode.js:435 templates/js/translated/bom.js:552
-#: templates/js/translated/bom.js:687 templates/js/translated/bom.js:805
+#: templates/js/translated/bom.js:689 templates/js/translated/bom.js:799
#: templates/js/translated/build.js:1153 templates/js/translated/build.js:1647
#: templates/js/translated/build.js:2083 templates/js/translated/build.js:2481
-#: templates/js/translated/company.js:252
-#: templates/js/translated/company.js:486
-#: templates/js/translated/company.js:607
-#: templates/js/translated/company.js:866 templates/js/translated/order.js:100
+#: templates/js/translated/company.js:253
+#: templates/js/translated/company.js:482
+#: templates/js/translated/company.js:592
+#: templates/js/translated/company.js:851 templates/js/translated/order.js:100
#: templates/js/translated/order.js:883 templates/js/translated/order.js:1315
#: templates/js/translated/order.js:1873 templates/js/translated/order.js:2819
#: templates/js/translated/order.js:3217 templates/js/translated/order.js:3432
-#: templates/js/translated/part.js:1067 templates/js/translated/part.js:1137
-#: templates/js/translated/part.js:1333 templates/js/translated/stock.js:531
-#: templates/js/translated/stock.js:696 templates/js/translated/stock.js:903
-#: templates/js/translated/stock.js:1633 templates/js/translated/stock.js:2376
-#: templates/js/translated/stock.js:2571 templates/js/translated/stock.js:2705
+#: templates/js/translated/part.js:1111 templates/js/translated/part.js:1181
+#: templates/js/translated/part.js:1377 templates/js/translated/stock.js:530
+#: templates/js/translated/stock.js:695 templates/js/translated/stock.js:902
+#: templates/js/translated/stock.js:1643 templates/js/translated/stock.js:2386
+#: templates/js/translated/stock.js:2581 templates/js/translated/stock.js:2715
msgid "Part"
msgstr ""
@@ -768,12 +767,12 @@ msgstr ""
msgid "Batch code for this build output"
msgstr ""
-#: build/models.py:282 order/models.py:137 part/models.py:932
+#: build/models.py:282 order/models.py:138 part/models.py:932
#: part/templates/part/part_base.html:305 templates/js/translated/order.js:2489
msgid "Creation Date"
msgstr ""
-#: build/models.py:286 order/models.py:660
+#: build/models.py:286 order/models.py:676
msgid "Target completion date"
msgstr ""
@@ -781,7 +780,7 @@ msgstr ""
msgid "Target date for build completion. Build will be overdue after this date."
msgstr ""
-#: build/models.py:290 order/models.py:331
+#: build/models.py:290 order/models.py:336
#: templates/js/translated/build.js:2558
msgid "Completion Date"
msgstr ""
@@ -799,7 +798,7 @@ msgid "User who issued this build order"
msgstr ""
#: build/models.py:313 build/templates/build/build_base.html:190
-#: build/templates/build/detail.html:115 order/models.py:151
+#: build/templates/build/detail.html:115 order/models.py:152
#: order/templates/order/order_base.html:176
#: order/templates/order/sales_order_base.html:183 part/models.py:936
#: report/templates/report/inventree_build_order_base.html:159
@@ -822,20 +821,20 @@ msgstr ""
#: build/models.py:324 build/serializers.py:374
#: build/templates/build/sidebar.html:21 company/models.py:134
#: company/models.py:519 company/templates/company/sidebar.html:25
-#: order/models.py:155 order/models.py:918 order/models.py:1213
+#: order/models.py:156 order/models.py:934 order/models.py:1229
#: order/templates/order/po_sidebar.html:11
#: order/templates/order/so_sidebar.html:17 part/models.py:921
#: part/templates/part/part_sidebar.html:59
#: report/templates/report/inventree_build_order_base.html:173
-#: stock/models.py:713 stock/models.py:1985 stock/models.py:2093
+#: stock/models.py:713 stock/models.py:1989 stock/models.py:2097
#: stock/serializers.py:315 stock/serializers.py:444 stock/serializers.py:486
-#: stock/serializers.py:772 stock/serializers.py:871 stock/serializers.py:1003
+#: stock/serializers.py:759 stock/serializers.py:858 stock/serializers.py:990
#: stock/templates/stock/stock_sidebar.html:25
-#: templates/js/translated/barcode.js:100 templates/js/translated/bom.js:1044
-#: templates/js/translated/company.js:962 templates/js/translated/order.js:2040
+#: templates/js/translated/barcode.js:100 templates/js/translated/bom.js:1038
+#: templates/js/translated/company.js:947 templates/js/translated/order.js:2040
#: templates/js/translated/order.js:2191 templates/js/translated/order.js:2687
#: templates/js/translated/order.js:3632 templates/js/translated/order.js:4030
-#: templates/js/translated/stock.js:1307 templates/js/translated/stock.js:1916
+#: templates/js/translated/stock.js:1317 templates/js/translated/stock.js:1926
msgid "Notes"
msgstr ""
@@ -855,44 +854,44 @@ msgstr ""
msgid "Build output does not match Build Order"
msgstr ""
-#: build/models.py:1108
+#: build/models.py:1111
msgid "Build item must specify a build output, as master part is marked as trackable"
msgstr ""
-#: build/models.py:1117
+#: build/models.py:1120
#, python-brace-format
msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})"
msgstr ""
-#: build/models.py:1127
+#: build/models.py:1130
msgid "Stock item is over-allocated"
msgstr ""
-#: build/models.py:1133 order/models.py:1372
+#: build/models.py:1136 order/models.py:1388
msgid "Allocation quantity must be greater than zero"
msgstr ""
-#: build/models.py:1139
+#: build/models.py:1142
msgid "Quantity must be 1 for serialized stock"
msgstr ""
-#: build/models.py:1196
+#: build/models.py:1199
msgid "Selected stock item not found in BOM"
msgstr ""
-#: build/models.py:1265 stock/templates/stock/item_base.html:177
+#: build/models.py:1268 stock/templates/stock/item_base.html:177
#: templates/InvenTree/search.html:137 templates/js/translated/build.js:2454
#: templates/navbar.html:38
msgid "Build"
msgstr ""
-#: build/models.py:1266
+#: build/models.py:1269
msgid "Build to allocate parts"
msgstr ""
-#: build/models.py:1282 build/serializers.py:603 order/serializers.py:994
-#: order/serializers.py:1015 stock/serializers.py:382 stock/serializers.py:703
-#: stock/serializers.py:829 stock/templates/stock/item_base.html:10
+#: build/models.py:1285 build/serializers.py:603 order/serializers.py:996
+#: order/serializers.py:1017 stock/serializers.py:382 stock/serializers.py:690
+#: stock/serializers.py:816 stock/templates/stock/item_base.html:10
#: stock/templates/stock/item_base.html:23
#: stock/templates/stock/item_base.html:199
#: templates/js/translated/build.js:738 templates/js/translated/build.js:743
@@ -900,22 +899,22 @@ msgstr ""
#: templates/js/translated/order.js:101 templates/js/translated/order.js:2820
#: templates/js/translated/order.js:3124 templates/js/translated/order.js:3129
#: templates/js/translated/order.js:3224 templates/js/translated/order.js:3314
-#: templates/js/translated/stock.js:532 templates/js/translated/stock.js:697
-#: templates/js/translated/stock.js:2449
+#: templates/js/translated/stock.js:531 templates/js/translated/stock.js:696
+#: templates/js/translated/stock.js:2459
msgid "Stock Item"
msgstr ""
-#: build/models.py:1283
+#: build/models.py:1286
msgid "Source stock item"
msgstr ""
-#: build/models.py:1295 build/serializers.py:183
+#: build/models.py:1298 build/serializers.py:183
#: build/templates/build/build_base.html:82
-#: build/templates/build/detail.html:34 common/models.py:1536
+#: build/templates/build/detail.html:34 common/models.py:1543
#: company/forms.py:36 company/templates/company/supplier_part.html:258
-#: order/models.py:909 order/models.py:1412 order/serializers.py:1134
-#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:68
-#: part/forms.py:83 part/forms.py:98 part/models.py:2561
+#: order/models.py:925 order/models.py:1428 order/serializers.py:1136
+#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:59
+#: part/forms.py:74 part/forms.py:89 part/models.py:2549
#: part/templates/part/detail.html:935 part/templates/part/detail.html:1021
#: part/templates/part/part_pricing.html:16
#: part/templates/part/upload_bom.html:53
@@ -926,8 +925,8 @@ msgstr ""
#: report/templates/report/inventree_test_report_base.html:139
#: stock/serializers.py:279 stock/templates/stock/item_base.html:292
#: stock/templates/stock/item_base.html:300
-#: templates/js/translated/barcode.js:437 templates/js/translated/bom.js:689
-#: templates/js/translated/bom.js:866 templates/js/translated/build.js:422
+#: templates/js/translated/barcode.js:437 templates/js/translated/bom.js:691
+#: templates/js/translated/bom.js:860 templates/js/translated/build.js:422
#: templates/js/translated/build.js:574 templates/js/translated/build.js:765
#: templates/js/translated/build.js:1175 templates/js/translated/build.js:1673
#: templates/js/translated/build.js:2086
@@ -937,23 +936,23 @@ msgstr ""
#: templates/js/translated/order.js:2821 templates/js/translated/order.js:3143
#: templates/js/translated/order.js:3231 templates/js/translated/order.js:3320
#: templates/js/translated/order.js:3454 templates/js/translated/order.js:3965
-#: templates/js/translated/part.js:967 templates/js/translated/part.js:1969
-#: templates/js/translated/part.js:2200 templates/js/translated/part.js:2234
-#: templates/js/translated/part.js:2312 templates/js/translated/stock.js:403
-#: templates/js/translated/stock.js:557 templates/js/translated/stock.js:727
-#: templates/js/translated/stock.js:2498 templates/js/translated/stock.js:2583
+#: templates/js/translated/part.js:1011 templates/js/translated/part.js:2065
+#: templates/js/translated/part.js:2296 templates/js/translated/part.js:2330
+#: templates/js/translated/part.js:2408 templates/js/translated/stock.js:402
+#: templates/js/translated/stock.js:556 templates/js/translated/stock.js:726
+#: templates/js/translated/stock.js:2508 templates/js/translated/stock.js:2593
msgid "Quantity"
msgstr ""
-#: build/models.py:1296
+#: build/models.py:1299
msgid "Stock quantity to allocate to build"
msgstr ""
-#: build/models.py:1304
+#: build/models.py:1307
msgid "Install into"
msgstr ""
-#: build/models.py:1305
+#: build/models.py:1308
msgid "Destination stock item"
msgstr ""
@@ -982,9 +981,9 @@ msgstr ""
msgid "Enter quantity for build output"
msgstr ""
-#: build/serializers.py:198 build/serializers.py:623 order/models.py:363
-#: order/serializers.py:280 order/serializers.py:435 part/serializers.py:512
-#: part/serializers.py:956 stock/models.py:470 stock/models.py:1239
+#: build/serializers.py:198 build/serializers.py:623 order/models.py:368
+#: order/serializers.py:280 order/serializers.py:435 part/serializers.py:514
+#: part/serializers.py:958 stock/models.py:470 stock/models.py:1239
#: stock/serializers.py:288
msgid "Quantity must be greater than zero"
msgstr ""
@@ -997,9 +996,9 @@ msgstr ""
msgid "Integer quantity required, as the bill of materials contains trackable parts"
msgstr ""
-#: build/serializers.py:222 order/serializers.py:448 order/serializers.py:1138
+#: build/serializers.py:222 order/serializers.py:448 order/serializers.py:1140
#: stock/serializers.py:297 templates/js/translated/order.js:1186
-#: templates/js/translated/stock.js:238 templates/js/translated/stock.js:404
+#: templates/js/translated/stock.js:237 templates/js/translated/stock.js:403
msgid "Serial Numbers"
msgstr ""
@@ -1015,7 +1014,7 @@ msgstr ""
msgid "Automatically allocate required items with matching serial numbers"
msgstr ""
-#: build/serializers.py:268 stock/api.py:552
+#: build/serializers.py:268 stock/api.py:553
msgid "The following serial numbers already exist"
msgstr ""
@@ -1025,16 +1024,16 @@ msgstr ""
#: build/serializers.py:356 order/serializers.py:421 order/serializers.py:525
#: stock/serializers.py:308 stock/serializers.py:439 stock/serializers.py:481
-#: stock/serializers.py:864 stock/serializers.py:1097
+#: stock/serializers.py:851 stock/serializers.py:1084
#: stock/templates/stock/item_base.html:390
#: templates/js/translated/barcode.js:436
#: templates/js/translated/barcode.js:618 templates/js/translated/build.js:750
#: templates/js/translated/build.js:1685 templates/js/translated/order.js:1213
#: templates/js/translated/order.js:3136 templates/js/translated/order.js:3239
#: templates/js/translated/order.js:3247 templates/js/translated/order.js:3328
-#: templates/js/translated/part.js:180 templates/js/translated/stock.js:533
-#: templates/js/translated/stock.js:698 templates/js/translated/stock.js:905
-#: templates/js/translated/stock.js:1787 templates/js/translated/stock.js:2390
+#: templates/js/translated/part.js:180 templates/js/translated/stock.js:532
+#: templates/js/translated/stock.js:697 templates/js/translated/stock.js:904
+#: templates/js/translated/stock.js:1797 templates/js/translated/stock.js:2400
msgid "Location"
msgstr ""
@@ -1043,12 +1042,12 @@ msgid "Location for completed build outputs"
msgstr ""
#: build/serializers.py:363 build/templates/build/build_base.html:142
-#: build/templates/build/detail.html:62 order/models.py:654
+#: build/templates/build/detail.html:62 order/models.py:670
#: order/serializers.py:458 stock/templates/stock/item_base.html:423
#: templates/js/translated/barcode.js:182 templates/js/translated/build.js:2510
#: templates/js/translated/order.js:1320 templates/js/translated/order.js:1660
-#: templates/js/translated/order.js:2481 templates/js/translated/stock.js:1762
-#: templates/js/translated/stock.js:2467 templates/js/translated/stock.js:2599
+#: templates/js/translated/order.js:2481 templates/js/translated/stock.js:1772
+#: templates/js/translated/stock.js:2477 templates/js/translated/stock.js:2609
msgid "Status"
msgstr ""
@@ -1108,8 +1107,8 @@ msgstr ""
msgid "No build outputs have been created for this build order"
msgstr ""
-#: build/serializers.py:535 build/serializers.py:580 part/models.py:2679
-#: part/models.py:2813
+#: build/serializers.py:535 build/serializers.py:580 part/models.py:2667
+#: part/models.py:2801
msgid "BOM Item"
msgstr ""
@@ -1125,11 +1124,11 @@ msgstr ""
msgid "bom_item.part must point to the same part as the build order"
msgstr ""
-#: build/serializers.py:609 stock/serializers.py:716
+#: build/serializers.py:609 stock/serializers.py:703
msgid "Item must be in stock"
msgstr ""
-#: build/serializers.py:667 order/serializers.py:1052
+#: build/serializers.py:667 order/serializers.py:1054
#, python-brace-format
msgid "Available quantity ({q}) exceeded"
msgstr ""
@@ -1146,7 +1145,7 @@ msgstr ""
msgid "This stock item has already been allocated to this build output"
msgstr ""
-#: build/serializers.py:708 order/serializers.py:1298
+#: build/serializers.py:708 order/serializers.py:1300
msgid "Allocation items must be provided"
msgstr ""
@@ -1178,10 +1177,19 @@ msgstr ""
msgid "Allow allocation of substitute parts"
msgstr ""
-#: build/tasks.py:96
+#: build/tasks.py:100
msgid "Stock required for build order"
msgstr ""
+#: build/tasks.py:118
+msgid "Overdue Build Order"
+msgstr ""
+
+#: build/tasks.py:123
+#, python-brace-format
+msgid "Build order {bo} is now overdue"
+msgstr ""
+
#: build/templates/build/build_base.html:39
#: order/templates/order/order_base.html:28
#: order/templates/order/sales_order_base.html:38
@@ -1244,13 +1252,13 @@ msgid "Stock has not been fully allocated to this Build Order"
msgstr ""
#: build/templates/build/build_base.html:151
-#: build/templates/build/detail.html:131 order/models.py:922
+#: build/templates/build/detail.html:131 order/models.py:938
#: order/templates/order/order_base.html:162
#: order/templates/order/sales_order_base.html:164
#: report/templates/report/inventree_build_order_base.html:126
#: templates/js/translated/build.js:2550 templates/js/translated/order.js:1677
#: templates/js/translated/order.js:1987 templates/js/translated/order.js:2497
-#: templates/js/translated/order.js:3517 templates/js/translated/part.js:971
+#: templates/js/translated/order.js:3517 templates/js/translated/part.js:1015
msgid "Target Date"
msgstr ""
@@ -1277,13 +1285,14 @@ msgid "Completed"
msgstr ""
#: build/templates/build/build_base.html:176
-#: build/templates/build/detail.html:94 order/models.py:1100
-#: order/models.py:1185 order/models.py:1320
+#: build/templates/build/detail.html:94 order/models.py:1116
+#: order/models.py:1201 order/models.py:1336
#: order/templates/order/sales_order_base.html:9
#: order/templates/order/sales_order_base.html:28
#: report/templates/report/inventree_build_order_base.html:136
#: report/templates/report/inventree_so_report.html:77
#: stock/templates/stock/item_base.html:370
+#: templates/email/overdue_sales_order.html:15
#: templates/js/translated/order.js:2436
msgid "Sales Order"
msgstr ""
@@ -1319,7 +1328,7 @@ msgstr ""
msgid "Stock can be taken from any available location."
msgstr ""
-#: build/templates/build/detail.html:49 order/models.py:1034
+#: build/templates/build/detail.html:49 order/models.py:1050
#: templates/js/translated/order.js:1321 templates/js/translated/order.js:2029
msgid "Destination"
msgstr ""
@@ -1336,8 +1345,8 @@ msgstr ""
#: stock/templates/stock/item_base.html:170
#: templates/js/translated/build.js:1179
#: templates/js/translated/model_renderers.js:112
-#: templates/js/translated/stock.js:971 templates/js/translated/stock.js:1776
-#: templates/js/translated/stock.js:2606
+#: templates/js/translated/stock.js:970 templates/js/translated/stock.js:1786
+#: templates/js/translated/stock.js:2616
#: templates/js/translated/table_filters.js:151
#: templates/js/translated/table_filters.js:242
msgid "Batch"
@@ -1716,7 +1725,7 @@ msgstr ""
msgid "Copy category parameter templates when creating a part"
msgstr ""
-#: common/models.py:820 part/models.py:2372 report/models.py:157
+#: common/models.py:820 part/models.py:2360 report/models.py:157
#: templates/js/translated/table_filters.js:38
#: templates/js/translated/table_filters.js:444
msgid "Template"
@@ -1726,7 +1735,7 @@ msgstr ""
msgid "Parts are templates by default"
msgstr ""
-#: common/models.py:827 part/models.py:884 templates/js/translated/bom.js:1390
+#: common/models.py:827 part/models.py:884 templates/js/translated/bom.js:1384
#: templates/js/translated/table_filters.js:168
#: templates/js/translated/table_filters.js:460
msgid "Assembly"
@@ -1880,7 +1889,7 @@ msgid "Default page size for PDF reports"
msgstr ""
#: common/models.py:968
-msgid "Test Reports"
+msgid "Enable Test Reports"
msgstr ""
#: common/models.py:969
@@ -1888,568 +1897,576 @@ msgid "Enable generation of test reports"
msgstr ""
#: common/models.py:975
-msgid "Batch Code Template"
+msgid "Attach Test Reports"
msgstr ""
#: common/models.py:976
-msgid "Template for generating default batch codes for stock items"
-msgstr ""
-
-#: common/models.py:981
-msgid "Stock Expiry"
+msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item"
msgstr ""
#: common/models.py:982
-msgid "Enable stock expiry functionality"
+msgid "Batch Code Template"
+msgstr ""
+
+#: common/models.py:983
+msgid "Template for generating default batch codes for stock items"
msgstr ""
#: common/models.py:988
-msgid "Sell Expired Stock"
+msgid "Stock Expiry"
msgstr ""
#: common/models.py:989
-msgid "Allow sale of expired stock"
+msgid "Enable stock expiry functionality"
msgstr ""
#: common/models.py:995
-msgid "Stock Stale Time"
+msgid "Sell Expired Stock"
msgstr ""
#: common/models.py:996
-msgid "Number of days stock items are considered stale before expiring"
+msgid "Allow sale of expired stock"
msgstr ""
-#: common/models.py:998
-msgid "days"
+#: common/models.py:1002
+msgid "Stock Stale Time"
msgstr ""
#: common/models.py:1003
-msgid "Build Expired Stock"
+msgid "Number of days stock items are considered stale before expiring"
msgstr ""
-#: common/models.py:1004
-msgid "Allow building with expired stock"
+#: common/models.py:1005
+msgid "days"
msgstr ""
#: common/models.py:1010
-msgid "Stock Ownership Control"
+msgid "Build Expired Stock"
msgstr ""
#: common/models.py:1011
-msgid "Enable ownership control over stock locations and items"
+msgid "Allow building with expired stock"
msgstr ""
#: common/models.py:1017
-msgid "Build Order Reference Prefix"
+msgid "Stock Ownership Control"
msgstr ""
#: common/models.py:1018
-msgid "Prefix value for build order reference"
-msgstr ""
-
-#: common/models.py:1023
-msgid "Build Order Reference Regex"
+msgid "Enable ownership control over stock locations and items"
msgstr ""
#: common/models.py:1024
+msgid "Build Order Reference Prefix"
+msgstr ""
+
+#: common/models.py:1025
+msgid "Prefix value for build order reference"
+msgstr ""
+
+#: common/models.py:1030
+msgid "Build Order Reference Regex"
+msgstr ""
+
+#: common/models.py:1031
msgid "Regular expression pattern for matching build order reference"
msgstr ""
-#: common/models.py:1028
+#: common/models.py:1035
msgid "Sales Order Reference Prefix"
msgstr ""
-#: common/models.py:1029
+#: common/models.py:1036
msgid "Prefix value for sales order reference"
msgstr ""
-#: common/models.py:1034
+#: common/models.py:1041
msgid "Sales Order Default Shipment"
msgstr ""
-#: common/models.py:1035
+#: common/models.py:1042
msgid "Enable creation of default shipment with sales orders"
msgstr ""
-#: common/models.py:1041
+#: common/models.py:1048
msgid "Purchase Order Reference Prefix"
msgstr ""
-#: common/models.py:1042
+#: common/models.py:1049
msgid "Prefix value for purchase order reference"
msgstr ""
-#: common/models.py:1048
+#: common/models.py:1055
msgid "Enable password forgot"
msgstr ""
-#: common/models.py:1049
+#: common/models.py:1056
msgid "Enable password forgot function on the login pages"
msgstr ""
-#: common/models.py:1055
+#: common/models.py:1062
msgid "Enable registration"
msgstr ""
-#: common/models.py:1056
+#: common/models.py:1063
msgid "Enable self-registration for users on the login pages"
msgstr ""
-#: common/models.py:1062
+#: common/models.py:1069
msgid "Enable SSO"
msgstr ""
-#: common/models.py:1063
+#: common/models.py:1070
msgid "Enable SSO on the login pages"
msgstr ""
-#: common/models.py:1069
+#: common/models.py:1076
msgid "Email required"
msgstr ""
-#: common/models.py:1070
+#: common/models.py:1077
msgid "Require user to supply mail on signup"
msgstr ""
-#: common/models.py:1076
+#: common/models.py:1083
msgid "Auto-fill SSO users"
msgstr ""
-#: common/models.py:1077
+#: common/models.py:1084
msgid "Automatically fill out user-details from SSO account-data"
msgstr ""
-#: common/models.py:1083
+#: common/models.py:1090
msgid "Mail twice"
msgstr ""
-#: common/models.py:1084
+#: common/models.py:1091
msgid "On signup ask users twice for their mail"
msgstr ""
-#: common/models.py:1090
+#: common/models.py:1097
msgid "Password twice"
msgstr ""
-#: common/models.py:1091
+#: common/models.py:1098
msgid "On signup ask users twice for their password"
msgstr ""
-#: common/models.py:1097
+#: common/models.py:1104
msgid "Group on signup"
msgstr ""
-#: common/models.py:1098
+#: common/models.py:1105
msgid "Group to which new users are assigned on registration"
msgstr ""
-#: common/models.py:1104
+#: common/models.py:1111
msgid "Enforce MFA"
msgstr ""
-#: common/models.py:1105
+#: common/models.py:1112
msgid "Users must use multifactor security."
msgstr ""
-#: common/models.py:1111
+#: common/models.py:1118
msgid "Check plugins on startup"
msgstr ""
-#: common/models.py:1112
+#: common/models.py:1119
msgid "Check that all plugins are installed on startup - enable in container enviroments"
msgstr ""
-#: common/models.py:1120
+#: common/models.py:1127
msgid "Enable URL integration"
msgstr ""
-#: common/models.py:1121
+#: common/models.py:1128
msgid "Enable plugins to add URL routes"
msgstr ""
-#: common/models.py:1128
+#: common/models.py:1135
msgid "Enable navigation integration"
msgstr ""
-#: common/models.py:1129
+#: common/models.py:1136
msgid "Enable plugins to integrate into navigation"
msgstr ""
-#: common/models.py:1136
+#: common/models.py:1143
msgid "Enable app integration"
msgstr ""
-#: common/models.py:1137
+#: common/models.py:1144
msgid "Enable plugins to add apps"
msgstr ""
-#: common/models.py:1144
+#: common/models.py:1151
msgid "Enable schedule integration"
msgstr ""
-#: common/models.py:1145
+#: common/models.py:1152
msgid "Enable plugins to run scheduled tasks"
msgstr ""
-#: common/models.py:1152
+#: common/models.py:1159
msgid "Enable event integration"
msgstr ""
-#: common/models.py:1153
+#: common/models.py:1160
msgid "Enable plugins to respond to internal events"
msgstr ""
-#: common/models.py:1170 common/models.py:1492
+#: common/models.py:1177 common/models.py:1499
msgid "Settings key (must be unique - case insensitive"
msgstr ""
-#: common/models.py:1192
+#: common/models.py:1199
msgid "Show subscribed parts"
msgstr ""
-#: common/models.py:1193
+#: common/models.py:1200
msgid "Show subscribed parts on the homepage"
msgstr ""
-#: common/models.py:1199
+#: common/models.py:1206
msgid "Show subscribed categories"
msgstr ""
-#: common/models.py:1200
+#: common/models.py:1207
msgid "Show subscribed part categories on the homepage"
msgstr ""
-#: common/models.py:1206
+#: common/models.py:1213
msgid "Show latest parts"
msgstr ""
-#: common/models.py:1207
+#: common/models.py:1214
msgid "Show latest parts on the homepage"
msgstr ""
-#: common/models.py:1213
+#: common/models.py:1220
msgid "Recent Part Count"
msgstr ""
-#: common/models.py:1214
+#: common/models.py:1221
msgid "Number of recent parts to display on index page"
msgstr ""
-#: common/models.py:1220
+#: common/models.py:1227
msgid "Show unvalidated BOMs"
msgstr ""
-#: common/models.py:1221
+#: common/models.py:1228
msgid "Show BOMs that await validation on the homepage"
msgstr ""
-#: common/models.py:1227
+#: common/models.py:1234
msgid "Show recent stock changes"
msgstr ""
-#: common/models.py:1228
+#: common/models.py:1235
msgid "Show recently changed stock items on the homepage"
msgstr ""
-#: common/models.py:1234
+#: common/models.py:1241
msgid "Recent Stock Count"
msgstr ""
-#: common/models.py:1235
+#: common/models.py:1242
msgid "Number of recent stock items to display on index page"
msgstr ""
-#: common/models.py:1241
+#: common/models.py:1248
msgid "Show low stock"
msgstr ""
-#: common/models.py:1242
+#: common/models.py:1249
msgid "Show low stock items on the homepage"
msgstr ""
-#: common/models.py:1248
+#: common/models.py:1255
msgid "Show depleted stock"
msgstr ""
-#: common/models.py:1249
+#: common/models.py:1256
msgid "Show depleted stock items on the homepage"
msgstr ""
-#: common/models.py:1255
+#: common/models.py:1262
msgid "Show needed stock"
msgstr ""
-#: common/models.py:1256
+#: common/models.py:1263
msgid "Show stock items needed for builds on the homepage"
msgstr ""
-#: common/models.py:1262
+#: common/models.py:1269
msgid "Show expired stock"
msgstr ""
-#: common/models.py:1263
+#: common/models.py:1270
msgid "Show expired stock items on the homepage"
msgstr ""
-#: common/models.py:1269
+#: common/models.py:1276
msgid "Show stale stock"
msgstr ""
-#: common/models.py:1270
+#: common/models.py:1277
msgid "Show stale stock items on the homepage"
msgstr ""
-#: common/models.py:1276
+#: common/models.py:1283
msgid "Show pending builds"
msgstr ""
-#: common/models.py:1277
+#: common/models.py:1284
msgid "Show pending builds on the homepage"
msgstr ""
-#: common/models.py:1283
+#: common/models.py:1290
msgid "Show overdue builds"
msgstr ""
-#: common/models.py:1284
+#: common/models.py:1291
msgid "Show overdue builds on the homepage"
msgstr ""
-#: common/models.py:1290
+#: common/models.py:1297
msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:1291
+#: common/models.py:1298
msgid "Show outstanding POs on the homepage"
msgstr ""
-#: common/models.py:1297
+#: common/models.py:1304
msgid "Show overdue POs"
msgstr ""
-#: common/models.py:1298
+#: common/models.py:1305
msgid "Show overdue POs on the homepage"
msgstr ""
-#: common/models.py:1304
+#: common/models.py:1311
msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:1305
+#: common/models.py:1312
msgid "Show outstanding SOs on the homepage"
msgstr ""
-#: common/models.py:1311
+#: common/models.py:1318
msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:1312
+#: common/models.py:1319
msgid "Show overdue SOs on the homepage"
msgstr ""
-#: common/models.py:1317
+#: common/models.py:1324
msgid "Enable label printing"
msgstr ""
-#: common/models.py:1318
+#: common/models.py:1325
msgid "Enable label printing from the web interface"
msgstr ""
-#: common/models.py:1324
+#: common/models.py:1331
msgid "Inline label display"
msgstr ""
-#: common/models.py:1325
+#: common/models.py:1332
msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:1331
+#: common/models.py:1338
msgid "Inline report display"
msgstr ""
-#: common/models.py:1332
+#: common/models.py:1339
msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:1338
+#: common/models.py:1345
msgid "Search Parts"
msgstr ""
-#: common/models.py:1339
+#: common/models.py:1346
msgid "Display parts in search preview window"
msgstr ""
-#: common/models.py:1345
+#: common/models.py:1352
msgid "Seach Supplier Parts"
msgstr ""
-#: common/models.py:1346
+#: common/models.py:1353
msgid "Display supplier parts in search preview window"
msgstr ""
-#: common/models.py:1352
+#: common/models.py:1359
msgid "Search Manufacturer Parts"
msgstr ""
-#: common/models.py:1353
+#: common/models.py:1360
msgid "Display manufacturer parts in search preview window"
msgstr ""
-#: common/models.py:1359
+#: common/models.py:1366
msgid "Hide Inactive Parts"
msgstr ""
-#: common/models.py:1360
+#: common/models.py:1367
msgid "Excluded inactive parts from search preview window"
msgstr ""
-#: common/models.py:1366
+#: common/models.py:1373
msgid "Search Categories"
msgstr ""
-#: common/models.py:1367
+#: common/models.py:1374
msgid "Display part categories in search preview window"
msgstr ""
-#: common/models.py:1373
+#: common/models.py:1380
msgid "Search Stock"
msgstr ""
-#: common/models.py:1374
+#: common/models.py:1381
msgid "Display stock items in search preview window"
msgstr ""
-#: common/models.py:1380
+#: common/models.py:1387
msgid "Hide Unavailable Stock Items"
msgstr ""
-#: common/models.py:1381
+#: common/models.py:1388
msgid "Exclude stock items which are not available from the search preview window"
msgstr ""
-#: common/models.py:1387
+#: common/models.py:1394
msgid "Search Locations"
msgstr ""
-#: common/models.py:1388
+#: common/models.py:1395
msgid "Display stock locations in search preview window"
msgstr ""
-#: common/models.py:1394
+#: common/models.py:1401
msgid "Search Companies"
msgstr ""
-#: common/models.py:1395
+#: common/models.py:1402
msgid "Display companies in search preview window"
msgstr ""
-#: common/models.py:1401
+#: common/models.py:1408
msgid "Search Purchase Orders"
msgstr ""
-#: common/models.py:1402
+#: common/models.py:1409
msgid "Display purchase orders in search preview window"
msgstr ""
-#: common/models.py:1408
+#: common/models.py:1415
msgid "Exclude Inactive Purchase Orders"
msgstr ""
-#: common/models.py:1409
+#: common/models.py:1416
msgid "Exclude inactive purchase orders from search preview window"
msgstr ""
-#: common/models.py:1415
+#: common/models.py:1422
msgid "Search Sales Orders"
msgstr ""
-#: common/models.py:1416
+#: common/models.py:1423
msgid "Display sales orders in search preview window"
msgstr ""
-#: common/models.py:1422
+#: common/models.py:1429
msgid "Exclude Inactive Sales Orders"
msgstr ""
-#: common/models.py:1423
+#: common/models.py:1430
msgid "Exclude inactive sales orders from search preview window"
msgstr ""
-#: common/models.py:1429
+#: common/models.py:1436
msgid "Search Preview Results"
msgstr ""
-#: common/models.py:1430
+#: common/models.py:1437
msgid "Number of results to show in each section of the search preview window"
msgstr ""
-#: common/models.py:1436
+#: common/models.py:1443
msgid "Show Quantity in Forms"
msgstr ""
-#: common/models.py:1437
+#: common/models.py:1444
msgid "Display available part quantity in some forms"
msgstr ""
-#: common/models.py:1443
+#: common/models.py:1450
msgid "Escape Key Closes Forms"
msgstr ""
-#: common/models.py:1444
+#: common/models.py:1451
msgid "Use the escape key to close modal forms"
msgstr ""
-#: common/models.py:1450
+#: common/models.py:1457
msgid "Fixed Navbar"
msgstr ""
-#: common/models.py:1451
+#: common/models.py:1458
msgid "The navbar position is fixed to the top of the screen"
msgstr ""
-#: common/models.py:1457
+#: common/models.py:1464
msgid "Date Format"
msgstr ""
-#: common/models.py:1458
+#: common/models.py:1465
msgid "Preferred format for displaying dates"
msgstr ""
-#: common/models.py:1472 part/templates/part/detail.html:39
+#: common/models.py:1479 part/templates/part/detail.html:39
msgid "Part Scheduling"
msgstr ""
-#: common/models.py:1473
+#: common/models.py:1480
msgid "Display part scheduling information"
msgstr ""
-#: common/models.py:1537 company/forms.py:37
+#: common/models.py:1544 company/forms.py:37
msgid "Price break quantity"
msgstr ""
-#: common/models.py:1544 company/serializers.py:288
-#: company/templates/company/supplier_part.html:263 order/models.py:949
-#: templates/js/translated/part.js:998 templates/js/translated/part.js:1974
+#: common/models.py:1551 company/serializers.py:290
+#: company/templates/company/supplier_part.html:263 order/models.py:965
+#: templates/js/translated/part.js:1042 templates/js/translated/part.js:2070
msgid "Price"
msgstr ""
-#: common/models.py:1545
+#: common/models.py:1552
msgid "Unit price at specified quantity"
msgstr ""
-#: common/models.py:1705 common/models.py:1883
+#: common/models.py:1712 common/models.py:1890
msgid "Endpoint"
msgstr ""
-#: common/models.py:1706
+#: common/models.py:1713
msgid "Endpoint at which this webhook is received"
msgstr ""
-#: common/models.py:1715
+#: common/models.py:1722
msgid "Name for this webhook"
msgstr ""
-#: common/models.py:1720 part/models.py:911 plugin/models.py:99
+#: common/models.py:1727 part/models.py:911 plugin/models.py:99
#: templates/js/translated/table_filters.js:34
#: templates/js/translated/table_filters.js:96
#: templates/js/translated/table_filters.js:308
@@ -2457,79 +2474,89 @@ msgstr ""
msgid "Active"
msgstr ""
-#: common/models.py:1721
+#: common/models.py:1728
msgid "Is this webhook active"
msgstr ""
-#: common/models.py:1735
+#: common/models.py:1742
msgid "Token"
msgstr ""
-#: common/models.py:1736
+#: common/models.py:1743
msgid "Token for access"
msgstr ""
-#: common/models.py:1743
+#: common/models.py:1750
msgid "Secret"
msgstr ""
-#: common/models.py:1744
+#: common/models.py:1751
msgid "Shared secret for HMAC"
msgstr ""
-#: common/models.py:1850
+#: common/models.py:1857
msgid "Message ID"
msgstr ""
-#: common/models.py:1851
+#: common/models.py:1858
msgid "Unique identifier for this message"
msgstr ""
-#: common/models.py:1859
+#: common/models.py:1866
msgid "Host"
msgstr ""
-#: common/models.py:1860
+#: common/models.py:1867
msgid "Host from which this message was received"
msgstr ""
-#: common/models.py:1867
+#: common/models.py:1874
msgid "Header"
msgstr ""
-#: common/models.py:1868
+#: common/models.py:1875
msgid "Header of this message"
msgstr ""
-#: common/models.py:1874
+#: common/models.py:1881
msgid "Body"
msgstr ""
-#: common/models.py:1875
+#: common/models.py:1882
msgid "Body of this message"
msgstr ""
-#: common/models.py:1884
+#: common/models.py:1891
msgid "Endpoint on which this message was received"
msgstr ""
-#: common/models.py:1889
+#: common/models.py:1896
msgid "Worked on"
msgstr ""
-#: common/models.py:1890
+#: common/models.py:1897
msgid "Was the work on this message finished?"
msgstr ""
+#: common/notifications.py:292
+#, python-brace-format
+msgid "New {verbose_name}"
+msgstr ""
+
+#: common/notifications.py:294
+#, python-brace-format
+msgid "A new {verbose_name} has been created and ,assigned to you"
+msgstr ""
+
#: common/views.py:87 order/templates/order/purchase_order_detail.html:23
-#: order/views.py:102 part/views.py:191
+#: order/views.py:102 part/views.py:116
#: templates/patterns/wizard/upload.html:37
msgid "Upload File"
msgstr ""
#: common/views.py:88 order/views.py:103
#: part/templates/part/import_wizard/ajax_match_fields.html:45
-#: part/views.py:192 templates/patterns/wizard/match_fields.html:51
+#: part/views.py:117 templates/patterns/wizard/match_fields.html:51
msgid "Match Fields"
msgstr ""
@@ -2545,19 +2572,19 @@ msgstr ""
msgid "Parts imported"
msgstr ""
-#: common/views.py:507 order/templates/order/order_wizard/match_parts.html:19
+#: common/views.py:511 order/templates/order/order_wizard/match_parts.html:19
#: part/templates/part/import_wizard/match_references.html:19
#: templates/patterns/wizard/match_fields.html:26
#: templates/patterns/wizard/upload.html:35
msgid "Previous Step"
msgstr ""
-#: company/forms.py:16 part/forms.py:21
+#: company/forms.py:16 part/forms.py:18
#: templates/InvenTree/settings/mixins/urls.html:14
msgid "URL"
msgstr ""
-#: company/forms.py:17 part/forms.py:22
+#: company/forms.py:17 part/forms.py:19
msgid "Image URL"
msgstr ""
@@ -2571,7 +2598,7 @@ msgstr ""
#: company/models.py:104 company/templates/company/company_base.html:100
#: templates/InvenTree/settings/plugin_settings.html:55
-#: templates/js/translated/company.js:405
+#: templates/js/translated/company.js:399
msgid "Website"
msgstr ""
@@ -2644,9 +2671,9 @@ msgstr ""
msgid "Does this company manufacture parts?"
msgstr ""
-#: company/models.py:144 company/serializers.py:294
-#: company/templates/company/company_base.html:106 part/serializers.py:137
-#: part/serializers.py:168 stock/serializers.py:162
+#: company/models.py:144 company/serializers.py:296
+#: company/templates/company/company_base.html:106 part/serializers.py:139
+#: part/serializers.py:170 stock/serializers.py:162
msgid "Currency"
msgstr ""
@@ -2667,10 +2694,10 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:90
#: company/templates/company/supplier_part.html:103
#: stock/templates/stock/item_base.html:212
-#: templates/js/translated/company.js:389
-#: templates/js/translated/company.js:488
-#: templates/js/translated/company.js:632
-#: templates/js/translated/company.js:917 templates/js/translated/part.js:235
+#: templates/js/translated/company.js:383
+#: templates/js/translated/company.js:484
+#: templates/js/translated/company.js:617
+#: templates/js/translated/company.js:902 templates/js/translated/part.js:235
#: templates/js/translated/table_filters.js:411
msgid "Manufacturer"
msgstr ""
@@ -2681,11 +2708,11 @@ msgstr ""
#: company/models.py:266 company/templates/company/manufacturer_part.html:101
#: company/templates/company/supplier_part.html:111
-#: templates/js/translated/company.js:255
-#: templates/js/translated/company.js:487
-#: templates/js/translated/company.js:648
-#: templates/js/translated/company.js:935 templates/js/translated/order.js:1907
-#: templates/js/translated/part.js:246 templates/js/translated/part.js:956
+#: templates/js/translated/company.js:256
+#: templates/js/translated/company.js:483
+#: templates/js/translated/company.js:633
+#: templates/js/translated/company.js:920 templates/js/translated/order.js:1907
+#: templates/js/translated/part.js:246 templates/js/translated/part.js:1000
msgid "MPN"
msgstr ""
@@ -2714,9 +2741,9 @@ msgstr ""
#: company/models.py:361
#: report/templates/report/inventree_test_report_base.html:95
-#: stock/models.py:2080 templates/js/translated/company.js:540
-#: templates/js/translated/company.js:763 templates/js/translated/part.js:776
-#: templates/js/translated/stock.js:1294
+#: stock/models.py:2084 templates/js/translated/company.js:531
+#: templates/js/translated/company.js:748 templates/js/translated/part.js:820
+#: templates/js/translated/stock.js:1304
msgid "Value"
msgstr ""
@@ -2724,10 +2751,10 @@ msgstr ""
msgid "Parameter value"
msgstr ""
-#: company/models.py:368 part/models.py:878 part/models.py:2339
+#: company/models.py:368 part/models.py:878 part/models.py:2327
#: part/templates/part/part_base.html:280
#: templates/InvenTree/settings/settings.html:351
-#: templates/js/translated/company.js:769 templates/js/translated/part.js:782
+#: templates/js/translated/company.js:754 templates/js/translated/part.js:826
msgid "Units"
msgstr ""
@@ -2740,13 +2767,14 @@ msgid "Linked manufacturer part must reference the same base part"
msgstr ""
#: company/models.py:487 company/templates/company/company_base.html:81
-#: company/templates/company/supplier_part.html:87 order/models.py:303
+#: company/templates/company/supplier_part.html:87 order/models.py:308
#: order/templates/order/order_base.html:112 part/bom.py:237 part/bom.py:265
#: stock/templates/stock/item_base.html:229
-#: templates/js/translated/company.js:254
-#: templates/js/translated/company.js:393
-#: templates/js/translated/company.js:891 templates/js/translated/order.js:1643
-#: templates/js/translated/part.js:216 templates/js/translated/part.js:924
+#: templates/email/overdue_purchase_order.html:16
+#: templates/js/translated/company.js:255
+#: templates/js/translated/company.js:387
+#: templates/js/translated/company.js:876 templates/js/translated/order.js:1643
+#: templates/js/translated/part.js:216 templates/js/translated/part.js:968
#: templates/js/translated/table_filters.js:415
msgid "Supplier"
msgstr ""
@@ -2756,9 +2784,9 @@ msgid "Select supplier"
msgstr ""
#: company/models.py:493 company/templates/company/supplier_part.html:97
-#: part/bom.py:238 part/bom.py:266 templates/js/translated/company.js:253
+#: part/bom.py:238 part/bom.py:266 templates/js/translated/company.js:254
#: templates/js/translated/order.js:1894 templates/js/translated/part.js:227
-#: templates/js/translated/part.js:942
+#: templates/js/translated/part.js:986
msgid "SKU"
msgstr ""
@@ -2779,23 +2807,23 @@ msgid "Supplier part description"
msgstr ""
#: company/models.py:518 company/templates/company/supplier_part.html:125
-#: part/models.py:2573 part/templates/part/upload_bom.html:59
+#: part/models.py:2561 part/templates/part/upload_bom.html:59
#: report/templates/report/inventree_po_report.html:92
#: report/templates/report/inventree_so_report.html:93 stock/serializers.py:387
msgid "Note"
msgstr ""
-#: company/models.py:522 part/models.py:1688
+#: company/models.py:522 part/models.py:1683
msgid "base cost"
msgstr ""
-#: company/models.py:522 part/models.py:1688
+#: company/models.py:522 part/models.py:1683
msgid "Minimum charge (e.g. stocking fee)"
msgstr ""
#: company/models.py:524 company/templates/company/supplier_part.html:118
#: stock/models.py:608 stock/templates/stock/item_base.html:245
-#: templates/js/translated/company.js:967 templates/js/translated/stock.js:1912
+#: templates/js/translated/company.js:952 templates/js/translated/stock.js:1922
msgid "Packaging"
msgstr ""
@@ -2803,7 +2831,7 @@ msgstr ""
msgid "Part packaging"
msgstr ""
-#: company/models.py:526 part/models.py:1690
+#: company/models.py:526 part/models.py:1685
msgid "multiple"
msgstr ""
@@ -2825,7 +2853,7 @@ msgstr ""
#: company/templates/company/company_base.html:8
#: company/templates/company/company_base.html:12
-#: templates/InvenTree/search.html:177 templates/js/translated/company.js:378
+#: templates/InvenTree/search.html:177 templates/js/translated/company.js:372
msgid "Company"
msgstr ""
@@ -2843,7 +2871,7 @@ msgid "Edit company information"
msgstr ""
#: company/templates/company/company_base.html:34
-#: templates/js/translated/company.js:321
+#: templates/js/translated/company.js:315
msgid "Edit Company"
msgstr ""
@@ -2866,12 +2894,13 @@ msgstr ""
msgid "Download image from URL"
msgstr ""
-#: company/templates/company/company_base.html:86 order/models.py:649
+#: company/templates/company/company_base.html:86 order/models.py:665
#: order/templates/order/sales_order_base.html:116 stock/models.py:627
-#: stock/models.py:628 stock/serializers.py:758
+#: stock/models.py:628 stock/serializers.py:745
#: stock/templates/stock/item_base.html:401
-#: templates/js/translated/company.js:385 templates/js/translated/order.js:2458
-#: templates/js/translated/stock.js:2431
+#: templates/email/overdue_sales_order.html:16
+#: templates/js/translated/company.js:379 templates/js/translated/order.js:2458
+#: templates/js/translated/stock.js:2441
#: templates/js/translated/table_filters.js:419
msgid "Customer"
msgstr ""
@@ -2999,7 +3028,7 @@ msgid "Supplier List"
msgstr ""
#: company/templates/company/manufacturer_part.html:15 company/views.py:45
-#: part/templates/part/prices.html:170 templates/InvenTree/search.html:179
+#: part/templates/part/prices.html:172 templates/InvenTree/search.html:179
#: templates/navbar.html:49
msgid "Manufacturers"
msgstr ""
@@ -3012,12 +3041,12 @@ msgid "Order part"
msgstr ""
#: company/templates/company/manufacturer_part.html:39
-#: templates/js/translated/company.js:680
+#: templates/js/translated/company.js:665
msgid "Edit manufacturer part"
msgstr ""
#: company/templates/company/manufacturer_part.html:43
-#: templates/js/translated/company.js:681
+#: templates/js/translated/company.js:666
msgid "Delete manufacturer part"
msgstr ""
@@ -3032,7 +3061,7 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:119
#: company/templates/company/supplier_part.html:15 company/views.py:39
-#: part/templates/part/part_sidebar.html:35 part/templates/part/prices.html:166
+#: part/templates/part/part_sidebar.html:35 part/templates/part/prices.html:168
#: templates/InvenTree/search.html:189 templates/navbar.html:48
msgid "Suppliers"
msgstr ""
@@ -3092,18 +3121,18 @@ msgstr ""
#: company/templates/company/supplier_part.html:7
#: company/templates/company/supplier_part.html:24 stock/models.py:592
#: stock/templates/stock/item_base.html:238
-#: templates/js/translated/company.js:907 templates/js/translated/order.js:884
-#: templates/js/translated/stock.js:1869
+#: templates/js/translated/company.js:892 templates/js/translated/order.js:884
+#: templates/js/translated/stock.js:1879
msgid "Supplier Part"
msgstr ""
#: company/templates/company/supplier_part.html:38
-#: templates/js/translated/company.js:980
+#: templates/js/translated/company.js:965
msgid "Edit supplier part"
msgstr ""
#: company/templates/company/supplier_part.html:42
-#: templates/js/translated/company.js:981
+#: templates/js/translated/company.js:966
msgid "Delete supplier part"
msgstr ""
@@ -3123,7 +3152,7 @@ msgstr ""
#: company/templates/company/supplier_part.html:148
#: part/templates/part/detail.html:24 stock/templates/stock/location.html:177
-#: templates/js/translated/stock.js:380
+#: templates/js/translated/stock.js:379
msgid "New Stock Item"
msgstr ""
@@ -3144,7 +3173,7 @@ msgstr ""
#: company/templates/company/supplier_part.html:191
#: company/templates/company/supplier_part.html:305
-#: part/templates/part/prices.html:274 templates/js/translated/part.js:2046
+#: part/templates/part/prices.html:276 templates/js/translated/part.js:2142
msgid "Add Price Break"
msgstr ""
@@ -3153,12 +3182,12 @@ msgid "No price break information found"
msgstr ""
#: company/templates/company/supplier_part.html:231
-#: templates/js/translated/part.js:2056
+#: templates/js/translated/part.js:2152
msgid "Delete Price Break"
msgstr ""
#: company/templates/company/supplier_part.html:245
-#: templates/js/translated/part.js:2070
+#: templates/js/translated/part.js:2166
msgid "Edit Price Break"
msgstr ""
@@ -3180,9 +3209,9 @@ msgstr ""
#: stock/templates/stock/stock_app_base.html:10
#: templates/InvenTree/search.html:151
#: templates/InvenTree/settings/sidebar.html:43
-#: templates/js/translated/bom.js:554 templates/js/translated/part.js:678
-#: templates/js/translated/part.js:1226 templates/js/translated/part.js:1387
-#: templates/js/translated/stock.js:904 templates/js/translated/stock.js:1687
+#: templates/js/translated/bom.js:554 templates/js/translated/part.js:722
+#: templates/js/translated/part.js:1270 templates/js/translated/part.js:1431
+#: templates/js/translated/stock.js:903 templates/js/translated/stock.js:1697
#: templates/navbar.html:31
msgid "Stock"
msgstr ""
@@ -3209,7 +3238,7 @@ msgstr ""
#: stock/templates/stock/location.html:173
#: stock/templates/stock/location_sidebar.html:7
#: templates/InvenTree/search.html:153 templates/js/translated/search.js:223
-#: templates/js/translated/stock.js:2307 users/models.py:39
+#: templates/js/translated/stock.js:2317 users/models.py:39
msgid "Stock Items"
msgstr ""
@@ -3238,20 +3267,20 @@ msgstr ""
msgid "New Company"
msgstr ""
-#: company/views.py:112 part/views.py:576
+#: company/views.py:112 part/views.py:501
msgid "Download Image"
msgstr ""
-#: company/views.py:139 part/views.py:606
+#: company/views.py:139 part/views.py:531
msgid "Image size exceeds maximum allowable size for download"
msgstr ""
-#: company/views.py:146 part/views.py:613
+#: company/views.py:146 part/views.py:538
#, python-brace-format
msgid "Invalid response: {code}"
msgstr ""
-#: company/views.py:155 part/views.py:622
+#: company/views.py:155 part/views.py:547
msgid "Supplied URL is not a valid image file"
msgstr ""
@@ -3320,313 +3349,314 @@ msgstr ""
msgid "Part query filters (comma-separated value of key=value pairs)"
msgstr ""
-#: order/models.py:133
+#: order/models.py:134
msgid "Order description"
msgstr ""
-#: order/models.py:135 order/models.py:1236
+#: order/models.py:136 order/models.py:1252
msgid "Link to external page"
msgstr ""
-#: order/models.py:143
+#: order/models.py:144
msgid "Created By"
msgstr ""
-#: order/models.py:150
+#: order/models.py:151
msgid "User or group responsible for this order"
msgstr ""
-#: order/models.py:155
+#: order/models.py:156
msgid "Order notes"
msgstr ""
-#: order/models.py:289 order/models.py:639
+#: order/models.py:294 order/models.py:655
msgid "Order reference"
msgstr ""
-#: order/models.py:294 order/models.py:654
+#: order/models.py:299 order/models.py:670
msgid "Purchase order status"
msgstr ""
-#: order/models.py:304
+#: order/models.py:309
msgid "Company from which the items are being ordered"
msgstr ""
-#: order/models.py:307 order/templates/order/order_base.html:124
+#: order/models.py:312 order/templates/order/order_base.html:124
#: templates/js/translated/order.js:1652
msgid "Supplier Reference"
msgstr ""
-#: order/models.py:307
+#: order/models.py:312
msgid "Supplier order reference code"
msgstr ""
-#: order/models.py:314
+#: order/models.py:319
msgid "received by"
msgstr ""
-#: order/models.py:319
+#: order/models.py:324
msgid "Issue Date"
msgstr ""
-#: order/models.py:320
+#: order/models.py:325
msgid "Date order was issued"
msgstr ""
-#: order/models.py:325
+#: order/models.py:330
msgid "Target Delivery Date"
msgstr ""
-#: order/models.py:326
+#: order/models.py:331
msgid "Expected date for order delivery. Order will be overdue after this date."
msgstr ""
-#: order/models.py:332
+#: order/models.py:337
msgid "Date order was completed"
msgstr ""
-#: order/models.py:368
+#: order/models.py:373
msgid "Part supplier must match PO supplier"
msgstr ""
-#: order/models.py:512
+#: order/models.py:517
msgid "Quantity must be a positive number"
msgstr ""
-#: order/models.py:650
+#: order/models.py:666
msgid "Company to which the items are being sold"
msgstr ""
-#: order/models.py:656
+#: order/models.py:672
msgid "Customer Reference "
msgstr ""
-#: order/models.py:656
+#: order/models.py:672
msgid "Customer order reference code"
msgstr ""
-#: order/models.py:661
+#: order/models.py:677
msgid "Target date for order completion. Order will be overdue after this date."
msgstr ""
-#: order/models.py:664 order/models.py:1190
+#: order/models.py:680 order/models.py:1206
#: templates/js/translated/order.js:2505 templates/js/translated/order.js:2656
msgid "Shipment Date"
msgstr ""
-#: order/models.py:671
+#: order/models.py:687
msgid "shipped by"
msgstr ""
-#: order/models.py:726
+#: order/models.py:742
msgid "Order cannot be completed as no parts have been assigned"
msgstr ""
-#: order/models.py:730
+#: order/models.py:746
msgid "Only a pending order can be marked as complete"
msgstr ""
-#: order/models.py:733
+#: order/models.py:749
msgid "Order cannot be completed as there are incomplete shipments"
msgstr ""
-#: order/models.py:736
+#: order/models.py:752
msgid "Order cannot be completed as there are incomplete line items"
msgstr ""
-#: order/models.py:910
+#: order/models.py:926
msgid "Item quantity"
msgstr ""
-#: order/models.py:916
+#: order/models.py:932
msgid "Line item reference"
msgstr ""
-#: order/models.py:918
+#: order/models.py:934
msgid "Line item notes"
msgstr ""
-#: order/models.py:923
+#: order/models.py:939
msgid "Target shipping date for this line item"
msgstr ""
-#: order/models.py:941
+#: order/models.py:957
msgid "Context"
msgstr ""
-#: order/models.py:942
+#: order/models.py:958
msgid "Additional context for this line"
msgstr ""
-#: order/models.py:950
+#: order/models.py:966
msgid "Unit price"
msgstr ""
-#: order/models.py:980
+#: order/models.py:996
msgid "Supplier part must match supplier"
msgstr ""
-#: order/models.py:988
+#: order/models.py:1004
msgid "deleted"
msgstr ""
-#: order/models.py:994 order/models.py:1074 order/models.py:1099
-#: order/models.py:1184 order/models.py:1320
+#: order/models.py:1010 order/models.py:1090 order/models.py:1115
+#: order/models.py:1200 order/models.py:1336
#: templates/js/translated/order.js:3112
msgid "Order"
msgstr ""
-#: order/models.py:995 order/models.py:1074
+#: order/models.py:1011 order/models.py:1090
#: order/templates/order/order_base.html:9
#: order/templates/order/order_base.html:18
#: report/templates/report/inventree_po_report.html:76
#: stock/templates/stock/item_base.html:184
+#: templates/email/overdue_purchase_order.html:15
#: templates/js/translated/order.js:885 templates/js/translated/order.js:1621
-#: templates/js/translated/part.js:899 templates/js/translated/stock.js:1846
-#: templates/js/translated/stock.js:2412
+#: templates/js/translated/part.js:943 templates/js/translated/stock.js:1856
+#: templates/js/translated/stock.js:2422
msgid "Purchase Order"
msgstr ""
-#: order/models.py:1013
+#: order/models.py:1029
msgid "Supplier part"
msgstr ""
-#: order/models.py:1020 order/templates/order/order_base.html:169
+#: order/models.py:1036 order/templates/order/order_base.html:169
#: templates/js/translated/order.js:1318 templates/js/translated/order.js:2009
-#: templates/js/translated/part.js:993 templates/js/translated/part.js:1020
+#: templates/js/translated/part.js:1037 templates/js/translated/part.js:1064
#: templates/js/translated/table_filters.js:330
msgid "Received"
msgstr ""
-#: order/models.py:1021
+#: order/models.py:1037
msgid "Number of items received"
msgstr ""
-#: order/models.py:1028 part/templates/part/prices.html:179 stock/models.py:722
+#: order/models.py:1044 part/templates/part/prices.html:181 stock/models.py:722
#: stock/serializers.py:153 stock/templates/stock/item_base.html:191
-#: templates/js/translated/stock.js:1900
+#: templates/js/translated/stock.js:1910
msgid "Purchase Price"
msgstr ""
-#: order/models.py:1029
+#: order/models.py:1045
msgid "Unit purchase price"
msgstr ""
-#: order/models.py:1037
+#: order/models.py:1053
msgid "Where does the Purchaser want this item to be stored?"
msgstr ""
-#: order/models.py:1109 part/templates/part/part_pricing.html:112
-#: part/templates/part/prices.html:119 part/templates/part/prices.html:288
+#: order/models.py:1125 part/templates/part/part_pricing.html:115
+#: part/templates/part/prices.html:121 part/templates/part/prices.html:290
msgid "Sale Price"
msgstr ""
-#: order/models.py:1110
+#: order/models.py:1126
msgid "Unit sale price"
msgstr ""
-#: order/models.py:1115
+#: order/models.py:1131
msgid "Shipped quantity"
msgstr ""
-#: order/models.py:1191
+#: order/models.py:1207
msgid "Date of shipment"
msgstr ""
-#: order/models.py:1198
+#: order/models.py:1214
msgid "Checked By"
msgstr ""
-#: order/models.py:1199
+#: order/models.py:1215
msgid "User who checked this shipment"
msgstr ""
-#: order/models.py:1207
+#: order/models.py:1223
msgid "Shipment number"
msgstr ""
-#: order/models.py:1214
+#: order/models.py:1230
msgid "Shipment notes"
msgstr ""
-#: order/models.py:1221
+#: order/models.py:1237
msgid "Tracking Number"
msgstr ""
-#: order/models.py:1222
+#: order/models.py:1238
msgid "Shipment tracking information"
msgstr ""
-#: order/models.py:1229
+#: order/models.py:1245
msgid "Invoice Number"
msgstr ""
-#: order/models.py:1230
+#: order/models.py:1246
msgid "Reference number for associated invoice"
msgstr ""
-#: order/models.py:1248
+#: order/models.py:1264
msgid "Shipment has already been sent"
msgstr ""
-#: order/models.py:1251
+#: order/models.py:1267
msgid "Shipment has no allocated stock items"
msgstr ""
-#: order/models.py:1354 order/models.py:1356
+#: order/models.py:1370 order/models.py:1372
msgid "Stock item has not been assigned"
msgstr ""
-#: order/models.py:1360
+#: order/models.py:1376
msgid "Cannot allocate stock item to a line with a different part"
msgstr ""
-#: order/models.py:1362
+#: order/models.py:1378
msgid "Cannot allocate stock to a line without a part"
msgstr ""
-#: order/models.py:1365
+#: order/models.py:1381
msgid "Allocation quantity cannot exceed stock quantity"
msgstr ""
-#: order/models.py:1369
+#: order/models.py:1385
msgid "StockItem is over-allocated"
msgstr ""
-#: order/models.py:1375 order/serializers.py:1045
+#: order/models.py:1391 order/serializers.py:1047
msgid "Quantity must be 1 for serialized stock item"
msgstr ""
-#: order/models.py:1378
+#: order/models.py:1394
msgid "Sales order does not match shipment"
msgstr ""
-#: order/models.py:1379
+#: order/models.py:1395
msgid "Shipment does not match sales order"
msgstr ""
-#: order/models.py:1387
+#: order/models.py:1403
msgid "Line"
msgstr ""
-#: order/models.py:1395 order/serializers.py:1149 order/serializers.py:1273
+#: order/models.py:1411 order/serializers.py:1151 order/serializers.py:1275
#: templates/js/translated/model_renderers.js:301
msgid "Shipment"
msgstr ""
-#: order/models.py:1396
+#: order/models.py:1412
msgid "Sales order shipment reference"
msgstr ""
-#: order/models.py:1408 templates/InvenTree/notifications/notifications.html:70
+#: order/models.py:1424 templates/InvenTree/notifications/notifications.html:70
msgid "Item"
msgstr ""
-#: order/models.py:1409
+#: order/models.py:1425
msgid "Select stock item to allocate"
msgstr ""
-#: order/models.py:1412
+#: order/models.py:1428
msgid "Enter stock allocation quantity"
msgstr ""
@@ -3662,7 +3692,7 @@ msgstr ""
msgid "Purchase order must match supplier"
msgstr ""
-#: order/serializers.py:406 order/serializers.py:1117
+#: order/serializers.py:406 order/serializers.py:1119
msgid "Line Item"
msgstr ""
@@ -3710,42 +3740,60 @@ msgstr ""
msgid "Supplied barcode values must be unique"
msgstr ""
-#: order/serializers.py:866
+#: order/serializers.py:868
msgid "Sale price currency"
msgstr ""
-#: order/serializers.py:947
+#: order/serializers.py:949
msgid "No shipment details provided"
msgstr ""
-#: order/serializers.py:1006 order/serializers.py:1126
+#: order/serializers.py:1008 order/serializers.py:1128
msgid "Line item is not associated with this order"
msgstr ""
-#: order/serializers.py:1028
+#: order/serializers.py:1030
msgid "Quantity must be positive"
msgstr ""
-#: order/serializers.py:1139
+#: order/serializers.py:1141
msgid "Enter serial numbers to allocate"
msgstr ""
-#: order/serializers.py:1161 order/serializers.py:1281
+#: order/serializers.py:1163 order/serializers.py:1283
msgid "Shipment has already been shipped"
msgstr ""
-#: order/serializers.py:1164 order/serializers.py:1284
+#: order/serializers.py:1166 order/serializers.py:1286
msgid "Shipment is not associated with this order"
msgstr ""
-#: order/serializers.py:1214
+#: order/serializers.py:1216
msgid "No match found for the following serial numbers"
msgstr ""
-#: order/serializers.py:1224
+#: order/serializers.py:1226
msgid "The following serial numbers are already allocated"
msgstr ""
+#: order/tasks.py:26
+msgid "Overdue Purchase Order"
+msgstr ""
+
+#: order/tasks.py:31
+#, python-brace-format
+msgid "Purchase order {po} is now overdue"
+msgstr ""
+
+#: order/tasks.py:88
+msgid "Overdue Sales Order"
+msgstr ""
+
+#: order/tasks.py:93
+#, python-brace-format
+msgid "Sales order {so} is now overdue"
+msgstr ""
+
#: order/templates/order/order_base.html:33
msgid "Print purchase order report"
msgstr ""
@@ -3870,8 +3918,8 @@ msgstr ""
#: templates/js/translated/bom.js:77 templates/js/translated/build.js:427
#: templates/js/translated/build.js:579 templates/js/translated/build.js:1972
#: templates/js/translated/order.js:833 templates/js/translated/order.js:1265
-#: templates/js/translated/order.js:2731 templates/js/translated/stock.js:570
-#: templates/js/translated/stock.js:738
+#: templates/js/translated/order.js:2731 templates/js/translated/stock.js:569
+#: templates/js/translated/stock.js:737
#: templates/patterns/wizard/match_fields.html:70
msgid "Remove row"
msgstr ""
@@ -3990,7 +4038,7 @@ msgid "Pending Shipments"
msgstr ""
#: order/templates/order/sales_order_detail.html:70
-#: templates/attachment_table.html:6 templates/js/translated/bom.js:1053
+#: templates/attachment_table.html:6 templates/js/translated/bom.js:1047
#: templates/js/translated/build.js:1880
msgid "Actions"
msgstr ""
@@ -4021,47 +4069,47 @@ msgstr ""
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr ""
-#: part/api.py:481
+#: part/api.py:482
msgid "Incoming Purchase Order"
msgstr ""
-#: part/api.py:501
+#: part/api.py:502
msgid "Outgoing Sales Order"
msgstr ""
-#: part/api.py:519
+#: part/api.py:520
msgid "Stock produced by Build Order"
msgstr ""
-#: part/api.py:551
+#: part/api.py:552
msgid "Stock required for Build Order"
msgstr ""
-#: part/api.py:637
+#: part/api.py:638
msgid "Valid"
msgstr ""
-#: part/api.py:638
+#: part/api.py:639
msgid "Validate entire Bill of Materials"
msgstr ""
-#: part/api.py:644
+#: part/api.py:645
msgid "This option must be selected"
msgstr ""
-#: part/api.py:1010
+#: part/api.py:1011
msgid "Must be greater than zero"
msgstr ""
-#: part/api.py:1014
+#: part/api.py:1015
msgid "Must be a valid quantity"
msgstr ""
-#: part/api.py:1029
+#: part/api.py:1030
msgid "Specify location for initial part stock"
msgstr ""
-#: part/api.py:1060 part/api.py:1064 part/api.py:1079 part/api.py:1083
+#: part/api.py:1061 part/api.py:1065 part/api.py:1080 part/api.py:1084
msgid "This field is required"
msgstr ""
@@ -4080,17 +4128,13 @@ msgid "Available Stock"
msgstr ""
#: part/bom.py:130 part/templates/part/part_base.html:207
-#: templates/js/translated/part.js:517 templates/js/translated/part.js:537
-#: templates/js/translated/part.js:1229 templates/js/translated/part.js:1401
-#: templates/js/translated/part.js:1417
+#: templates/js/translated/part.js:561 templates/js/translated/part.js:581
+#: templates/js/translated/part.js:1273 templates/js/translated/part.js:1445
+#: templates/js/translated/part.js:1461
msgid "On Order"
msgstr ""
-#: part/forms.py:59
-msgid "Select part category"
-msgstr ""
-
-#: part/forms.py:69
+#: part/forms.py:60
msgid "Input quantity for price calculation"
msgstr ""
@@ -4106,7 +4150,7 @@ msgstr ""
msgid "Default keywords for parts in this category"
msgstr ""
-#: part/models.py:115 part/models.py:2415 part/templates/part/category.html:15
+#: part/models.py:115 part/models.py:2403 part/templates/part/category.html:15
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr ""
@@ -4123,7 +4167,7 @@ msgstr ""
#: part/templates/part/category_sidebar.html:9
#: templates/InvenTree/index.html:85 templates/InvenTree/search.html:82
#: templates/InvenTree/settings/sidebar.html:39
-#: templates/js/translated/part.js:1768 templates/js/translated/search.js:144
+#: templates/js/translated/part.js:1864 templates/js/translated/search.js:144
#: templates/navbar.html:24 users/models.py:37
msgid "Parts"
msgstr ""
@@ -4153,7 +4197,7 @@ msgstr ""
msgid "Duplicate IPN not allowed in part settings"
msgstr ""
-#: part/models.py:738 part/models.py:2469
+#: part/models.py:738 part/models.py:2457
msgid "Part name"
msgstr ""
@@ -4186,12 +4230,11 @@ msgstr ""
msgid "Part keywords to improve visibility in search results"
msgstr ""
-#: part/models.py:776 part/models.py:2171 part/models.py:2414
+#: part/models.py:776 part/models.py:2159 part/models.py:2402
#: part/templates/part/part_base.html:257
-#: part/templates/part/set_category.html:15
#: templates/InvenTree/notifications/notifications.html:65
#: templates/InvenTree/settings/settings.html:231
-#: templates/js/translated/part.js:1369
+#: templates/js/translated/part.js:1413 templates/js/translated/part.js:1639
msgid "Category"
msgstr ""
@@ -4200,8 +4243,8 @@ msgid "Part category"
msgstr ""
#: part/models.py:782 part/templates/part/part_base.html:266
-#: templates/js/translated/part.js:666 templates/js/translated/part.js:1322
-#: templates/js/translated/stock.js:1659
+#: templates/js/translated/part.js:710 templates/js/translated/part.js:1366
+#: templates/js/translated/stock.js:1669
msgid "IPN"
msgstr ""
@@ -4214,7 +4257,7 @@ msgid "Part revision or version number"
msgstr ""
#: part/models.py:790 part/templates/part/part_base.html:273
-#: report/models.py:170 templates/js/translated/part.js:670
+#: report/models.py:170 templates/js/translated/part.js:714
msgid "Revision"
msgstr ""
@@ -4302,317 +4345,321 @@ msgstr ""
msgid "Creation User"
msgstr ""
-#: part/models.py:1690
+#: part/models.py:1685
msgid "Sell multiple"
msgstr ""
-#: part/models.py:2218
+#: part/models.py:2206
msgid "Test templates can only be created for trackable parts"
msgstr ""
-#: part/models.py:2235
+#: part/models.py:2223
msgid "Test with this name already exists for this part"
msgstr ""
-#: part/models.py:2255 templates/js/translated/part.js:1819
-#: templates/js/translated/stock.js:1274
+#: part/models.py:2243 templates/js/translated/part.js:1915
+#: templates/js/translated/stock.js:1284
msgid "Test Name"
msgstr ""
-#: part/models.py:2256
+#: part/models.py:2244
msgid "Enter a name for the test"
msgstr ""
-#: part/models.py:2261
+#: part/models.py:2249
msgid "Test Description"
msgstr ""
-#: part/models.py:2262
+#: part/models.py:2250
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:2267 templates/js/translated/part.js:1828
+#: part/models.py:2255 templates/js/translated/part.js:1924
#: templates/js/translated/table_filters.js:294
msgid "Required"
msgstr ""
-#: part/models.py:2268
+#: part/models.py:2256
msgid "Is this test required to pass?"
msgstr ""
-#: part/models.py:2273 templates/js/translated/part.js:1836
+#: part/models.py:2261 templates/js/translated/part.js:1932
msgid "Requires Value"
msgstr ""
-#: part/models.py:2274
+#: part/models.py:2262
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:2279 templates/js/translated/part.js:1843
+#: part/models.py:2267 templates/js/translated/part.js:1939
msgid "Requires Attachment"
msgstr ""
-#: part/models.py:2280
+#: part/models.py:2268
msgid "Does this test require a file attachment when adding a test result?"
msgstr ""
-#: part/models.py:2288
+#: part/models.py:2276
#, python-brace-format
msgid "Illegal character in template name ({c})"
msgstr ""
-#: part/models.py:2324
+#: part/models.py:2312
msgid "Parameter template name must be unique"
msgstr ""
-#: part/models.py:2332
+#: part/models.py:2320
msgid "Parameter Name"
msgstr ""
-#: part/models.py:2339
+#: part/models.py:2327
msgid "Parameter Units"
msgstr ""
-#: part/models.py:2370
+#: part/models.py:2358
msgid "Parent Part"
msgstr ""
-#: part/models.py:2372 part/models.py:2420 part/models.py:2421
+#: part/models.py:2360 part/models.py:2408 part/models.py:2409
#: templates/InvenTree/settings/settings.html:226
msgid "Parameter Template"
msgstr ""
-#: part/models.py:2374
+#: part/models.py:2362
msgid "Data"
msgstr ""
-#: part/models.py:2374
+#: part/models.py:2362
msgid "Parameter Value"
msgstr ""
-#: part/models.py:2425 templates/InvenTree/settings/settings.html:235
+#: part/models.py:2413 templates/InvenTree/settings/settings.html:235
msgid "Default Value"
msgstr ""
-#: part/models.py:2426
+#: part/models.py:2414
msgid "Default Parameter Value"
msgstr ""
-#: part/models.py:2461
+#: part/models.py:2449
msgid "Part ID or part name"
msgstr ""
-#: part/models.py:2464 templates/js/translated/model_renderers.js:200
+#: part/models.py:2452 templates/js/translated/model_renderers.js:200
msgid "Part ID"
msgstr ""
-#: part/models.py:2465
+#: part/models.py:2453
msgid "Unique part ID value"
msgstr ""
-#: part/models.py:2468
+#: part/models.py:2456
msgid "Part Name"
msgstr ""
-#: part/models.py:2472
+#: part/models.py:2460
msgid "Part IPN"
msgstr ""
-#: part/models.py:2473
+#: part/models.py:2461
msgid "Part IPN value"
msgstr ""
-#: part/models.py:2476
+#: part/models.py:2464
msgid "Level"
msgstr ""
-#: part/models.py:2477
+#: part/models.py:2465
msgid "BOM level"
msgstr ""
-#: part/models.py:2546
+#: part/models.py:2534
msgid "Select parent part"
msgstr ""
-#: part/models.py:2554
+#: part/models.py:2542
msgid "Sub part"
msgstr ""
-#: part/models.py:2555
+#: part/models.py:2543
msgid "Select part to be used in BOM"
msgstr ""
-#: part/models.py:2561
+#: part/models.py:2549
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:2563 part/templates/part/upload_bom.html:58
-#: templates/js/translated/bom.js:877 templates/js/translated/bom.js:971
+#: part/models.py:2551 part/templates/part/upload_bom.html:58
+#: templates/js/translated/bom.js:871 templates/js/translated/bom.js:965
#: templates/js/translated/table_filters.js:92
msgid "Optional"
msgstr ""
-#: part/models.py:2563
+#: part/models.py:2551
msgid "This BOM item is optional"
msgstr ""
-#: part/models.py:2566 part/templates/part/upload_bom.html:55
+#: part/models.py:2554 part/templates/part/upload_bom.html:55
msgid "Overage"
msgstr ""
-#: part/models.py:2567
+#: part/models.py:2555
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr ""
-#: part/models.py:2570
+#: part/models.py:2558
msgid "BOM item reference"
msgstr ""
-#: part/models.py:2573
+#: part/models.py:2561
msgid "BOM item notes"
msgstr ""
-#: part/models.py:2575
+#: part/models.py:2563
msgid "Checksum"
msgstr ""
-#: part/models.py:2575
+#: part/models.py:2563
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:2579 part/templates/part/upload_bom.html:57
-#: templates/js/translated/bom.js:988
+#: part/models.py:2567 part/templates/part/upload_bom.html:57
+#: templates/js/translated/bom.js:982
#: templates/js/translated/table_filters.js:68
#: templates/js/translated/table_filters.js:88
msgid "Inherited"
msgstr ""
-#: part/models.py:2580
+#: part/models.py:2568
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr ""
-#: part/models.py:2585 part/templates/part/upload_bom.html:56
-#: templates/js/translated/bom.js:980
+#: part/models.py:2573 part/templates/part/upload_bom.html:56
+#: templates/js/translated/bom.js:974
msgid "Allow Variants"
msgstr ""
-#: part/models.py:2586
+#: part/models.py:2574
msgid "Stock items for variant parts can be used for this BOM item"
msgstr ""
-#: part/models.py:2664 stock/models.py:460
+#: part/models.py:2652 stock/models.py:460
msgid "Quantity must be integer value for trackable parts"
msgstr ""
-#: part/models.py:2673 part/models.py:2675
+#: part/models.py:2661 part/models.py:2663
msgid "Sub part must be specified"
msgstr ""
-#: part/models.py:2780
+#: part/models.py:2768
msgid "BOM Item Substitute"
msgstr ""
-#: part/models.py:2801
+#: part/models.py:2789
msgid "Substitute part cannot be the same as the master part"
msgstr ""
-#: part/models.py:2814
+#: part/models.py:2802
msgid "Parent BOM item"
msgstr ""
-#: part/models.py:2822
+#: part/models.py:2810
msgid "Substitute part"
msgstr ""
-#: part/models.py:2833
+#: part/models.py:2825
msgid "Part 1"
msgstr ""
-#: part/models.py:2837
+#: part/models.py:2829
msgid "Part 2"
msgstr ""
-#: part/models.py:2837
+#: part/models.py:2829
msgid "Select Related Part"
msgstr ""
-#: part/models.py:2868
-msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique"
+#: part/models.py:2847
+msgid "Part relationship cannot be created between a part and itself"
msgstr ""
-#: part/serializers.py:138 part/serializers.py:169 stock/serializers.py:163
+#: part/models.py:2851
+msgid "Duplicate relationship already exists"
+msgstr ""
+
+#: part/serializers.py:140 part/serializers.py:171 stock/serializers.py:163
msgid "Purchase currency of this stock item"
msgstr ""
-#: part/serializers.py:794
+#: part/serializers.py:796
msgid "Select part to copy BOM from"
msgstr ""
-#: part/serializers.py:802
+#: part/serializers.py:804
msgid "Remove Existing Data"
msgstr ""
-#: part/serializers.py:803
+#: part/serializers.py:805
msgid "Remove existing BOM items before copying"
msgstr ""
-#: part/serializers.py:808
+#: part/serializers.py:810
msgid "Include Inherited"
msgstr ""
-#: part/serializers.py:809
+#: part/serializers.py:811
msgid "Include BOM items which are inherited from templated parts"
msgstr ""
-#: part/serializers.py:814
+#: part/serializers.py:816
msgid "Skip Invalid Rows"
msgstr ""
-#: part/serializers.py:815
+#: part/serializers.py:817
msgid "Enable this option to skip invalid rows"
msgstr ""
-#: part/serializers.py:820
+#: part/serializers.py:822
msgid "Copy Substitute Parts"
msgstr ""
-#: part/serializers.py:821
+#: part/serializers.py:823
msgid "Copy substitute parts when duplicate BOM items"
msgstr ""
-#: part/serializers.py:861
+#: part/serializers.py:863
msgid "Clear Existing BOM"
msgstr ""
-#: part/serializers.py:862
+#: part/serializers.py:864
msgid "Delete existing BOM items before uploading"
msgstr ""
-#: part/serializers.py:892
+#: part/serializers.py:894
msgid "No part column specified"
msgstr ""
-#: part/serializers.py:935
+#: part/serializers.py:937
msgid "Multiple matching parts found"
msgstr ""
-#: part/serializers.py:938
+#: part/serializers.py:940
msgid "No matching part found"
msgstr ""
-#: part/serializers.py:941
+#: part/serializers.py:943
msgid "Part is not designated as a component"
msgstr ""
-#: part/serializers.py:950
+#: part/serializers.py:952
msgid "Quantity not provided"
msgstr ""
-#: part/serializers.py:958
+#: part/serializers.py:960
msgid "Invalid quantity"
msgstr ""
-#: part/serializers.py:979
+#: part/serializers.py:981
msgid "At least one BOM item is required"
msgstr ""
@@ -5088,10 +5135,10 @@ msgid "Part is virtual (not a physical part)"
msgstr ""
#: part/templates/part/part_base.html:143
-#: templates/js/translated/company.js:623
-#: templates/js/translated/company.js:882
+#: templates/js/translated/company.js:608
+#: templates/js/translated/company.js:867
#: templates/js/translated/model_renderers.js:192
-#: templates/js/translated/part.js:581 templates/js/translated/part.js:658
+#: templates/js/translated/part.js:625 templates/js/translated/part.js:702
msgid "Inactive"
msgstr ""
@@ -5120,13 +5167,13 @@ msgstr ""
msgid "Allocated to Sales Orders"
msgstr ""
-#: part/templates/part/part_base.html:232 templates/js/translated/bom.js:1009
+#: part/templates/part/part_base.html:232 templates/js/translated/bom.js:1003
msgid "Can Build"
msgstr ""
-#: part/templates/part/part_base.html:238 templates/js/translated/part.js:520
-#: templates/js/translated/part.js:540 templates/js/translated/part.js:1233
-#: templates/js/translated/part.js:1405 templates/js/translated/part.js:1421
+#: part/templates/part/part_base.html:238 templates/js/translated/part.js:564
+#: templates/js/translated/part.js:584 templates/js/translated/part.js:1277
+#: templates/js/translated/part.js:1449 templates/js/translated/part.js:1465
msgid "Building"
msgstr ""
@@ -5143,7 +5190,7 @@ msgstr ""
msgid "Search for serial number"
msgstr ""
-#: part/templates/part/part_base.html:443 part/templates/part/prices.html:147
+#: part/templates/part/part_base.html:443 part/templates/part/prices.html:149
msgid "Calculate"
msgstr ""
@@ -5161,54 +5208,55 @@ msgstr ""
#: part/templates/part/part_pricing.html:26
#: part/templates/part/part_pricing.html:52
-#: part/templates/part/part_pricing.html:100
-#: part/templates/part/part_pricing.html:115 part/templates/part/prices.html:28
-#: part/templates/part/prices.html:55 part/templates/part/prices.html:106
-#: part/templates/part/prices.html:123
+#: part/templates/part/part_pricing.html:103
+#: part/templates/part/part_pricing.html:118 part/templates/part/prices.html:28
+#: part/templates/part/prices.html:55 part/templates/part/prices.html:108
+#: part/templates/part/prices.html:125
msgid "Unit Cost"
msgstr ""
#: part/templates/part/part_pricing.html:32
#: part/templates/part/part_pricing.html:58
-#: part/templates/part/part_pricing.html:104
-#: part/templates/part/part_pricing.html:119 part/templates/part/prices.html:35
-#: part/templates/part/prices.html:62 part/templates/part/prices.html:111
-#: part/templates/part/prices.html:128
+#: part/templates/part/part_pricing.html:107
+#: part/templates/part/part_pricing.html:122 part/templates/part/prices.html:35
+#: part/templates/part/prices.html:62 part/templates/part/prices.html:113
+#: part/templates/part/prices.html:130
msgid "Total Cost"
msgstr ""
#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:43
-#: templates/js/translated/bom.js:963
+#: templates/js/translated/bom.js:957
msgid "No supplier pricing available"
msgstr ""
#: part/templates/part/part_pricing.html:48 part/templates/part/prices.html:52
-#: part/templates/part/prices.html:246
+#: part/templates/part/prices.html:248
msgid "BOM Pricing"
msgstr ""
-#: part/templates/part/part_pricing.html:65 part/templates/part/prices.html:72
+#: part/templates/part/part_pricing.html:66 part/templates/part/prices.html:72
msgid "Unit Purchase Price"
msgstr ""
-#: part/templates/part/part_pricing.html:71 part/templates/part/prices.html:79
+#: part/templates/part/part_pricing.html:72 part/templates/part/prices.html:79
msgid "Total Purchase Price"
msgstr ""
-#: part/templates/part/part_pricing.html:81 part/templates/part/prices.html:89
+#: part/templates/part/part_pricing.html:82 part/templates/part/prices.html:89
msgid "Note: BOM pricing is incomplete for this part"
msgstr ""
-#: part/templates/part/part_pricing.html:88 part/templates/part/prices.html:96
+#: part/templates/part/part_pricing.html:91 part/templates/part/prices.html:98
msgid "No BOM pricing available"
msgstr ""
-#: part/templates/part/part_pricing.html:97 part/templates/part/prices.html:105
+#: part/templates/part/part_pricing.html:100
+#: part/templates/part/prices.html:107
msgid "Internal Price"
msgstr ""
-#: part/templates/part/part_pricing.html:128
-#: part/templates/part/prices.html:137
+#: part/templates/part/part_pricing.html:131
+#: part/templates/part/prices.html:139
msgid "No pricing information is available for this part."
msgstr ""
@@ -5232,43 +5280,6 @@ msgstr ""
msgid "Select from existing images"
msgstr ""
-#: part/templates/part/partial_delete.html:9
-#, python-format
-msgid "Part '%(full_name)s' cannot be deleted as it is still marked as active.\n"
-"
Disable the \"Active\" part attribute and re-try.\n"
-" "
-msgstr ""
-
-#: part/templates/part/partial_delete.html:17
-#, python-format
-msgid "Are you sure you want to delete part '%(full_name)s'?"
-msgstr ""
-
-#: part/templates/part/partial_delete.html:22
-#, python-format
-msgid "This part is used in BOMs for %(count)s other parts. If you delete this part, the BOMs for the following parts will be updated"
-msgstr ""
-
-#: part/templates/part/partial_delete.html:32
-#, python-format
-msgid "There are %(count)s stock entries defined for this part. If you delete this part, the following stock entries will also be deleted:"
-msgstr ""
-
-#: part/templates/part/partial_delete.html:43
-#, python-format
-msgid "There are %(count)s manufacturers defined for this part. If you delete this part, the following manufacturer parts will also be deleted:"
-msgstr ""
-
-#: part/templates/part/partial_delete.html:54
-#, python-format
-msgid "There are %(count)s suppliers defined for this part. If you delete this part, the following supplier parts will also be deleted:"
-msgstr ""
-
-#: part/templates/part/partial_delete.html:67
-#, python-format
-msgid "There are %(count)s unique parts tracked for '%(full_name)s'. Deleting this part will permanently remove this tracking information."
-msgstr ""
-
#: part/templates/part/prices.html:19
msgid "Pricing ranges"
msgstr ""
@@ -5285,66 +5296,58 @@ msgstr ""
msgid "Show BOM cost"
msgstr ""
-#: part/templates/part/prices.html:120
+#: part/templates/part/prices.html:122
msgid "Show sale cost"
msgstr ""
-#: part/templates/part/prices.html:121
+#: part/templates/part/prices.html:123
msgid "Show sale price"
msgstr ""
-#: part/templates/part/prices.html:143
+#: part/templates/part/prices.html:145
msgid "Calculation parameters"
msgstr ""
-#: part/templates/part/prices.html:158 templates/js/translated/bom.js:957
+#: part/templates/part/prices.html:160 templates/js/translated/bom.js:951
msgid "Supplier Cost"
msgstr ""
-#: part/templates/part/prices.html:159 part/templates/part/prices.html:180
-#: part/templates/part/prices.html:204 part/templates/part/prices.html:234
-#: part/templates/part/prices.html:260 part/templates/part/prices.html:289
+#: part/templates/part/prices.html:161 part/templates/part/prices.html:182
+#: part/templates/part/prices.html:206 part/templates/part/prices.html:236
+#: part/templates/part/prices.html:262 part/templates/part/prices.html:291
msgid "Jump to overview"
msgstr ""
-#: part/templates/part/prices.html:184
+#: part/templates/part/prices.html:186
msgid "Stock Pricing"
msgstr ""
-#: part/templates/part/prices.html:193
+#: part/templates/part/prices.html:195
msgid "No stock pricing history is available for this part."
msgstr ""
-#: part/templates/part/prices.html:203
+#: part/templates/part/prices.html:205
msgid "Internal Cost"
msgstr ""
-#: part/templates/part/prices.html:218
+#: part/templates/part/prices.html:220
msgid "Add Internal Price Break"
msgstr ""
-#: part/templates/part/prices.html:233
+#: part/templates/part/prices.html:235
msgid "BOM Cost"
msgstr ""
-#: part/templates/part/prices.html:259
+#: part/templates/part/prices.html:261
msgid "Sale Cost"
msgstr ""
-#: part/templates/part/prices.html:300
+#: part/templates/part/prices.html:302
msgid "No sale pice history available for this part."
msgstr ""
-#: part/templates/part/set_category.html:9
-msgid "Set category for the following parts"
-msgstr ""
-
-#: part/templates/part/set_category.html:32
-msgid "Remove part"
-msgstr ""
-
-#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:543
-#: templates/js/translated/part.js:1221 templates/js/translated/part.js:1425
+#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:587
+#: templates/js/translated/part.js:1265 templates/js/translated/part.js:1469
msgid "No Stock"
msgstr ""
@@ -5407,56 +5410,39 @@ msgstr ""
msgid "{title} v{version}"
msgstr ""
-#: part/views.py:74
-msgid "Set Part Category"
-msgstr ""
-
-#: part/views.py:122
-#, python-brace-format
-msgid "Set category for {n} parts"
-msgstr ""
-
-#: part/views.py:193
+#: part/views.py:118
msgid "Match References"
msgstr ""
-#: part/views.py:494
+#: part/views.py:419
msgid "None"
msgstr ""
-#: part/views.py:556
+#: part/views.py:481
msgid "Part QR Code"
msgstr ""
-#: part/views.py:650
+#: part/views.py:575
msgid "Select Part Image"
msgstr ""
-#: part/views.py:676
+#: part/views.py:601
msgid "Updated part image"
msgstr ""
-#: part/views.py:679
+#: part/views.py:604
msgid "Part image not found"
msgstr ""
-#: part/views.py:768
-msgid "Confirm Part Deletion"
-msgstr ""
-
-#: part/views.py:776
-msgid "Part was deleted"
-msgstr ""
-
-#: part/views.py:785
+#: part/views.py:693
msgid "Part Pricing"
msgstr ""
-#: part/views.py:976
+#: part/views.py:884
msgid "Delete Part Category"
msgstr ""
-#: part/views.py:983
+#: part/views.py:891
msgid "Part category was deleted"
msgstr ""
@@ -5516,21 +5502,21 @@ msgstr ""
msgid "Label printing failed"
msgstr ""
-#: plugin/builtin/integration/core_notifications.py:28
+#: plugin/builtin/integration/core_notifications.py:29
msgid "InvenTree contributors"
msgstr ""
-#: plugin/builtin/integration/core_notifications.py:29
+#: plugin/builtin/integration/core_notifications.py:30
msgid "Integrated outgoing notificaton methods"
msgstr ""
-#: plugin/builtin/integration/core_notifications.py:33
-#: plugin/builtin/integration/core_notifications.py:52
-msgid "Enable email notifications"
-msgstr ""
-
#: plugin/builtin/integration/core_notifications.py:34
#: plugin/builtin/integration/core_notifications.py:53
+msgid "Enable email notifications"
+msgstr ""
+
+#: plugin/builtin/integration/core_notifications.py:35
+#: plugin/builtin/integration/core_notifications.py:54
msgid "Allow sending of emails for event notifications"
msgstr ""
@@ -5646,15 +5632,19 @@ msgstr ""
msgid "Either packagename of URL must be provided"
msgstr ""
-#: report/api.py:166
+#: report/api.py:179
msgid "No valid objects provided to template"
msgstr ""
-#: report/api.py:198 report/api.py:239
+#: report/api.py:215 report/api.py:256
#, python-brace-format
msgid "Template file '{template}' is missing or does not exist"
msgstr ""
+#: report/api.py:359
+msgid "Test report"
+msgstr ""
+
#: report/models.py:152
msgid "Template name"
msgstr ""
@@ -5757,7 +5747,7 @@ msgstr ""
#: templates/js/translated/build.js:1173 templates/js/translated/build.js:1671
#: templates/js/translated/model_renderers.js:106
#: templates/js/translated/order.js:115 templates/js/translated/order.js:3229
-#: templates/js/translated/order.js:3318 templates/js/translated/stock.js:435
+#: templates/js/translated/order.js:3318 templates/js/translated/stock.js:434
msgid "Serial Number"
msgstr ""
@@ -5766,19 +5756,19 @@ msgid "Test Results"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:93
-#: stock/models.py:2068
+#: stock/models.py:2072
msgid "Test"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:94
-#: stock/models.py:2074
+#: stock/models.py:2078
msgid "Result"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:97
#: templates/InvenTree/settings/plugin.html:51
#: templates/InvenTree/settings/plugin_settings.html:38
-#: templates/js/translated/order.js:1669 templates/js/translated/stock.js:2340
+#: templates/js/translated/order.js:1669 templates/js/translated/stock.js:2350
msgid "Date"
msgstr ""
@@ -5796,20 +5786,20 @@ msgid "Installed Items"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:137
-#: templates/js/translated/stock.js:555 templates/js/translated/stock.js:725
-#: templates/js/translated/stock.js:2589
+#: templates/js/translated/stock.js:554 templates/js/translated/stock.js:724
+#: templates/js/translated/stock.js:2599
msgid "Serial"
msgstr ""
-#: stock/api.py:504
+#: stock/api.py:505
msgid "Quantity is required"
msgstr ""
-#: stock/api.py:511
+#: stock/api.py:512
msgid "Valid part must be supplied"
msgstr ""
-#: stock/api.py:536
+#: stock/api.py:537
msgid "Serial numbers cannot be supplied for a non-trackable part"
msgstr ""
@@ -5917,7 +5907,7 @@ msgid "Destination Sales Order"
msgstr ""
#: stock/models.py:690 stock/templates/stock/item_base.html:429
-#: templates/js/translated/stock.js:1816
+#: templates/js/translated/stock.js:1826
msgid "Expiry Date"
msgstr ""
@@ -5971,79 +5961,79 @@ msgstr ""
msgid "Serial numbers already exist: {exists}"
msgstr ""
-#: stock/models.py:1321
+#: stock/models.py:1325
msgid "Stock item has been assigned to a sales order"
msgstr ""
-#: stock/models.py:1324
+#: stock/models.py:1328
msgid "Stock item is installed in another item"
msgstr ""
-#: stock/models.py:1327
+#: stock/models.py:1331
msgid "Stock item contains other items"
msgstr ""
-#: stock/models.py:1330
+#: stock/models.py:1334
msgid "Stock item has been assigned to a customer"
msgstr ""
-#: stock/models.py:1333
+#: stock/models.py:1337
msgid "Stock item is currently in production"
msgstr ""
-#: stock/models.py:1336
+#: stock/models.py:1340
msgid "Serialized stock cannot be merged"
msgstr ""
-#: stock/models.py:1343 stock/serializers.py:908
+#: stock/models.py:1347 stock/serializers.py:895
msgid "Duplicate stock items"
msgstr ""
-#: stock/models.py:1347
+#: stock/models.py:1351
msgid "Stock items must refer to the same part"
msgstr ""
-#: stock/models.py:1351
+#: stock/models.py:1355
msgid "Stock items must refer to the same supplier part"
msgstr ""
-#: stock/models.py:1355
+#: stock/models.py:1359
msgid "Stock status codes must match"
msgstr ""
-#: stock/models.py:1524
+#: stock/models.py:1528
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:1986
+#: stock/models.py:1990
msgid "Entry notes"
msgstr ""
-#: stock/models.py:2044
+#: stock/models.py:2048
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:2050
+#: stock/models.py:2054
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:2069
+#: stock/models.py:2073
msgid "Test name"
msgstr ""
-#: stock/models.py:2075
+#: stock/models.py:2079
msgid "Test result"
msgstr ""
-#: stock/models.py:2081
+#: stock/models.py:2085
msgid "Test output value"
msgstr ""
-#: stock/models.py:2088
+#: stock/models.py:2092
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:2094
+#: stock/models.py:2098
msgid "Test notes"
msgstr ""
@@ -6064,7 +6054,7 @@ msgstr ""
msgid "Enter serial numbers for new items"
msgstr ""
-#: stock/serializers.py:309 stock/serializers.py:865 stock/serializers.py:1098
+#: stock/serializers.py:309 stock/serializers.py:852 stock/serializers.py:1085
msgid "Destination stock location"
msgstr ""
@@ -6104,63 +6094,63 @@ msgstr ""
msgid "Destination location for returned item"
msgstr ""
-#: stock/serializers.py:720
+#: stock/serializers.py:707
msgid "Part must be salable"
msgstr ""
-#: stock/serializers.py:724
+#: stock/serializers.py:711
msgid "Item is allocated to a sales order"
msgstr ""
-#: stock/serializers.py:728
+#: stock/serializers.py:715
msgid "Item is allocated to a build order"
msgstr ""
-#: stock/serializers.py:759
+#: stock/serializers.py:746
msgid "Customer to assign stock items"
msgstr ""
-#: stock/serializers.py:765
+#: stock/serializers.py:752
msgid "Selected company is not a customer"
msgstr ""
-#: stock/serializers.py:773
+#: stock/serializers.py:760
msgid "Stock assignment notes"
msgstr ""
-#: stock/serializers.py:783 stock/serializers.py:1014
+#: stock/serializers.py:770 stock/serializers.py:1001
msgid "A list of stock items must be provided"
msgstr ""
-#: stock/serializers.py:872
+#: stock/serializers.py:859
msgid "Stock merging notes"
msgstr ""
-#: stock/serializers.py:877
+#: stock/serializers.py:864
msgid "Allow mismatched suppliers"
msgstr ""
-#: stock/serializers.py:878
+#: stock/serializers.py:865
msgid "Allow stock items with different supplier parts to be merged"
msgstr ""
-#: stock/serializers.py:883
+#: stock/serializers.py:870
msgid "Allow mismatched status"
msgstr ""
-#: stock/serializers.py:884
+#: stock/serializers.py:871
msgid "Allow stock items with different status codes to be merged"
msgstr ""
-#: stock/serializers.py:894
+#: stock/serializers.py:881
msgid "At least two stock items must be provided"
msgstr ""
-#: stock/serializers.py:976
+#: stock/serializers.py:963
msgid "StockItem primary key value"
msgstr ""
-#: stock/serializers.py:1004
+#: stock/serializers.py:991
msgid "Stock transaction notes"
msgstr ""
@@ -6185,7 +6175,7 @@ msgstr ""
msgid "Test Report"
msgstr ""
-#: stock/templates/stock/item.html:94
+#: stock/templates/stock/item.html:94 stock/templates/stock/item.html:298
msgid "Delete Test Data"
msgstr ""
@@ -6197,11 +6187,15 @@ msgstr ""
msgid "Installed Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:151 templates/js/translated/stock.js:2733
+#: stock/templates/stock/item.html:151 templates/js/translated/stock.js:2743
msgid "Install Stock Item"
msgstr ""
-#: stock/templates/stock/item.html:292 templates/js/translated/stock.js:1455
+#: stock/templates/stock/item.html:290
+msgid "Delete all test results for this stock item"
+msgstr ""
+
+#: stock/templates/stock/item.html:323 templates/js/translated/stock.js:1465
msgid "Add Test Result"
msgstr ""
@@ -6388,7 +6382,7 @@ msgid "Stale"
msgstr ""
#: stock/templates/stock/item_base.html:442
-#: templates/js/translated/stock.js:1832
+#: templates/js/translated/stock.js:1842
msgid "Last Updated"
msgstr ""
@@ -6529,7 +6523,7 @@ msgstr ""
msgid "Child Items"
msgstr ""
-#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:182
+#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:144
msgid "Convert Stock Item"
msgstr ""
@@ -6550,31 +6544,19 @@ msgstr ""
msgid "This action cannot be easily undone"
msgstr ""
-#: stock/views.py:113
+#: stock/views.py:111
msgid "Stock Location QR code"
msgstr ""
-#: stock/views.py:131
-msgid "Delete All Test Data"
-msgstr ""
-
-#: stock/views.py:149
-msgid "Confirm test data deletion"
-msgstr ""
-
-#: stock/views.py:150
-msgid "Check the confirmation box"
-msgstr ""
-
-#: stock/views.py:165
+#: stock/views.py:127
msgid "Stock Item QR Code"
msgstr ""
-#: stock/views.py:216
+#: stock/views.py:178
msgid "Delete Stock Location"
msgstr ""
-#: stock/views.py:229
+#: stock/views.py:191
msgid "Delete Stock Item"
msgstr ""
@@ -7317,8 +7299,8 @@ msgstr ""
#: templates/about.html:11 templates/about.html:105
#: templates/js/translated/bom.js:133 templates/js/translated/bom.js:621
-#: templates/js/translated/modals.js:56 templates/js/translated/modals.js:595
-#: templates/js/translated/modals.js:689 templates/js/translated/modals.js:997
+#: templates/js/translated/modals.js:56 templates/js/translated/modals.js:601
+#: templates/js/translated/modals.js:695 templates/js/translated/modals.js:1003
#: templates/js/translated/order.js:928 templates/modals.html:15
#: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50
msgid "Close"
@@ -7390,6 +7372,10 @@ msgstr ""
msgid "Please confirm that %(email)s is an email address for user %(user_display)s."
msgstr ""
+#: templates/account/email_confirm.html:20 templates/js/translated/forms.js:630
+msgid "Confirm"
+msgstr "Confirmar"
+
#: templates/account/email_confirm.html:27
#, python-format
msgid "This email confirmation link expired or is invalid. Please issue a new email confirmation request."
@@ -7562,7 +7548,7 @@ msgstr ""
msgid "Delete selected attachments"
msgstr ""
-#: templates/attachment_table.html:12 templates/js/translated/attachment.js:110
+#: templates/attachment_table.html:12 templates/js/translated/attachment.js:112
msgid "Delete Attachments"
msgstr ""
@@ -7596,15 +7582,15 @@ msgid "The following parts are low on required stock"
msgstr ""
#: templates/email/build_order_required_stock.html:18
-#: templates/js/translated/bom.js:1425
+#: templates/js/translated/bom.js:1419
msgid "Required Quantity"
msgstr ""
#: templates/email/build_order_required_stock.html:19
#: templates/email/low_stock_notification.html:18
-#: templates/js/translated/bom.js:890 templates/js/translated/build.js:1787
-#: templates/js/translated/build.js:2650 templates/js/translated/part.js:527
-#: templates/js/translated/part.js:530
+#: templates/js/translated/bom.js:884 templates/js/translated/build.js:1787
+#: templates/js/translated/build.js:2650 templates/js/translated/part.js:571
+#: templates/js/translated/part.js:574
#: templates/js/translated/table_filters.js:178
msgid "Available"
msgstr ""
@@ -7622,6 +7608,13 @@ msgstr ""
msgid "Minimum Quantity"
msgstr ""
+#: templates/email/new_order_assigned.html:9
+#: templates/email/overdue_build_order.html:9
+#: templates/email/overdue_purchase_order.html:9
+#: templates/email/overdue_sales_order.html:9
+msgid "Click on the following link to view this order"
+msgstr ""
+
#: templates/image_download.html:8
msgid "Specify URL for downloading image"
msgstr ""
@@ -7638,91 +7631,91 @@ msgstr ""
msgid "Remote image must not exceed maximum allowable file size"
msgstr ""
-#: templates/js/translated/api.js:235 templates/js/translated/modals.js:1067
+#: templates/js/translated/api.js:195 templates/js/translated/modals.js:1073
msgid "No Response"
msgstr ""
-#: templates/js/translated/api.js:236 templates/js/translated/modals.js:1068
+#: templates/js/translated/api.js:196 templates/js/translated/modals.js:1074
msgid "No response from the InvenTree server"
msgstr ""
-#: templates/js/translated/api.js:242
+#: templates/js/translated/api.js:202
msgid "Error 400: Bad request"
msgstr ""
-#: templates/js/translated/api.js:243
+#: templates/js/translated/api.js:203
msgid "API request returned error code 400"
msgstr ""
-#: templates/js/translated/api.js:247 templates/js/translated/modals.js:1077
+#: templates/js/translated/api.js:207 templates/js/translated/modals.js:1083
msgid "Error 401: Not Authenticated"
msgstr ""
-#: templates/js/translated/api.js:248 templates/js/translated/modals.js:1078
+#: templates/js/translated/api.js:208 templates/js/translated/modals.js:1084
msgid "Authentication credentials not supplied"
msgstr ""
-#: templates/js/translated/api.js:252 templates/js/translated/modals.js:1082
+#: templates/js/translated/api.js:212 templates/js/translated/modals.js:1088
msgid "Error 403: Permission Denied"
msgstr ""
-#: templates/js/translated/api.js:253 templates/js/translated/modals.js:1083
+#: templates/js/translated/api.js:213 templates/js/translated/modals.js:1089
msgid "You do not have the required permissions to access this function"
msgstr ""
-#: templates/js/translated/api.js:257 templates/js/translated/modals.js:1087
+#: templates/js/translated/api.js:217 templates/js/translated/modals.js:1093
msgid "Error 404: Resource Not Found"
msgstr ""
-#: templates/js/translated/api.js:258 templates/js/translated/modals.js:1088
+#: templates/js/translated/api.js:218 templates/js/translated/modals.js:1094
msgid "The requested resource could not be located on the server"
msgstr ""
-#: templates/js/translated/api.js:262
+#: templates/js/translated/api.js:222
msgid "Error 405: Method Not Allowed"
msgstr ""
-#: templates/js/translated/api.js:263
+#: templates/js/translated/api.js:223
msgid "HTTP method not allowed at URL"
msgstr ""
-#: templates/js/translated/api.js:267 templates/js/translated/modals.js:1092
+#: templates/js/translated/api.js:227 templates/js/translated/modals.js:1098
msgid "Error 408: Timeout"
msgstr ""
-#: templates/js/translated/api.js:268 templates/js/translated/modals.js:1093
+#: templates/js/translated/api.js:228 templates/js/translated/modals.js:1099
msgid "Connection timeout while requesting data from server"
msgstr ""
-#: templates/js/translated/api.js:271
+#: templates/js/translated/api.js:231
msgid "Unhandled Error Code"
msgstr ""
-#: templates/js/translated/api.js:272
+#: templates/js/translated/api.js:232
msgid "Error code"
msgstr ""
-#: templates/js/translated/attachment.js:96
+#: templates/js/translated/attachment.js:98
msgid "All selected attachments will be deleted"
msgstr ""
-#: templates/js/translated/attachment.js:156
+#: templates/js/translated/attachment.js:152
msgid "No attachments found"
msgstr ""
-#: templates/js/translated/attachment.js:180
+#: templates/js/translated/attachment.js:176
msgid "Edit Attachment"
msgstr ""
-#: templates/js/translated/attachment.js:246
+#: templates/js/translated/attachment.js:242
msgid "Upload Date"
msgstr ""
-#: templates/js/translated/attachment.js:262
+#: templates/js/translated/attachment.js:264
msgid "Edit attachment"
msgstr ""
-#: templates/js/translated/attachment.js:269
+#: templates/js/translated/attachment.js:271
msgid "Delete attachment"
msgstr ""
@@ -7755,7 +7748,7 @@ msgid "Unknown response from server"
msgstr ""
#: templates/js/translated/barcode.js:182
-#: templates/js/translated/modals.js:1057
+#: templates/js/translated/modals.js:1063
msgid "Invalid server response"
msgstr ""
@@ -7783,7 +7776,7 @@ msgstr ""
msgid "Unlink"
msgstr ""
-#: templates/js/translated/barcode.js:456 templates/js/translated/stock.js:999
+#: templates/js/translated/barcode.js:456 templates/js/translated/stock.js:998
msgid "Remove stock item"
msgstr ""
@@ -7918,89 +7911,89 @@ msgstr ""
msgid "Edit BOM Item Substitutes"
msgstr ""
-#: templates/js/translated/bom.js:682
+#: templates/js/translated/bom.js:684
msgid "All selected BOM items will be deleted"
msgstr ""
-#: templates/js/translated/bom.js:697
+#: templates/js/translated/bom.js:699
msgid "Delete selected BOM items?"
msgstr ""
-#: templates/js/translated/bom.js:824
+#: templates/js/translated/bom.js:818
msgid "Load BOM for subassembly"
msgstr ""
-#: templates/js/translated/bom.js:834
+#: templates/js/translated/bom.js:828
msgid "Substitutes Available"
msgstr ""
-#: templates/js/translated/bom.js:838 templates/js/translated/build.js:1769
+#: templates/js/translated/bom.js:832 templates/js/translated/build.js:1769
msgid "Variant stock allowed"
msgstr ""
-#: templates/js/translated/bom.js:906 templates/js/translated/build.js:1814
+#: templates/js/translated/bom.js:900 templates/js/translated/build.js:1814
#: templates/js/translated/order.js:3562
msgid "No Stock Available"
msgstr ""
-#: templates/js/translated/bom.js:910 templates/js/translated/build.js:1818
+#: templates/js/translated/bom.js:904 templates/js/translated/build.js:1818
msgid "Includes variant and substitute stock"
msgstr ""
-#: templates/js/translated/bom.js:912 templates/js/translated/build.js:1820
-#: templates/js/translated/part.js:690
+#: templates/js/translated/bom.js:906 templates/js/translated/build.js:1820
+#: templates/js/translated/part.js:734
msgid "Includes variant stock"
msgstr ""
-#: templates/js/translated/bom.js:914 templates/js/translated/build.js:1822
+#: templates/js/translated/bom.js:908 templates/js/translated/build.js:1822
msgid "Includes substitute stock"
msgstr ""
-#: templates/js/translated/bom.js:928
+#: templates/js/translated/bom.js:922
msgid "Substitutes"
msgstr ""
-#: templates/js/translated/bom.js:943
+#: templates/js/translated/bom.js:937
msgid "Purchase Price Range"
msgstr ""
-#: templates/js/translated/bom.js:950
+#: templates/js/translated/bom.js:944
msgid "Purchase Price Average"
msgstr ""
-#: templates/js/translated/bom.js:999 templates/js/translated/bom.js:1090
+#: templates/js/translated/bom.js:993 templates/js/translated/bom.js:1084
msgid "View BOM"
msgstr ""
-#: templates/js/translated/bom.js:1061
+#: templates/js/translated/bom.js:1055
msgid "Validate BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:1063
+#: templates/js/translated/bom.js:1057
msgid "This line has been validated"
msgstr ""
-#: templates/js/translated/bom.js:1065
+#: templates/js/translated/bom.js:1059
msgid "Edit substitute parts"
msgstr ""
-#: templates/js/translated/bom.js:1067 templates/js/translated/bom.js:1228
+#: templates/js/translated/bom.js:1061 templates/js/translated/bom.js:1222
msgid "Edit BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:1069
+#: templates/js/translated/bom.js:1063
msgid "Delete BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:1164 templates/js/translated/build.js:1615
+#: templates/js/translated/bom.js:1158 templates/js/translated/build.js:1615
msgid "No BOM items found"
msgstr ""
-#: templates/js/translated/bom.js:1408 templates/js/translated/build.js:1753
+#: templates/js/translated/bom.js:1402 templates/js/translated/build.js:1753
msgid "Required Part"
msgstr ""
-#: templates/js/translated/bom.js:1430
+#: templates/js/translated/bom.js:1424
msgid "Inherited from parent BOM"
msgstr ""
@@ -8040,13 +8033,13 @@ msgstr ""
msgid "Complete Build Order"
msgstr ""
-#: templates/js/translated/build.js:259 templates/js/translated/stock.js:91
-#: templates/js/translated/stock.js:181
+#: templates/js/translated/build.js:259 templates/js/translated/stock.js:90
+#: templates/js/translated/stock.js:180
msgid "Next available serial number"
msgstr ""
-#: templates/js/translated/build.js:261 templates/js/translated/stock.js:93
-#: templates/js/translated/stock.js:183
+#: templates/js/translated/build.js:261 templates/js/translated/stock.js:92
+#: templates/js/translated/stock.js:182
msgid "Latest serial number"
msgstr ""
@@ -8259,9 +8252,9 @@ msgstr ""
msgid "No builds matching query"
msgstr ""
-#: templates/js/translated/build.js:2448 templates/js/translated/part.js:1314
-#: templates/js/translated/part.js:1729 templates/js/translated/stock.js:1619
-#: templates/js/translated/stock.js:2277
+#: templates/js/translated/build.js:2448 templates/js/translated/part.js:1358
+#: templates/js/translated/part.js:1825 templates/js/translated/stock.js:1629
+#: templates/js/translated/stock.js:2287
msgid "Select"
msgstr ""
@@ -8273,7 +8266,7 @@ msgstr ""
msgid "Progress"
msgstr ""
-#: templates/js/translated/build.js:2532 templates/js/translated/stock.js:2519
+#: templates/js/translated/build.js:2532 templates/js/translated/stock.js:2529
msgid "No user information"
msgstr ""
@@ -8285,107 +8278,107 @@ msgstr ""
msgid "No parts allocated for"
msgstr ""
-#: templates/js/translated/company.js:66
+#: templates/js/translated/company.js:65
msgid "Add Manufacturer"
msgstr ""
-#: templates/js/translated/company.js:79 templates/js/translated/company.js:169
+#: templates/js/translated/company.js:78 templates/js/translated/company.js:168
msgid "Add Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:100
+#: templates/js/translated/company.js:99
msgid "Edit Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:157 templates/js/translated/order.js:506
+#: templates/js/translated/company.js:156 templates/js/translated/order.js:506
msgid "Add Supplier"
msgstr ""
-#: templates/js/translated/company.js:185
+#: templates/js/translated/company.js:184
msgid "Add Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:200
+#: templates/js/translated/company.js:199
msgid "Edit Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:248
+#: templates/js/translated/company.js:249
msgid "All selected supplier parts will be deleted"
msgstr ""
-#: templates/js/translated/company.js:263
+#: templates/js/translated/company.js:264
msgid "Delete Supplier Parts"
msgstr ""
-#: templates/js/translated/company.js:342
+#: templates/js/translated/company.js:336
msgid "Add new Company"
msgstr ""
-#: templates/js/translated/company.js:419
+#: templates/js/translated/company.js:413
msgid "Parts Supplied"
msgstr ""
-#: templates/js/translated/company.js:428
+#: templates/js/translated/company.js:422
msgid "Parts Manufactured"
msgstr ""
-#: templates/js/translated/company.js:443
+#: templates/js/translated/company.js:437
msgid "No company information found"
msgstr ""
-#: templates/js/translated/company.js:482
+#: templates/js/translated/company.js:478
msgid "All selected manufacturer parts will be deleted"
msgstr ""
-#: templates/js/translated/company.js:496
+#: templates/js/translated/company.js:492
msgid "Delete Manufacturer Parts"
msgstr ""
-#: templates/js/translated/company.js:535
+#: templates/js/translated/company.js:526
msgid "All selected parameters will be deleted"
msgstr ""
-#: templates/js/translated/company.js:548
+#: templates/js/translated/company.js:539
msgid "Delete Parameters"
msgstr ""
-#: templates/js/translated/company.js:595
+#: templates/js/translated/company.js:580
msgid "No manufacturer parts found"
msgstr ""
-#: templates/js/translated/company.js:615
-#: templates/js/translated/company.js:874 templates/js/translated/part.js:565
-#: templates/js/translated/part.js:650
+#: templates/js/translated/company.js:600
+#: templates/js/translated/company.js:859 templates/js/translated/part.js:609
+#: templates/js/translated/part.js:694
msgid "Template part"
msgstr ""
-#: templates/js/translated/company.js:619
-#: templates/js/translated/company.js:878 templates/js/translated/part.js:569
-#: templates/js/translated/part.js:654
+#: templates/js/translated/company.js:604
+#: templates/js/translated/company.js:863 templates/js/translated/part.js:613
+#: templates/js/translated/part.js:698
msgid "Assembled part"
msgstr ""
-#: templates/js/translated/company.js:747 templates/js/translated/part.js:757
+#: templates/js/translated/company.js:732 templates/js/translated/part.js:801
msgid "No parameters found"
msgstr ""
-#: templates/js/translated/company.js:784 templates/js/translated/part.js:799
+#: templates/js/translated/company.js:769 templates/js/translated/part.js:843
msgid "Edit parameter"
msgstr ""
-#: templates/js/translated/company.js:785 templates/js/translated/part.js:800
+#: templates/js/translated/company.js:770 templates/js/translated/part.js:844
msgid "Delete parameter"
msgstr ""
-#: templates/js/translated/company.js:804 templates/js/translated/part.js:817
+#: templates/js/translated/company.js:789 templates/js/translated/part.js:861
msgid "Edit Parameter"
msgstr ""
-#: templates/js/translated/company.js:815 templates/js/translated/part.js:829
+#: templates/js/translated/company.js:800 templates/js/translated/part.js:873
msgid "Delete Parameter"
msgstr ""
-#: templates/js/translated/company.js:854
+#: templates/js/translated/company.js:839
msgid "No supplier parts found"
msgstr ""
@@ -8448,36 +8441,36 @@ msgstr ""
msgid "Keep this form open"
msgstr ""
-#: templates/js/translated/forms.js:756
+#: templates/js/translated/forms.js:757
msgid "Enter a valid number"
msgstr ""
-#: templates/js/translated/forms.js:1248 templates/modals.html:19
+#: templates/js/translated/forms.js:1249 templates/modals.html:19
#: templates/modals.html:43
msgid "Form errors exist"
msgstr ""
-#: templates/js/translated/forms.js:1681
+#: templates/js/translated/forms.js:1682
msgid "No results found"
msgstr ""
-#: templates/js/translated/forms.js:1896 templates/search.html:29
+#: templates/js/translated/forms.js:1897 templates/search.html:29
msgid "Searching"
msgstr ""
-#: templates/js/translated/forms.js:2149
+#: templates/js/translated/forms.js:2150
msgid "Clear input"
msgstr ""
-#: templates/js/translated/forms.js:2615
+#: templates/js/translated/forms.js:2616
msgid "File Column"
msgstr ""
-#: templates/js/translated/forms.js:2615
+#: templates/js/translated/forms.js:2616
msgid "Field Name"
msgstr ""
-#: templates/js/translated/forms.js:2627
+#: templates/js/translated/forms.js:2628
msgid "Select Columns"
msgstr ""
@@ -8498,7 +8491,7 @@ msgid "Labels sent to printer"
msgstr ""
#: templates/js/translated/label.js:60 templates/js/translated/report.js:118
-#: templates/js/translated/stock.js:1023
+#: templates/js/translated/stock.js:1022
msgid "Select Stock Items"
msgstr ""
@@ -8552,12 +8545,12 @@ msgid "Select Label Template"
msgstr ""
#: templates/js/translated/modals.js:82 templates/js/translated/modals.js:142
-#: templates/js/translated/modals.js:621
+#: templates/js/translated/modals.js:627
msgid "Cancel"
msgstr ""
#: templates/js/translated/modals.js:83 templates/js/translated/modals.js:141
-#: templates/js/translated/modals.js:688 templates/js/translated/modals.js:996
+#: templates/js/translated/modals.js:694 templates/js/translated/modals.js:1002
#: templates/modals.html:28 templates/modals.html:51
msgid "Submit"
msgstr ""
@@ -8566,47 +8559,47 @@ msgstr ""
msgid "Form Title"
msgstr ""
-#: templates/js/translated/modals.js:403
+#: templates/js/translated/modals.js:421
msgid "Waiting for server..."
msgstr ""
-#: templates/js/translated/modals.js:562
+#: templates/js/translated/modals.js:568
msgid "Show Error Information"
msgstr ""
-#: templates/js/translated/modals.js:620
+#: templates/js/translated/modals.js:626
msgid "Accept"
msgstr ""
-#: templates/js/translated/modals.js:677
+#: templates/js/translated/modals.js:683
msgid "Loading Data"
msgstr ""
-#: templates/js/translated/modals.js:948
+#: templates/js/translated/modals.js:954
msgid "Invalid response from server"
msgstr ""
-#: templates/js/translated/modals.js:948
+#: templates/js/translated/modals.js:954
msgid "Form data missing from server response"
msgstr ""
-#: templates/js/translated/modals.js:960
+#: templates/js/translated/modals.js:966
msgid "Error posting form data"
msgstr ""
-#: templates/js/translated/modals.js:1057
+#: templates/js/translated/modals.js:1063
msgid "JSON response missing form data"
msgstr ""
-#: templates/js/translated/modals.js:1072
+#: templates/js/translated/modals.js:1078
msgid "Error 400: Bad Request"
msgstr ""
-#: templates/js/translated/modals.js:1073
+#: templates/js/translated/modals.js:1079
msgid "Server returned error code 400"
msgstr ""
-#: templates/js/translated/modals.js:1096
+#: templates/js/translated/modals.js:1102
msgid "Error requesting form data"
msgstr ""
@@ -8656,11 +8649,11 @@ msgstr ""
msgid "Mark as read"
msgstr ""
-#: templates/js/translated/notification.js:259
+#: templates/js/translated/notification.js:260
msgid "No unread notifications"
msgstr ""
-#: templates/js/translated/notification.js:300 templates/notifications.html:10
+#: templates/js/translated/notification.js:302 templates/notifications.html:10
msgid "Notifications will load here"
msgstr ""
@@ -8804,7 +8797,7 @@ msgstr ""
msgid "Quantity to receive"
msgstr ""
-#: templates/js/translated/order.js:1225 templates/js/translated/stock.js:2080
+#: templates/js/translated/order.js:1225 templates/js/translated/stock.js:2090
msgid "Stock Status"
msgstr ""
@@ -8828,7 +8821,7 @@ msgstr ""
msgid "Receive Purchase Order Items"
msgstr ""
-#: templates/js/translated/order.js:1602 templates/js/translated/part.js:870
+#: templates/js/translated/order.js:1602 templates/js/translated/part.js:914
msgid "No purchase orders found"
msgstr ""
@@ -8863,7 +8856,7 @@ msgstr ""
#: templates/js/translated/order.js:1937 templates/js/translated/order.js:2139
#: templates/js/translated/order.js:3467 templates/js/translated/order.js:3978
-#: templates/js/translated/part.js:1948 templates/js/translated/part.js:2301
+#: templates/js/translated/part.js:2044 templates/js/translated/part.js:2397
msgid "Unit Price"
msgstr ""
@@ -8873,11 +8866,11 @@ msgid "Total Price"
msgstr ""
#: templates/js/translated/order.js:1993 templates/js/translated/order.js:3525
-#: templates/js/translated/part.js:979
+#: templates/js/translated/part.js:1023
msgid "This line item is overdue"
msgstr ""
-#: templates/js/translated/order.js:2052 templates/js/translated/part.js:1025
+#: templates/js/translated/order.js:2052 templates/js/translated/part.js:1069
msgid "Receive line item"
msgstr ""
@@ -8998,7 +8991,7 @@ msgid "Delete Stock Allocation"
msgstr ""
#: templates/js/translated/order.js:3243 templates/js/translated/order.js:3332
-#: templates/js/translated/stock.js:1535
+#: templates/js/translated/stock.js:1545
msgid "Shipped to customer"
msgstr ""
@@ -9138,165 +9131,209 @@ msgstr ""
msgid "Create Part Variant"
msgstr ""
+#: templates/js/translated/part.js:405
+msgid "Active Part"
+msgstr ""
+
+#: templates/js/translated/part.js:406
+msgid "Part cannot be deleted as it is currently active"
+msgstr ""
+
+#: templates/js/translated/part.js:420
+msgid "Deleting this part cannot be reversed"
+msgstr ""
+
+#: templates/js/translated/part.js:422
+msgid "Any stock items for this part will be deleted"
+msgstr ""
+
#: templates/js/translated/part.js:423
+msgid "This part will be removed from any Bills of Material"
+msgstr ""
+
+#: templates/js/translated/part.js:424
+msgid "All manufacturer and supplier information for this part will be deleted"
+msgstr ""
+
+#: templates/js/translated/part.js:431
+msgid "Delete Part"
+msgstr ""
+
+#: templates/js/translated/part.js:467
msgid "You are subscribed to notifications for this item"
msgstr ""
-#: templates/js/translated/part.js:425
+#: templates/js/translated/part.js:469
msgid "You have subscribed to notifications for this item"
msgstr ""
-#: templates/js/translated/part.js:430
+#: templates/js/translated/part.js:474
msgid "Subscribe to notifications for this item"
msgstr ""
-#: templates/js/translated/part.js:432
+#: templates/js/translated/part.js:476
msgid "You have unsubscribed to notifications for this item"
msgstr ""
-#: templates/js/translated/part.js:449
+#: templates/js/translated/part.js:493
msgid "Validating the BOM will mark each line item as valid"
msgstr ""
-#: templates/js/translated/part.js:459
+#: templates/js/translated/part.js:503
msgid "Validate Bill of Materials"
msgstr ""
-#: templates/js/translated/part.js:462
+#: templates/js/translated/part.js:506
msgid "Validated Bill of Materials"
msgstr ""
-#: templates/js/translated/part.js:487
+#: templates/js/translated/part.js:531
msgid "Copy Bill of Materials"
msgstr ""
-#: templates/js/translated/part.js:513 templates/js/translated/part.js:1397
+#: templates/js/translated/part.js:557 templates/js/translated/part.js:1441
#: templates/js/translated/table_filters.js:452
msgid "Low stock"
msgstr ""
-#: templates/js/translated/part.js:523 templates/js/translated/part.js:1409
+#: templates/js/translated/part.js:567 templates/js/translated/part.js:1453
msgid "No stock available"
msgstr ""
-#: templates/js/translated/part.js:557 templates/js/translated/part.js:642
+#: templates/js/translated/part.js:601 templates/js/translated/part.js:686
msgid "Trackable part"
msgstr ""
-#: templates/js/translated/part.js:561 templates/js/translated/part.js:646
+#: templates/js/translated/part.js:605 templates/js/translated/part.js:690
msgid "Virtual part"
msgstr ""
-#: templates/js/translated/part.js:573
+#: templates/js/translated/part.js:617
msgid "Subscribed part"
msgstr ""
-#: templates/js/translated/part.js:577
+#: templates/js/translated/part.js:621
msgid "Salable part"
msgstr ""
-#: templates/js/translated/part.js:705
+#: templates/js/translated/part.js:749
msgid "No variants found"
msgstr ""
-#: templates/js/translated/part.js:1095
+#: templates/js/translated/part.js:1139
msgid "Delete part relationship"
msgstr ""
-#: templates/js/translated/part.js:1119
+#: templates/js/translated/part.js:1163
msgid "Delete Part Relationship"
msgstr ""
-#: templates/js/translated/part.js:1184 templates/js/translated/part.js:1480
+#: templates/js/translated/part.js:1228 templates/js/translated/part.js:1524
msgid "No parts found"
msgstr ""
-#: templates/js/translated/part.js:1223
+#: templates/js/translated/part.js:1267
msgid "Not available"
msgstr ""
-#: templates/js/translated/part.js:1374
+#: templates/js/translated/part.js:1418
msgid "No category"
msgstr ""
-#: templates/js/translated/part.js:1504 templates/js/translated/part.js:1664
-#: templates/js/translated/stock.js:2238
+#: templates/js/translated/part.js:1548 templates/js/translated/part.js:1760
+#: templates/js/translated/stock.js:2248
msgid "Display as list"
msgstr ""
-#: templates/js/translated/part.js:1520
+#: templates/js/translated/part.js:1564
msgid "Display as grid"
msgstr ""
-#: templates/js/translated/part.js:1683 templates/js/translated/stock.js:2257
+#: templates/js/translated/part.js:1630
+msgid "Set the part category for the selected parts"
+msgstr ""
+
+#: templates/js/translated/part.js:1635
+msgid "Set Part Category"
+msgstr ""
+
+#: templates/js/translated/part.js:1640
+msgid "Select Part Category"
+msgstr ""
+
+#: templates/js/translated/part.js:1653
+msgid "Category is required"
+msgstr ""
+
+#: templates/js/translated/part.js:1779 templates/js/translated/stock.js:2267
msgid "Display as tree"
msgstr ""
-#: templates/js/translated/part.js:1747
+#: templates/js/translated/part.js:1843
msgid "Subscribed category"
msgstr ""
-#: templates/js/translated/part.js:1761 templates/js/translated/stock.js:2301
+#: templates/js/translated/part.js:1857 templates/js/translated/stock.js:2311
msgid "Path"
msgstr ""
-#: templates/js/translated/part.js:1805
+#: templates/js/translated/part.js:1901
msgid "No test templates matching query"
msgstr ""
-#: templates/js/translated/part.js:1856 templates/js/translated/stock.js:1233
+#: templates/js/translated/part.js:1952 templates/js/translated/stock.js:1243
msgid "Edit test result"
msgstr ""
-#: templates/js/translated/part.js:1857 templates/js/translated/stock.js:1234
-#: templates/js/translated/stock.js:1493
+#: templates/js/translated/part.js:1953 templates/js/translated/stock.js:1244
+#: templates/js/translated/stock.js:1503
msgid "Delete test result"
msgstr ""
-#: templates/js/translated/part.js:1863
+#: templates/js/translated/part.js:1959
msgid "This test is defined for a parent part"
msgstr ""
-#: templates/js/translated/part.js:1885
+#: templates/js/translated/part.js:1981
msgid "Edit Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:1899
+#: templates/js/translated/part.js:1995
msgid "Delete Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:1924
+#: templates/js/translated/part.js:2020
#, python-brace-format
msgid "No ${human_name} information found"
msgstr ""
-#: templates/js/translated/part.js:1981
+#: templates/js/translated/part.js:2077
#, python-brace-format
msgid "Edit ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:1982
+#: templates/js/translated/part.js:2078
#, python-brace-format
msgid "Delete ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:2096
+#: templates/js/translated/part.js:2192
msgid "Current Stock"
msgstr ""
-#: templates/js/translated/part.js:2129
+#: templates/js/translated/part.js:2225
msgid "No scheduling information available for this part"
msgstr ""
-#: templates/js/translated/part.js:2155
+#: templates/js/translated/part.js:2251
msgid "Scheduled Stock Quantities"
msgstr ""
-#: templates/js/translated/part.js:2225
+#: templates/js/translated/part.js:2321
msgid "Single Price"
msgstr ""
-#: templates/js/translated/part.js:2244
+#: templates/js/translated/part.js:2340
msgid "Single Price Difference"
msgstr ""
@@ -9378,360 +9415,360 @@ msgstr ""
msgid "Remove results"
msgstr ""
-#: templates/js/translated/stock.js:73
+#: templates/js/translated/stock.js:72
msgid "Serialize Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:101
+#: templates/js/translated/stock.js:100
msgid "Confirm Stock Serialization"
msgstr ""
-#: templates/js/translated/stock.js:110
+#: templates/js/translated/stock.js:109
msgid "Parent stock location"
msgstr ""
-#: templates/js/translated/stock.js:139
+#: templates/js/translated/stock.js:138
msgid "Edit Stock Location"
msgstr ""
-#: templates/js/translated/stock.js:154
+#: templates/js/translated/stock.js:153
msgid "New Stock Location"
msgstr ""
-#: templates/js/translated/stock.js:194
+#: templates/js/translated/stock.js:193
msgid "This part cannot be serialized"
msgstr ""
-#: templates/js/translated/stock.js:233
+#: templates/js/translated/stock.js:232
msgid "Enter initial quantity for this stock item"
msgstr ""
-#: templates/js/translated/stock.js:239
+#: templates/js/translated/stock.js:238
msgid "Enter serial numbers for new stock (or leave blank)"
msgstr ""
-#: templates/js/translated/stock.js:304
+#: templates/js/translated/stock.js:303
msgid "Stock item duplicated"
msgstr ""
-#: templates/js/translated/stock.js:324
+#: templates/js/translated/stock.js:323
msgid "Duplicate Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:344
+#: templates/js/translated/stock.js:343
msgid "Edit Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:394
+#: templates/js/translated/stock.js:393
msgid "Created new stock item"
msgstr ""
-#: templates/js/translated/stock.js:407
+#: templates/js/translated/stock.js:406
msgid "Created multiple stock items"
msgstr ""
-#: templates/js/translated/stock.js:432
+#: templates/js/translated/stock.js:431
msgid "Find Serial Number"
msgstr ""
-#: templates/js/translated/stock.js:436 templates/js/translated/stock.js:437
+#: templates/js/translated/stock.js:435 templates/js/translated/stock.js:436
msgid "Enter serial number"
msgstr ""
-#: templates/js/translated/stock.js:453
+#: templates/js/translated/stock.js:452
msgid "Enter a serial number"
msgstr ""
-#: templates/js/translated/stock.js:473
+#: templates/js/translated/stock.js:472
msgid "No matching serial number"
msgstr ""
-#: templates/js/translated/stock.js:482
+#: templates/js/translated/stock.js:481
msgid "More than one matching result found"
msgstr ""
-#: templates/js/translated/stock.js:605
+#: templates/js/translated/stock.js:604
msgid "Confirm stock assignment"
msgstr ""
-#: templates/js/translated/stock.js:606
+#: templates/js/translated/stock.js:605
msgid "Assign Stock to Customer"
msgstr ""
-#: templates/js/translated/stock.js:683
+#: templates/js/translated/stock.js:682
msgid "Warning: Merge operation cannot be reversed"
msgstr ""
-#: templates/js/translated/stock.js:684
+#: templates/js/translated/stock.js:683
msgid "Some information will be lost when merging stock items"
msgstr ""
-#: templates/js/translated/stock.js:686
+#: templates/js/translated/stock.js:685
msgid "Stock transaction history will be deleted for merged items"
msgstr ""
-#: templates/js/translated/stock.js:687
+#: templates/js/translated/stock.js:686
msgid "Supplier part information will be deleted for merged items"
msgstr ""
-#: templates/js/translated/stock.js:773
+#: templates/js/translated/stock.js:772
msgid "Confirm stock item merge"
msgstr ""
-#: templates/js/translated/stock.js:774
+#: templates/js/translated/stock.js:773
msgid "Merge Stock Items"
msgstr ""
-#: templates/js/translated/stock.js:869
+#: templates/js/translated/stock.js:868
msgid "Transfer Stock"
msgstr ""
-#: templates/js/translated/stock.js:870
+#: templates/js/translated/stock.js:869
msgid "Move"
msgstr ""
-#: templates/js/translated/stock.js:876
+#: templates/js/translated/stock.js:875
msgid "Count Stock"
msgstr ""
-#: templates/js/translated/stock.js:877
+#: templates/js/translated/stock.js:876
msgid "Count"
msgstr ""
-#: templates/js/translated/stock.js:881
+#: templates/js/translated/stock.js:880
msgid "Remove Stock"
msgstr ""
-#: templates/js/translated/stock.js:882
+#: templates/js/translated/stock.js:881
msgid "Take"
msgstr ""
-#: templates/js/translated/stock.js:886
+#: templates/js/translated/stock.js:885
msgid "Add Stock"
msgstr ""
-#: templates/js/translated/stock.js:887 users/models.py:215
+#: templates/js/translated/stock.js:886 users/models.py:215
msgid "Add"
msgstr ""
-#: templates/js/translated/stock.js:891
+#: templates/js/translated/stock.js:890
msgid "Delete Stock"
msgstr ""
-#: templates/js/translated/stock.js:984
+#: templates/js/translated/stock.js:983
msgid "Quantity cannot be adjusted for serialized stock"
msgstr ""
-#: templates/js/translated/stock.js:984
+#: templates/js/translated/stock.js:983
msgid "Specify stock quantity"
msgstr ""
-#: templates/js/translated/stock.js:1024
+#: templates/js/translated/stock.js:1023
msgid "You must select at least one available stock item"
msgstr ""
-#: templates/js/translated/stock.js:1047
+#: templates/js/translated/stock.js:1046
msgid "Confirm stock adjustment"
msgstr ""
-#: templates/js/translated/stock.js:1172
+#: templates/js/translated/stock.js:1182
msgid "PASS"
msgstr ""
-#: templates/js/translated/stock.js:1174
+#: templates/js/translated/stock.js:1184
msgid "FAIL"
msgstr ""
-#: templates/js/translated/stock.js:1179
+#: templates/js/translated/stock.js:1189
msgid "NO RESULT"
msgstr ""
-#: templates/js/translated/stock.js:1226
+#: templates/js/translated/stock.js:1236
msgid "Pass test"
msgstr ""
-#: templates/js/translated/stock.js:1229
+#: templates/js/translated/stock.js:1239
msgid "Add test result"
msgstr ""
-#: templates/js/translated/stock.js:1255
+#: templates/js/translated/stock.js:1265
msgid "No test results found"
msgstr ""
-#: templates/js/translated/stock.js:1311
+#: templates/js/translated/stock.js:1321
msgid "Test Date"
msgstr ""
-#: templates/js/translated/stock.js:1476
+#: templates/js/translated/stock.js:1486
msgid "Edit Test Result"
msgstr ""
-#: templates/js/translated/stock.js:1498
+#: templates/js/translated/stock.js:1508
msgid "Delete Test Result"
msgstr ""
-#: templates/js/translated/stock.js:1527
+#: templates/js/translated/stock.js:1537
msgid "In production"
msgstr ""
-#: templates/js/translated/stock.js:1531
+#: templates/js/translated/stock.js:1541
msgid "Installed in Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:1539
+#: templates/js/translated/stock.js:1549
msgid "Assigned to Sales Order"
msgstr ""
-#: templates/js/translated/stock.js:1545
+#: templates/js/translated/stock.js:1555
msgid "No stock location set"
msgstr ""
-#: templates/js/translated/stock.js:1712
+#: templates/js/translated/stock.js:1722
msgid "Stock item is in production"
msgstr ""
-#: templates/js/translated/stock.js:1717
+#: templates/js/translated/stock.js:1727
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:1720
+#: templates/js/translated/stock.js:1730
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:1723
+#: templates/js/translated/stock.js:1733
msgid "Serialized stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:1725
+#: templates/js/translated/stock.js:1735
msgid "Stock item has been fully allocated"
msgstr ""
-#: templates/js/translated/stock.js:1727
+#: templates/js/translated/stock.js:1737
msgid "Stock item has been partially allocated"
msgstr ""
-#: templates/js/translated/stock.js:1730
+#: templates/js/translated/stock.js:1740
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:1734
+#: templates/js/translated/stock.js:1744
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:1736
+#: templates/js/translated/stock.js:1746
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:1743
+#: templates/js/translated/stock.js:1753
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:1745
+#: templates/js/translated/stock.js:1755
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:1747
+#: templates/js/translated/stock.js:1757
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:1751
+#: templates/js/translated/stock.js:1761
#: templates/js/translated/table_filters.js:188
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:1802
+#: templates/js/translated/stock.js:1812
msgid "Stocktake"
msgstr ""
-#: templates/js/translated/stock.js:1884
+#: templates/js/translated/stock.js:1894
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:1922
+#: templates/js/translated/stock.js:1932
msgid "No stock items matching query"
msgstr ""
-#: templates/js/translated/stock.js:2095
+#: templates/js/translated/stock.js:2105
msgid "Set Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:2109
+#: templates/js/translated/stock.js:2119
msgid "Select Status Code"
msgstr ""
-#: templates/js/translated/stock.js:2110
+#: templates/js/translated/stock.js:2120
msgid "Status code must be selected"
msgstr ""
-#: templates/js/translated/stock.js:2365
+#: templates/js/translated/stock.js:2375
msgid "Details"
msgstr ""
-#: templates/js/translated/stock.js:2381
+#: templates/js/translated/stock.js:2391
msgid "Part information unavailable"
msgstr ""
-#: templates/js/translated/stock.js:2403
+#: templates/js/translated/stock.js:2413
msgid "Location no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2422
+#: templates/js/translated/stock.js:2432
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2441
+#: templates/js/translated/stock.js:2451
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2459
+#: templates/js/translated/stock.js:2469
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2482
+#: templates/js/translated/stock.js:2492
msgid "Added"
msgstr ""
-#: templates/js/translated/stock.js:2490
+#: templates/js/translated/stock.js:2500
msgid "Removed"
msgstr ""
-#: templates/js/translated/stock.js:2566
+#: templates/js/translated/stock.js:2576
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:2617 templates/js/translated/stock.js:2653
+#: templates/js/translated/stock.js:2627 templates/js/translated/stock.js:2663
msgid "Uninstall Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:2666
+#: templates/js/translated/stock.js:2676
msgid "Select stock item to uninstall"
msgstr ""
-#: templates/js/translated/stock.js:2687
+#: templates/js/translated/stock.js:2697
msgid "Install another stock item into this item"
msgstr ""
-#: templates/js/translated/stock.js:2688
+#: templates/js/translated/stock.js:2698
msgid "Stock items can only be installed if they meet the following criteria"
msgstr ""
-#: templates/js/translated/stock.js:2690
+#: templates/js/translated/stock.js:2700
msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:2691
+#: templates/js/translated/stock.js:2701
msgid "The Stock Item is currently available in stock"
msgstr ""
-#: templates/js/translated/stock.js:2692
+#: templates/js/translated/stock.js:2702
msgid "The Stock Item is not already installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:2693
+#: templates/js/translated/stock.js:2703
msgid "The Stock Item is tracked by either a batch code or serial number"
msgstr ""
-#: templates/js/translated/stock.js:2706
+#: templates/js/translated/stock.js:2716
msgid "Select part to install"
msgstr ""
diff --git a/InvenTree/locale/pt_br/LC_MESSAGES/django.po b/InvenTree/locale/pt_br/LC_MESSAGES/django.po
index a37441586b..14b20671e3 100644
--- a/InvenTree/locale/pt_br/LC_MESSAGES/django.po
+++ b/InvenTree/locale/pt_br/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-06-03 10:21+0000\n"
+"POT-Creation-Date: 2022-06-06 11:28+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
@@ -30,48 +30,39 @@ msgstr ""
msgid "Enter date"
msgstr ""
-#: InvenTree/forms.py:117 templates/account/email_confirm.html:20
-#: templates/js/translated/forms.js:630
-msgid "Confirm"
-msgstr ""
-
-#: InvenTree/forms.py:134
+#: InvenTree/forms.py:117
msgid "Confirm delete"
msgstr ""
-#: InvenTree/forms.py:135
+#: InvenTree/forms.py:118
msgid "Confirm item deletion"
msgstr ""
-#: InvenTree/forms.py:167
+#: InvenTree/forms.py:150
msgid "Enter password"
msgstr ""
-#: InvenTree/forms.py:168
+#: InvenTree/forms.py:151
msgid "Enter new password"
msgstr ""
-#: InvenTree/forms.py:175
+#: InvenTree/forms.py:158
msgid "Confirm password"
msgstr ""
-#: InvenTree/forms.py:176
+#: InvenTree/forms.py:159
msgid "Confirm new password"
msgstr ""
-#: InvenTree/forms.py:213
-msgid "Select Category"
-msgstr ""
-
-#: InvenTree/forms.py:234
+#: InvenTree/forms.py:184
msgid "Email (again)"
msgstr ""
-#: InvenTree/forms.py:238
+#: InvenTree/forms.py:188
msgid "Email address confirmation"
msgstr ""
-#: InvenTree/forms.py:259
+#: InvenTree/forms.py:209
msgid "You must type the same email each time."
msgstr ""
@@ -80,7 +71,7 @@ msgstr ""
msgid "Duplicate serial: {sn}"
msgstr ""
-#: InvenTree/helpers.py:409 order/models.py:365 order/models.py:517
+#: InvenTree/helpers.py:409 order/models.py:369 order/models.py:521
msgid "Invalid quantity provided"
msgstr ""
@@ -117,114 +108,113 @@ msgstr ""
msgid "Number of unique serial numbers ({s}) must match quantity ({q})"
msgstr ""
-#: InvenTree/models.py:174
+#: InvenTree/models.py:178
msgid "Missing file"
msgstr ""
-#: InvenTree/models.py:175
+#: InvenTree/models.py:179
msgid "Missing external link"
msgstr ""
-#: InvenTree/models.py:187 stock/models.py:2087
+#: InvenTree/models.py:191 stock/models.py:2091
#: templates/js/translated/attachment.js:101
#: templates/js/translated/attachment.js:198
msgid "Attachment"
msgstr ""
-#: InvenTree/models.py:188
+#: InvenTree/models.py:192
msgid "Select file to attach"
msgstr ""
-#: InvenTree/models.py:194 company/models.py:123 company/models.py:272
-#: company/models.py:506 order/models.py:135 order/models.py:1235
+#: InvenTree/models.py:198 company/models.py:123 company/models.py:272
+#: company/models.py:506 order/models.py:135 order/models.py:1239
#: part/models.py:795
#: report/templates/report/inventree_build_order_base.html:165
#: templates/js/translated/company.js:655
#: templates/js/translated/company.js:946 templates/js/translated/order.js:2676
-#: templates/js/translated/part.js:1441
+#: templates/js/translated/part.js:1485
msgid "Link"
msgstr ""
-#: InvenTree/models.py:195 build/models.py:320 part/models.py:796
+#: InvenTree/models.py:199 build/models.py:320 part/models.py:796
#: stock/models.py:642
msgid "Link to external URL"
msgstr ""
-#: InvenTree/models.py:198 templates/js/translated/attachment.js:102
+#: InvenTree/models.py:202 templates/js/translated/attachment.js:102
#: templates/js/translated/attachment.js:242
msgid "Comment"
msgstr ""
-#: InvenTree/models.py:198
+#: InvenTree/models.py:202
msgid "File comment"
msgstr ""
-#: InvenTree/models.py:204 InvenTree/models.py:205 common/models.py:1499
-#: common/models.py:1500 common/models.py:1728 common/models.py:1729
-#: common/models.py:1991 common/models.py:1992 part/models.py:2153
-#: part/models.py:2173 plugin/models.py:238 plugin/models.py:239
+#: InvenTree/models.py:208 InvenTree/models.py:209 common/models.py:1506
+#: common/models.py:1507 common/models.py:1735 common/models.py:1736
+#: common/models.py:1998 common/models.py:1999 part/models.py:2141
+#: part/models.py:2161 plugin/models.py:238 plugin/models.py:239
#: report/templates/report/inventree_test_report_base.html:96
#: templates/js/translated/stock.js:2513
msgid "User"
msgstr ""
-#: InvenTree/models.py:208
+#: InvenTree/models.py:212
msgid "upload date"
msgstr ""
-#: InvenTree/models.py:230
+#: InvenTree/models.py:234
msgid "Filename must not be empty"
msgstr ""
-#: InvenTree/models.py:253
+#: InvenTree/models.py:257
msgid "Invalid attachment directory"
msgstr ""
-#: InvenTree/models.py:263
+#: InvenTree/models.py:267
#, python-brace-format
msgid "Filename contains illegal character '{c}'"
msgstr ""
-#: InvenTree/models.py:266
+#: InvenTree/models.py:270
msgid "Filename missing extension"
msgstr ""
-#: InvenTree/models.py:273
+#: InvenTree/models.py:277
msgid "Attachment with this filename already exists"
msgstr ""
-#: InvenTree/models.py:280
+#: InvenTree/models.py:284
msgid "Error renaming file"
msgstr ""
-#: InvenTree/models.py:314
+#: InvenTree/models.py:318
msgid "Invalid choice"
msgstr ""
-#: InvenTree/models.py:333 InvenTree/models.py:334 common/models.py:1714
+#: InvenTree/models.py:337 InvenTree/models.py:338 common/models.py:1721
#: company/models.py:354 label/models.py:101 part/models.py:739
-#: part/models.py:2331 plugin/models.py:93 report/models.py:151
+#: part/models.py:2319 plugin/models.py:93 report/models.py:151
#: templates/InvenTree/notifications/notifications.html:84
#: templates/InvenTree/settings/mixins/urls.html:13
#: templates/InvenTree/settings/plugin.html:49
#: templates/InvenTree/settings/plugin.html:132
#: templates/InvenTree/settings/plugin_settings.html:23
-#: templates/InvenTree/settings/settings.html:327
+#: templates/InvenTree/settings/settings.html:346
#: templates/js/translated/company.js:539
-#: templates/js/translated/company.js:757 templates/js/translated/part.js:615
-#: templates/js/translated/part.js:767 templates/js/translated/part.js:1736
+#: templates/js/translated/company.js:757 templates/js/translated/part.js:659
+#: templates/js/translated/part.js:811 templates/js/translated/part.js:1832
#: templates/js/translated/stock.js:2283
msgid "Name"
msgstr ""
-#: InvenTree/models.py:340 build/models.py:197
+#: InvenTree/models.py:344 build/models.py:197
#: build/templates/build/detail.html:24 company/models.py:278
#: company/models.py:512 company/templates/company/company_base.html:71
#: company/templates/company/manufacturer_part.html:75
#: company/templates/company/supplier_part.html:73 label/models.py:108
#: order/models.py:133 part/models.py:762 part/templates/part/category.html:74
-#: part/templates/part/part_base.html:167
-#: part/templates/part/set_category.html:14 report/models.py:164
+#: part/templates/part/part_base.html:167 report/models.py:164
#: report/models.py:509 report/models.py:550
#: report/templates/report/inventree_build_order_base.html:118
#: stock/templates/stock/location.html:103
@@ -234,71 +224,79 @@ msgstr ""
#: templates/js/translated/company.js:666
#: templates/js/translated/company.js:957 templates/js/translated/order.js:1656
#: templates/js/translated/order.js:1888 templates/js/translated/order.js:2476
-#: templates/js/translated/part.js:674 templates/js/translated/part.js:1082
-#: templates/js/translated/part.js:1355 templates/js/translated/part.js:1755
-#: templates/js/translated/part.js:1824 templates/js/translated/stock.js:1676
+#: templates/js/translated/part.js:718 templates/js/translated/part.js:1126
+#: templates/js/translated/part.js:1399 templates/js/translated/part.js:1851
+#: templates/js/translated/part.js:1920 templates/js/translated/stock.js:1676
#: templates/js/translated/stock.js:2295 templates/js/translated/stock.js:2350
msgid "Description"
msgstr ""
-#: InvenTree/models.py:341
+#: InvenTree/models.py:345
msgid "Description (optional)"
msgstr ""
-#: InvenTree/models.py:349
+#: InvenTree/models.py:353
msgid "parent"
msgstr ""
-#: InvenTree/serializers.py:52 part/models.py:2650
+#: InvenTree/models.py:466
+msgid "Server Error"
+msgstr ""
+
+#: InvenTree/models.py:467
+msgid "An error has been logged by the server."
+msgstr ""
+
+#: InvenTree/serializers.py:52 part/models.py:2640
msgid "Must be a valid number"
msgstr ""
-#: InvenTree/serializers.py:271
+#: InvenTree/serializers.py:263
msgid "Filename"
msgstr ""
-#: InvenTree/serializers.py:306
+#: InvenTree/serializers.py:298
msgid "Invalid value"
msgstr ""
-#: InvenTree/serializers.py:328
+#: InvenTree/serializers.py:320
msgid "Data File"
msgstr ""
-#: InvenTree/serializers.py:329
+#: InvenTree/serializers.py:321
msgid "Select data file for upload"
msgstr ""
-#: InvenTree/serializers.py:350
+#: InvenTree/serializers.py:342
msgid "Unsupported file type"
msgstr ""
-#: InvenTree/serializers.py:356
+#: InvenTree/serializers.py:348
msgid "File is too large"
msgstr ""
-#: InvenTree/serializers.py:377
+#: InvenTree/serializers.py:369
msgid "No columns found in file"
msgstr ""
-#: InvenTree/serializers.py:380
+#: InvenTree/serializers.py:372
msgid "No data rows found in file"
msgstr ""
-#: InvenTree/serializers.py:503
+#: InvenTree/serializers.py:495
msgid "No data rows provided"
msgstr ""
-#: InvenTree/serializers.py:506
+#: InvenTree/serializers.py:498
msgid "No data columns supplied"
msgstr ""
-#: InvenTree/serializers.py:583
+#: InvenTree/serializers.py:575
#, python-brace-format
msgid "Missing required column: '{name}'"
msgstr ""
-#: InvenTree/serializers.py:592
+#: InvenTree/serializers.py:584
#, python-brace-format
msgid "Duplicate column: '{col}'"
msgstr ""
@@ -441,7 +439,7 @@ msgstr ""
msgid "Returned"
msgstr ""
-#: InvenTree/status_codes.py:141 order/models.py:1114
+#: InvenTree/status_codes.py:141 order/models.py:1118
#: templates/js/translated/order.js:3264 templates/js/translated/order.js:3607
msgid "Shipped"
msgstr ""
@@ -598,27 +596,27 @@ msgstr ""
msgid "Invalid value for overage"
msgstr ""
-#: InvenTree/views.py:522
+#: InvenTree/views.py:521
msgid "Delete Item"
msgstr ""
-#: InvenTree/views.py:571
+#: InvenTree/views.py:570
msgid "Check box to confirm item deletion"
msgstr ""
-#: InvenTree/views.py:586 templates/InvenTree/settings/user.html:22
+#: InvenTree/views.py:585 templates/InvenTree/settings/user.html:22
msgid "Edit User Information"
msgstr ""
-#: InvenTree/views.py:598 templates/InvenTree/settings/user.html:19
+#: InvenTree/views.py:597 templates/InvenTree/settings/user.html:19
msgid "Set Password"
msgstr ""
-#: InvenTree/views.py:618
+#: InvenTree/views.py:617
msgid "Password fields must match"
msgstr ""
-#: InvenTree/views.py:842 templates/navbar.html:152
+#: InvenTree/views.py:807 templates/navbar.html:152
msgid "System Information"
msgstr ""
@@ -629,6 +627,7 @@ msgstr ""
#: build/models.py:131 build/templates/build/build_base.html:9
#: build/templates/build/build_base.html:27
#: report/templates/report/inventree_build_order_base.html:106
+#: templates/email/overdue_build_order.html:15
#: templates/js/translated/build.js:727
msgid "Build Order"
msgstr ""
@@ -647,8 +646,8 @@ msgstr ""
msgid "Build Order Reference"
msgstr ""
-#: build/models.py:189 order/models.py:288 order/models.py:638
-#: order/models.py:916 part/models.py:2568
+#: build/models.py:189 order/models.py:292 order/models.py:642
+#: order/models.py:920 part/models.py:2558
#: part/templates/part/upload_bom.html:54
#: report/templates/report/inventree_po_report.html:91
#: report/templates/report/inventree_so_report.html:92
@@ -674,13 +673,12 @@ msgstr ""
#: build/models.py:215 build/templates/build/build_base.html:77
#: build/templates/build/detail.html:29 company/models.py:647
-#: order/models.py:1012 order/models.py:1103 part/models.py:336
-#: part/models.py:2099 part/models.py:2114 part/models.py:2133
-#: part/models.py:2151 part/models.py:2250 part/models.py:2370
-#: part/models.py:2458 part/models.py:2543 part/models.py:2819
-#: part/serializers.py:793 part/templates/part/part_app_base.html:8
+#: order/models.py:1016 order/models.py:1107 part/models.py:336
+#: part/models.py:2087 part/models.py:2102 part/models.py:2121
+#: part/models.py:2139 part/models.py:2238 part/models.py:2358
+#: part/models.py:2448 part/models.py:2533 part/models.py:2809
+#: part/serializers.py:795 part/templates/part/part_app_base.html:8
#: part/templates/part/part_pricing.html:12
-#: part/templates/part/set_category.html:13
#: part/templates/part/upload_bom.html:52
#: report/templates/report/inventree_build_order_base.html:110
#: report/templates/report/inventree_po_report.html:89
@@ -688,6 +686,7 @@ msgstr ""
#: templates/InvenTree/search.html:80
#: templates/email/build_order_required_stock.html:17
#: templates/email/low_stock_notification.html:16
+#: templates/email/overdue_build_order.html:16
#: templates/js/translated/barcode.js:435 templates/js/translated/bom.js:552
#: templates/js/translated/bom.js:687 templates/js/translated/bom.js:805
#: templates/js/translated/build.js:1153 templates/js/translated/build.js:1647
@@ -699,8 +698,8 @@ msgstr ""
#: templates/js/translated/order.js:883 templates/js/translated/order.js:1315
#: templates/js/translated/order.js:1873 templates/js/translated/order.js:2819
#: templates/js/translated/order.js:3217 templates/js/translated/order.js:3432
-#: templates/js/translated/part.js:1067 templates/js/translated/part.js:1137
-#: templates/js/translated/part.js:1333 templates/js/translated/stock.js:531
+#: templates/js/translated/part.js:1111 templates/js/translated/part.js:1181
+#: templates/js/translated/part.js:1377 templates/js/translated/stock.js:531
#: templates/js/translated/stock.js:696 templates/js/translated/stock.js:903
#: templates/js/translated/stock.js:1633 templates/js/translated/stock.js:2376
#: templates/js/translated/stock.js:2571 templates/js/translated/stock.js:2705
@@ -774,7 +773,7 @@ msgstr ""
msgid "Creation Date"
msgstr ""
-#: build/models.py:286 order/models.py:660
+#: build/models.py:286 order/models.py:664
msgid "Target completion date"
msgstr ""
@@ -782,7 +781,7 @@ msgstr ""
msgid "Target date for build completion. Build will be overdue after this date."
msgstr ""
-#: build/models.py:290 order/models.py:331
+#: build/models.py:290 order/models.py:335
#: templates/js/translated/build.js:2558
msgid "Completion Date"
msgstr ""
@@ -823,14 +822,14 @@ msgstr ""
#: build/models.py:324 build/serializers.py:374
#: build/templates/build/sidebar.html:21 company/models.py:134
#: company/models.py:519 company/templates/company/sidebar.html:25
-#: order/models.py:155 order/models.py:918 order/models.py:1213
+#: order/models.py:155 order/models.py:922 order/models.py:1217
#: order/templates/order/po_sidebar.html:11
#: order/templates/order/so_sidebar.html:17 part/models.py:921
#: part/templates/part/part_sidebar.html:59
#: report/templates/report/inventree_build_order_base.html:173
-#: stock/models.py:713 stock/models.py:1985 stock/models.py:2093
+#: stock/models.py:713 stock/models.py:1989 stock/models.py:2097
#: stock/serializers.py:315 stock/serializers.py:444 stock/serializers.py:486
-#: stock/serializers.py:772 stock/serializers.py:871 stock/serializers.py:1003
+#: stock/serializers.py:759 stock/serializers.py:858 stock/serializers.py:990
#: stock/templates/stock/stock_sidebar.html:25
#: templates/js/translated/barcode.js:100 templates/js/translated/bom.js:1044
#: templates/js/translated/company.js:962 templates/js/translated/order.js:2040
@@ -869,7 +868,7 @@ msgstr ""
msgid "Stock item is over-allocated"
msgstr ""
-#: build/models.py:1133 order/models.py:1372
+#: build/models.py:1133 order/models.py:1376
msgid "Allocation quantity must be greater than zero"
msgstr ""
@@ -891,9 +890,9 @@ msgstr ""
msgid "Build to allocate parts"
msgstr ""
-#: build/models.py:1282 build/serializers.py:603 order/serializers.py:994
-#: order/serializers.py:1015 stock/serializers.py:382 stock/serializers.py:703
-#: stock/serializers.py:829 stock/templates/stock/item_base.html:10
+#: build/models.py:1282 build/serializers.py:603 order/serializers.py:996
+#: order/serializers.py:1017 stock/serializers.py:382 stock/serializers.py:690
+#: stock/serializers.py:816 stock/templates/stock/item_base.html:10
#: stock/templates/stock/item_base.html:23
#: stock/templates/stock/item_base.html:199
#: templates/js/translated/build.js:738 templates/js/translated/build.js:743
@@ -912,11 +911,11 @@ msgstr ""
#: build/models.py:1295 build/serializers.py:183
#: build/templates/build/build_base.html:82
-#: build/templates/build/detail.html:34 common/models.py:1536
+#: build/templates/build/detail.html:34 common/models.py:1543
#: company/forms.py:36 company/templates/company/supplier_part.html:258
-#: order/models.py:909 order/models.py:1412 order/serializers.py:1134
-#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:91
-#: part/forms.py:106 part/forms.py:121 part/models.py:2559
+#: order/models.py:913 order/models.py:1416 order/serializers.py:1136
+#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:59
+#: part/forms.py:74 part/forms.py:89 part/models.py:2549
#: part/templates/part/detail.html:935 part/templates/part/detail.html:1021
#: part/templates/part/part_pricing.html:16
#: part/templates/part/upload_bom.html:53
@@ -938,9 +937,9 @@ msgstr ""
#: templates/js/translated/order.js:2821 templates/js/translated/order.js:3143
#: templates/js/translated/order.js:3231 templates/js/translated/order.js:3320
#: templates/js/translated/order.js:3454 templates/js/translated/order.js:3965
-#: templates/js/translated/part.js:967 templates/js/translated/part.js:1969
-#: templates/js/translated/part.js:2200 templates/js/translated/part.js:2234
-#: templates/js/translated/part.js:2312 templates/js/translated/stock.js:403
+#: templates/js/translated/part.js:1011 templates/js/translated/part.js:2065
+#: templates/js/translated/part.js:2296 templates/js/translated/part.js:2330
+#: templates/js/translated/part.js:2408 templates/js/translated/stock.js:403
#: templates/js/translated/stock.js:557 templates/js/translated/stock.js:727
#: templates/js/translated/stock.js:2498 templates/js/translated/stock.js:2583
msgid "Quantity"
@@ -983,9 +982,9 @@ msgstr ""
msgid "Enter quantity for build output"
msgstr ""
-#: build/serializers.py:198 build/serializers.py:623 order/models.py:363
-#: order/serializers.py:280 order/serializers.py:435 part/serializers.py:512
-#: part/serializers.py:956 stock/models.py:470 stock/models.py:1239
+#: build/serializers.py:198 build/serializers.py:623 order/models.py:367
+#: order/serializers.py:280 order/serializers.py:435 part/serializers.py:514
+#: part/serializers.py:958 stock/models.py:470 stock/models.py:1239
#: stock/serializers.py:288
msgid "Quantity must be greater than zero"
msgstr ""
@@ -998,7 +997,7 @@ msgstr ""
msgid "Integer quantity required, as the bill of materials contains trackable parts"
msgstr ""
-#: build/serializers.py:222 order/serializers.py:448 order/serializers.py:1138
+#: build/serializers.py:222 order/serializers.py:448 order/serializers.py:1140
#: stock/serializers.py:297 templates/js/translated/order.js:1186
#: templates/js/translated/stock.js:238 templates/js/translated/stock.js:404
msgid "Serial Numbers"
@@ -1026,7 +1025,7 @@ msgstr ""
#: build/serializers.py:356 order/serializers.py:421 order/serializers.py:525
#: stock/serializers.py:308 stock/serializers.py:439 stock/serializers.py:481
-#: stock/serializers.py:864 stock/serializers.py:1097
+#: stock/serializers.py:851 stock/serializers.py:1084
#: stock/templates/stock/item_base.html:390
#: templates/js/translated/barcode.js:436
#: templates/js/translated/barcode.js:618 templates/js/translated/build.js:750
@@ -1044,7 +1043,7 @@ msgid "Location for completed build outputs"
msgstr ""
#: build/serializers.py:363 build/templates/build/build_base.html:142
-#: build/templates/build/detail.html:62 order/models.py:654
+#: build/templates/build/detail.html:62 order/models.py:658
#: order/serializers.py:458 stock/templates/stock/item_base.html:423
#: templates/js/translated/barcode.js:182 templates/js/translated/build.js:2510
#: templates/js/translated/order.js:1320 templates/js/translated/order.js:1660
@@ -1109,8 +1108,8 @@ msgstr ""
msgid "No build outputs have been created for this build order"
msgstr ""
-#: build/serializers.py:535 build/serializers.py:580 part/models.py:2677
-#: part/models.py:2811
+#: build/serializers.py:535 build/serializers.py:580 part/models.py:2667
+#: part/models.py:2801
msgid "BOM Item"
msgstr ""
@@ -1126,11 +1125,11 @@ msgstr ""
msgid "bom_item.part must point to the same part as the build order"
msgstr ""
-#: build/serializers.py:609 stock/serializers.py:716
+#: build/serializers.py:609 stock/serializers.py:703
msgid "Item must be in stock"
msgstr ""
-#: build/serializers.py:667 order/serializers.py:1052
+#: build/serializers.py:667 order/serializers.py:1054
#, python-brace-format
msgid "Available quantity ({q}) exceeded"
msgstr ""
@@ -1147,7 +1146,7 @@ msgstr ""
msgid "This stock item has already been allocated to this build output"
msgstr ""
-#: build/serializers.py:708 order/serializers.py:1298
+#: build/serializers.py:708 order/serializers.py:1300
msgid "Allocation items must be provided"
msgstr ""
@@ -1179,10 +1178,19 @@ msgstr ""
msgid "Allow allocation of substitute parts"
msgstr ""
-#: build/tasks.py:96
+#: build/tasks.py:100
msgid "Stock required for build order"
msgstr ""
+#: build/tasks.py:118
+msgid "Overdue Build Order"
+msgstr ""
+
+#: build/tasks.py:123
+#, python-brace-format
+msgid "Build order {bo} is now overdue"
+msgstr ""
+
#: build/templates/build/build_base.html:39
#: order/templates/order/order_base.html:28
#: order/templates/order/sales_order_base.html:38
@@ -1245,13 +1253,13 @@ msgid "Stock has not been fully allocated to this Build Order"
msgstr ""
#: build/templates/build/build_base.html:151
-#: build/templates/build/detail.html:131 order/models.py:922
+#: build/templates/build/detail.html:131 order/models.py:926
#: order/templates/order/order_base.html:162
#: order/templates/order/sales_order_base.html:164
#: report/templates/report/inventree_build_order_base.html:126
#: templates/js/translated/build.js:2550 templates/js/translated/order.js:1677
#: templates/js/translated/order.js:1987 templates/js/translated/order.js:2497
-#: templates/js/translated/order.js:3517 templates/js/translated/part.js:971
+#: templates/js/translated/order.js:3517 templates/js/translated/part.js:1015
msgid "Target Date"
msgstr ""
@@ -1278,13 +1286,14 @@ msgid "Completed"
msgstr ""
#: build/templates/build/build_base.html:176
-#: build/templates/build/detail.html:94 order/models.py:1100
-#: order/models.py:1185 order/models.py:1320
+#: build/templates/build/detail.html:94 order/models.py:1104
+#: order/models.py:1189 order/models.py:1324
#: order/templates/order/sales_order_base.html:9
#: order/templates/order/sales_order_base.html:28
#: report/templates/report/inventree_build_order_base.html:136
#: report/templates/report/inventree_so_report.html:77
#: stock/templates/stock/item_base.html:370
+#: templates/email/overdue_sales_order.html:15
#: templates/js/translated/order.js:2436
msgid "Sales Order"
msgstr ""
@@ -1320,7 +1329,7 @@ msgstr ""
msgid "Stock can be taken from any available location."
msgstr ""
-#: build/templates/build/detail.html:49 order/models.py:1034
+#: build/templates/build/detail.html:49 order/models.py:1038
#: templates/js/translated/order.js:1321 templates/js/translated/order.js:2029
msgid "Destination"
msgstr ""
@@ -1717,7 +1726,7 @@ msgstr ""
msgid "Copy category parameter templates when creating a part"
msgstr ""
-#: common/models.py:820 part/models.py:2372 report/models.py:157
+#: common/models.py:820 part/models.py:2360 report/models.py:157
#: templates/js/translated/table_filters.js:38
#: templates/js/translated/table_filters.js:444
msgid "Template"
@@ -1881,7 +1890,7 @@ msgid "Default page size for PDF reports"
msgstr ""
#: common/models.py:968
-msgid "Test Reports"
+msgid "Enable Test Reports"
msgstr ""
#: common/models.py:969
@@ -1889,568 +1898,576 @@ msgid "Enable generation of test reports"
msgstr ""
#: common/models.py:975
-msgid "Batch Code Template"
+msgid "Attach Test Reports"
msgstr ""
#: common/models.py:976
-msgid "Template for generating default batch codes for stock items"
-msgstr ""
-
-#: common/models.py:981
-msgid "Stock Expiry"
+msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item"
msgstr ""
#: common/models.py:982
-msgid "Enable stock expiry functionality"
+msgid "Batch Code Template"
+msgstr ""
+
+#: common/models.py:983
+msgid "Template for generating default batch codes for stock items"
msgstr ""
#: common/models.py:988
-msgid "Sell Expired Stock"
+msgid "Stock Expiry"
msgstr ""
#: common/models.py:989
-msgid "Allow sale of expired stock"
+msgid "Enable stock expiry functionality"
msgstr ""
#: common/models.py:995
-msgid "Stock Stale Time"
+msgid "Sell Expired Stock"
msgstr ""
#: common/models.py:996
-msgid "Number of days stock items are considered stale before expiring"
+msgid "Allow sale of expired stock"
msgstr ""
-#: common/models.py:998
-msgid "days"
+#: common/models.py:1002
+msgid "Stock Stale Time"
msgstr ""
#: common/models.py:1003
-msgid "Build Expired Stock"
+msgid "Number of days stock items are considered stale before expiring"
msgstr ""
-#: common/models.py:1004
-msgid "Allow building with expired stock"
+#: common/models.py:1005
+msgid "days"
msgstr ""
#: common/models.py:1010
-msgid "Stock Ownership Control"
+msgid "Build Expired Stock"
msgstr ""
#: common/models.py:1011
-msgid "Enable ownership control over stock locations and items"
+msgid "Allow building with expired stock"
msgstr ""
#: common/models.py:1017
-msgid "Build Order Reference Prefix"
+msgid "Stock Ownership Control"
msgstr ""
#: common/models.py:1018
-msgid "Prefix value for build order reference"
-msgstr ""
-
-#: common/models.py:1023
-msgid "Build Order Reference Regex"
+msgid "Enable ownership control over stock locations and items"
msgstr ""
#: common/models.py:1024
+msgid "Build Order Reference Prefix"
+msgstr ""
+
+#: common/models.py:1025
+msgid "Prefix value for build order reference"
+msgstr ""
+
+#: common/models.py:1030
+msgid "Build Order Reference Regex"
+msgstr ""
+
+#: common/models.py:1031
msgid "Regular expression pattern for matching build order reference"
msgstr ""
-#: common/models.py:1028
+#: common/models.py:1035
msgid "Sales Order Reference Prefix"
msgstr ""
-#: common/models.py:1029
+#: common/models.py:1036
msgid "Prefix value for sales order reference"
msgstr ""
-#: common/models.py:1034
+#: common/models.py:1041
msgid "Sales Order Default Shipment"
msgstr ""
-#: common/models.py:1035
+#: common/models.py:1042
msgid "Enable creation of default shipment with sales orders"
msgstr ""
-#: common/models.py:1041
+#: common/models.py:1048
msgid "Purchase Order Reference Prefix"
msgstr ""
-#: common/models.py:1042
+#: common/models.py:1049
msgid "Prefix value for purchase order reference"
msgstr ""
-#: common/models.py:1048
+#: common/models.py:1055
msgid "Enable password forgot"
msgstr ""
-#: common/models.py:1049
+#: common/models.py:1056
msgid "Enable password forgot function on the login pages"
msgstr ""
-#: common/models.py:1055
+#: common/models.py:1062
msgid "Enable registration"
msgstr ""
-#: common/models.py:1056
+#: common/models.py:1063
msgid "Enable self-registration for users on the login pages"
msgstr ""
-#: common/models.py:1062
+#: common/models.py:1069
msgid "Enable SSO"
msgstr ""
-#: common/models.py:1063
+#: common/models.py:1070
msgid "Enable SSO on the login pages"
msgstr ""
-#: common/models.py:1069
+#: common/models.py:1076
msgid "Email required"
msgstr ""
-#: common/models.py:1070
+#: common/models.py:1077
msgid "Require user to supply mail on signup"
msgstr ""
-#: common/models.py:1076
+#: common/models.py:1083
msgid "Auto-fill SSO users"
msgstr ""
-#: common/models.py:1077
+#: common/models.py:1084
msgid "Automatically fill out user-details from SSO account-data"
msgstr ""
-#: common/models.py:1083
+#: common/models.py:1090
msgid "Mail twice"
msgstr ""
-#: common/models.py:1084
+#: common/models.py:1091
msgid "On signup ask users twice for their mail"
msgstr ""
-#: common/models.py:1090
+#: common/models.py:1097
msgid "Password twice"
msgstr ""
-#: common/models.py:1091
+#: common/models.py:1098
msgid "On signup ask users twice for their password"
msgstr ""
-#: common/models.py:1097
+#: common/models.py:1104
msgid "Group on signup"
msgstr ""
-#: common/models.py:1098
+#: common/models.py:1105
msgid "Group to which new users are assigned on registration"
msgstr ""
-#: common/models.py:1104
+#: common/models.py:1111
msgid "Enforce MFA"
msgstr ""
-#: common/models.py:1105
+#: common/models.py:1112
msgid "Users must use multifactor security."
msgstr ""
-#: common/models.py:1111
+#: common/models.py:1118
msgid "Check plugins on startup"
msgstr ""
-#: common/models.py:1112
+#: common/models.py:1119
msgid "Check that all plugins are installed on startup - enable in container enviroments"
msgstr ""
-#: common/models.py:1120
+#: common/models.py:1127
msgid "Enable URL integration"
msgstr ""
-#: common/models.py:1121
+#: common/models.py:1128
msgid "Enable plugins to add URL routes"
msgstr ""
-#: common/models.py:1128
+#: common/models.py:1135
msgid "Enable navigation integration"
msgstr ""
-#: common/models.py:1129
+#: common/models.py:1136
msgid "Enable plugins to integrate into navigation"
msgstr ""
-#: common/models.py:1136
+#: common/models.py:1143
msgid "Enable app integration"
msgstr ""
-#: common/models.py:1137
+#: common/models.py:1144
msgid "Enable plugins to add apps"
msgstr ""
-#: common/models.py:1144
+#: common/models.py:1151
msgid "Enable schedule integration"
msgstr ""
-#: common/models.py:1145
+#: common/models.py:1152
msgid "Enable plugins to run scheduled tasks"
msgstr ""
-#: common/models.py:1152
+#: common/models.py:1159
msgid "Enable event integration"
msgstr ""
-#: common/models.py:1153
+#: common/models.py:1160
msgid "Enable plugins to respond to internal events"
msgstr ""
-#: common/models.py:1170 common/models.py:1492
+#: common/models.py:1177 common/models.py:1499
msgid "Settings key (must be unique - case insensitive"
msgstr ""
-#: common/models.py:1192
+#: common/models.py:1199
msgid "Show subscribed parts"
msgstr ""
-#: common/models.py:1193
+#: common/models.py:1200
msgid "Show subscribed parts on the homepage"
msgstr ""
-#: common/models.py:1199
+#: common/models.py:1206
msgid "Show subscribed categories"
msgstr ""
-#: common/models.py:1200
+#: common/models.py:1207
msgid "Show subscribed part categories on the homepage"
msgstr ""
-#: common/models.py:1206
+#: common/models.py:1213
msgid "Show latest parts"
msgstr ""
-#: common/models.py:1207
+#: common/models.py:1214
msgid "Show latest parts on the homepage"
msgstr ""
-#: common/models.py:1213
+#: common/models.py:1220
msgid "Recent Part Count"
msgstr ""
-#: common/models.py:1214
+#: common/models.py:1221
msgid "Number of recent parts to display on index page"
msgstr ""
-#: common/models.py:1220
+#: common/models.py:1227
msgid "Show unvalidated BOMs"
msgstr ""
-#: common/models.py:1221
+#: common/models.py:1228
msgid "Show BOMs that await validation on the homepage"
msgstr ""
-#: common/models.py:1227
+#: common/models.py:1234
msgid "Show recent stock changes"
msgstr ""
-#: common/models.py:1228
+#: common/models.py:1235
msgid "Show recently changed stock items on the homepage"
msgstr ""
-#: common/models.py:1234
+#: common/models.py:1241
msgid "Recent Stock Count"
msgstr ""
-#: common/models.py:1235
+#: common/models.py:1242
msgid "Number of recent stock items to display on index page"
msgstr ""
-#: common/models.py:1241
+#: common/models.py:1248
msgid "Show low stock"
msgstr ""
-#: common/models.py:1242
+#: common/models.py:1249
msgid "Show low stock items on the homepage"
msgstr ""
-#: common/models.py:1248
+#: common/models.py:1255
msgid "Show depleted stock"
msgstr ""
-#: common/models.py:1249
+#: common/models.py:1256
msgid "Show depleted stock items on the homepage"
msgstr ""
-#: common/models.py:1255
+#: common/models.py:1262
msgid "Show needed stock"
msgstr ""
-#: common/models.py:1256
+#: common/models.py:1263
msgid "Show stock items needed for builds on the homepage"
msgstr ""
-#: common/models.py:1262
+#: common/models.py:1269
msgid "Show expired stock"
msgstr ""
-#: common/models.py:1263
+#: common/models.py:1270
msgid "Show expired stock items on the homepage"
msgstr ""
-#: common/models.py:1269
+#: common/models.py:1276
msgid "Show stale stock"
msgstr ""
-#: common/models.py:1270
+#: common/models.py:1277
msgid "Show stale stock items on the homepage"
msgstr ""
-#: common/models.py:1276
+#: common/models.py:1283
msgid "Show pending builds"
msgstr ""
-#: common/models.py:1277
+#: common/models.py:1284
msgid "Show pending builds on the homepage"
msgstr ""
-#: common/models.py:1283
+#: common/models.py:1290
msgid "Show overdue builds"
msgstr ""
-#: common/models.py:1284
+#: common/models.py:1291
msgid "Show overdue builds on the homepage"
msgstr ""
-#: common/models.py:1290
+#: common/models.py:1297
msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:1291
+#: common/models.py:1298
msgid "Show outstanding POs on the homepage"
msgstr ""
-#: common/models.py:1297
+#: common/models.py:1304
msgid "Show overdue POs"
msgstr ""
-#: common/models.py:1298
+#: common/models.py:1305
msgid "Show overdue POs on the homepage"
msgstr ""
-#: common/models.py:1304
+#: common/models.py:1311
msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:1305
+#: common/models.py:1312
msgid "Show outstanding SOs on the homepage"
msgstr ""
-#: common/models.py:1311
+#: common/models.py:1318
msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:1312
+#: common/models.py:1319
msgid "Show overdue SOs on the homepage"
msgstr ""
-#: common/models.py:1317
+#: common/models.py:1324
msgid "Enable label printing"
msgstr ""
-#: common/models.py:1318
+#: common/models.py:1325
msgid "Enable label printing from the web interface"
msgstr ""
-#: common/models.py:1324
+#: common/models.py:1331
msgid "Inline label display"
msgstr ""
-#: common/models.py:1325
+#: common/models.py:1332
msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:1331
+#: common/models.py:1338
msgid "Inline report display"
msgstr ""
-#: common/models.py:1332
+#: common/models.py:1339
msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:1338
+#: common/models.py:1345
msgid "Search Parts"
msgstr ""
-#: common/models.py:1339
+#: common/models.py:1346
msgid "Display parts in search preview window"
msgstr ""
-#: common/models.py:1345
+#: common/models.py:1352
msgid "Seach Supplier Parts"
msgstr ""
-#: common/models.py:1346
+#: common/models.py:1353
msgid "Display supplier parts in search preview window"
msgstr ""
-#: common/models.py:1352
+#: common/models.py:1359
msgid "Search Manufacturer Parts"
msgstr ""
-#: common/models.py:1353
+#: common/models.py:1360
msgid "Display manufacturer parts in search preview window"
msgstr ""
-#: common/models.py:1359
+#: common/models.py:1366
msgid "Hide Inactive Parts"
msgstr ""
-#: common/models.py:1360
+#: common/models.py:1367
msgid "Excluded inactive parts from search preview window"
msgstr ""
-#: common/models.py:1366
+#: common/models.py:1373
msgid "Search Categories"
msgstr ""
-#: common/models.py:1367
+#: common/models.py:1374
msgid "Display part categories in search preview window"
msgstr ""
-#: common/models.py:1373
+#: common/models.py:1380
msgid "Search Stock"
msgstr ""
-#: common/models.py:1374
+#: common/models.py:1381
msgid "Display stock items in search preview window"
msgstr ""
-#: common/models.py:1380
+#: common/models.py:1387
msgid "Hide Unavailable Stock Items"
msgstr ""
-#: common/models.py:1381
+#: common/models.py:1388
msgid "Exclude stock items which are not available from the search preview window"
msgstr ""
-#: common/models.py:1387
+#: common/models.py:1394
msgid "Search Locations"
msgstr ""
-#: common/models.py:1388
+#: common/models.py:1395
msgid "Display stock locations in search preview window"
msgstr ""
-#: common/models.py:1394
+#: common/models.py:1401
msgid "Search Companies"
msgstr ""
-#: common/models.py:1395
+#: common/models.py:1402
msgid "Display companies in search preview window"
msgstr ""
-#: common/models.py:1401
+#: common/models.py:1408
msgid "Search Purchase Orders"
msgstr ""
-#: common/models.py:1402
+#: common/models.py:1409
msgid "Display purchase orders in search preview window"
msgstr ""
-#: common/models.py:1408
+#: common/models.py:1415
msgid "Exclude Inactive Purchase Orders"
msgstr ""
-#: common/models.py:1409
+#: common/models.py:1416
msgid "Exclude inactive purchase orders from search preview window"
msgstr ""
-#: common/models.py:1415
+#: common/models.py:1422
msgid "Search Sales Orders"
msgstr ""
-#: common/models.py:1416
+#: common/models.py:1423
msgid "Display sales orders in search preview window"
msgstr ""
-#: common/models.py:1422
+#: common/models.py:1429
msgid "Exclude Inactive Sales Orders"
msgstr ""
-#: common/models.py:1423
+#: common/models.py:1430
msgid "Exclude inactive sales orders from search preview window"
msgstr ""
-#: common/models.py:1429
+#: common/models.py:1436
msgid "Search Preview Results"
msgstr ""
-#: common/models.py:1430
+#: common/models.py:1437
msgid "Number of results to show in each section of the search preview window"
msgstr ""
-#: common/models.py:1436
+#: common/models.py:1443
msgid "Show Quantity in Forms"
msgstr ""
-#: common/models.py:1437
+#: common/models.py:1444
msgid "Display available part quantity in some forms"
msgstr ""
-#: common/models.py:1443
+#: common/models.py:1450
msgid "Escape Key Closes Forms"
msgstr ""
-#: common/models.py:1444
+#: common/models.py:1451
msgid "Use the escape key to close modal forms"
msgstr ""
-#: common/models.py:1450
+#: common/models.py:1457
msgid "Fixed Navbar"
msgstr ""
-#: common/models.py:1451
+#: common/models.py:1458
msgid "The navbar position is fixed to the top of the screen"
msgstr ""
-#: common/models.py:1457
+#: common/models.py:1464
msgid "Date Format"
msgstr ""
-#: common/models.py:1458
+#: common/models.py:1465
msgid "Preferred format for displaying dates"
msgstr ""
-#: common/models.py:1472 part/templates/part/detail.html:39
+#: common/models.py:1479 part/templates/part/detail.html:39
msgid "Part Scheduling"
msgstr ""
-#: common/models.py:1473
+#: common/models.py:1480
msgid "Display part scheduling information"
msgstr ""
-#: common/models.py:1537 company/forms.py:37
+#: common/models.py:1544 company/forms.py:37
msgid "Price break quantity"
msgstr ""
-#: common/models.py:1544 company/serializers.py:288
-#: company/templates/company/supplier_part.html:263 order/models.py:949
-#: templates/js/translated/part.js:998 templates/js/translated/part.js:1974
+#: common/models.py:1551 company/serializers.py:290
+#: company/templates/company/supplier_part.html:263 order/models.py:953
+#: templates/js/translated/part.js:1042 templates/js/translated/part.js:2070
msgid "Price"
msgstr ""
-#: common/models.py:1545
+#: common/models.py:1552
msgid "Unit price at specified quantity"
msgstr ""
-#: common/models.py:1705 common/models.py:1883
+#: common/models.py:1712 common/models.py:1890
msgid "Endpoint"
msgstr ""
-#: common/models.py:1706
+#: common/models.py:1713
msgid "Endpoint at which this webhook is received"
msgstr ""
-#: common/models.py:1715
+#: common/models.py:1722
msgid "Name for this webhook"
msgstr ""
-#: common/models.py:1720 part/models.py:911 plugin/models.py:99
+#: common/models.py:1727 part/models.py:911 plugin/models.py:99
#: templates/js/translated/table_filters.js:34
#: templates/js/translated/table_filters.js:96
#: templates/js/translated/table_filters.js:308
@@ -2458,79 +2475,79 @@ msgstr ""
msgid "Active"
msgstr ""
-#: common/models.py:1721
+#: common/models.py:1728
msgid "Is this webhook active"
msgstr ""
-#: common/models.py:1735
+#: common/models.py:1742
msgid "Token"
msgstr ""
-#: common/models.py:1736
+#: common/models.py:1743
msgid "Token for access"
msgstr ""
-#: common/models.py:1743
+#: common/models.py:1750
msgid "Secret"
msgstr ""
-#: common/models.py:1744
+#: common/models.py:1751
msgid "Shared secret for HMAC"
msgstr ""
-#: common/models.py:1850
+#: common/models.py:1857
msgid "Message ID"
msgstr ""
-#: common/models.py:1851
+#: common/models.py:1858
msgid "Unique identifier for this message"
msgstr ""
-#: common/models.py:1859
+#: common/models.py:1866
msgid "Host"
msgstr ""
-#: common/models.py:1860
+#: common/models.py:1867
msgid "Host from which this message was received"
msgstr ""
-#: common/models.py:1867
+#: common/models.py:1874
msgid "Header"
msgstr ""
-#: common/models.py:1868
+#: common/models.py:1875
msgid "Header of this message"
msgstr ""
-#: common/models.py:1874
+#: common/models.py:1881
msgid "Body"
msgstr ""
-#: common/models.py:1875
+#: common/models.py:1882
msgid "Body of this message"
msgstr ""
-#: common/models.py:1884
+#: common/models.py:1891
msgid "Endpoint on which this message was received"
msgstr ""
-#: common/models.py:1889
+#: common/models.py:1896
msgid "Worked on"
msgstr ""
-#: common/models.py:1890
+#: common/models.py:1897
msgid "Was the work on this message finished?"
msgstr ""
#: common/views.py:87 order/templates/order/purchase_order_detail.html:23
-#: order/views.py:102 part/views.py:193
+#: order/views.py:102 part/views.py:116
#: templates/patterns/wizard/upload.html:37
msgid "Upload File"
msgstr ""
#: common/views.py:88 order/views.py:103
#: part/templates/part/import_wizard/ajax_match_fields.html:45
-#: part/views.py:194 templates/patterns/wizard/match_fields.html:51
+#: part/views.py:117 templates/patterns/wizard/match_fields.html:51
msgid "Match Fields"
msgstr ""
@@ -2546,19 +2563,19 @@ msgstr ""
msgid "Parts imported"
msgstr ""
-#: common/views.py:507 order/templates/order/order_wizard/match_parts.html:19
+#: common/views.py:511 order/templates/order/order_wizard/match_parts.html:19
#: part/templates/part/import_wizard/match_references.html:19
#: templates/patterns/wizard/match_fields.html:26
#: templates/patterns/wizard/upload.html:35
msgid "Previous Step"
msgstr ""
-#: company/forms.py:16 part/forms.py:21
+#: company/forms.py:16 part/forms.py:18
#: templates/InvenTree/settings/mixins/urls.html:14
msgid "URL"
msgstr ""
-#: company/forms.py:17 part/forms.py:22
+#: company/forms.py:17 part/forms.py:19
msgid "Image URL"
msgstr ""
@@ -2645,9 +2662,9 @@ msgstr ""
msgid "Does this company manufacture parts?"
msgstr ""
-#: company/models.py:144 company/serializers.py:294
-#: company/templates/company/company_base.html:106 part/serializers.py:137
-#: part/serializers.py:168 stock/serializers.py:162
+#: company/models.py:144 company/serializers.py:296
+#: company/templates/company/company_base.html:106 part/serializers.py:139
+#: part/serializers.py:170 stock/serializers.py:162
msgid "Currency"
msgstr ""
@@ -2686,7 +2703,7 @@ msgstr ""
#: templates/js/translated/company.js:487
#: templates/js/translated/company.js:648
#: templates/js/translated/company.js:935 templates/js/translated/order.js:1907
-#: templates/js/translated/part.js:246 templates/js/translated/part.js:956
+#: templates/js/translated/part.js:246 templates/js/translated/part.js:1000
msgid "MPN"
msgstr ""
@@ -2715,8 +2732,8 @@ msgstr ""
#: company/models.py:361
#: report/templates/report/inventree_test_report_base.html:95
-#: stock/models.py:2080 templates/js/translated/company.js:540
-#: templates/js/translated/company.js:763 templates/js/translated/part.js:776
+#: stock/models.py:2084 templates/js/translated/company.js:540
+#: templates/js/translated/company.js:763 templates/js/translated/part.js:820
#: templates/js/translated/stock.js:1294
msgid "Value"
msgstr ""
@@ -2725,10 +2742,10 @@ msgstr ""
msgid "Parameter value"
msgstr ""
-#: company/models.py:368 part/models.py:878 part/models.py:2339
+#: company/models.py:368 part/models.py:878 part/models.py:2327
#: part/templates/part/part_base.html:280
-#: templates/InvenTree/settings/settings.html:332
-#: templates/js/translated/company.js:769 templates/js/translated/part.js:782
+#: templates/InvenTree/settings/settings.html:351
+#: templates/js/translated/company.js:769 templates/js/translated/part.js:826
msgid "Units"
msgstr ""
@@ -2741,13 +2758,14 @@ msgid "Linked manufacturer part must reference the same base part"
msgstr ""
#: company/models.py:487 company/templates/company/company_base.html:81
-#: company/templates/company/supplier_part.html:87 order/models.py:303
+#: company/templates/company/supplier_part.html:87 order/models.py:307
#: order/templates/order/order_base.html:112 part/bom.py:237 part/bom.py:265
#: stock/templates/stock/item_base.html:229
+#: templates/email/overdue_purchase_order.html:16
#: templates/js/translated/company.js:254
#: templates/js/translated/company.js:393
#: templates/js/translated/company.js:891 templates/js/translated/order.js:1643
-#: templates/js/translated/part.js:216 templates/js/translated/part.js:924
+#: templates/js/translated/part.js:216 templates/js/translated/part.js:968
#: templates/js/translated/table_filters.js:415
msgid "Supplier"
msgstr ""
@@ -2759,7 +2777,7 @@ msgstr ""
#: company/models.py:493 company/templates/company/supplier_part.html:97
#: part/bom.py:238 part/bom.py:266 templates/js/translated/company.js:253
#: templates/js/translated/order.js:1894 templates/js/translated/part.js:227
-#: templates/js/translated/part.js:942
+#: templates/js/translated/part.js:986
msgid "SKU"
msgstr ""
@@ -2780,17 +2798,17 @@ msgid "Supplier part description"
msgstr ""
#: company/models.py:518 company/templates/company/supplier_part.html:125
-#: part/models.py:2571 part/templates/part/upload_bom.html:59
+#: part/models.py:2561 part/templates/part/upload_bom.html:59
#: report/templates/report/inventree_po_report.html:92
#: report/templates/report/inventree_so_report.html:93 stock/serializers.py:387
msgid "Note"
msgstr ""
-#: company/models.py:522 part/models.py:1688
+#: company/models.py:522 part/models.py:1683
msgid "base cost"
msgstr ""
-#: company/models.py:522 part/models.py:1688
+#: company/models.py:522 part/models.py:1683
msgid "Minimum charge (e.g. stocking fee)"
msgstr ""
@@ -2804,7 +2822,7 @@ msgstr ""
msgid "Part packaging"
msgstr ""
-#: company/models.py:526 part/models.py:1690
+#: company/models.py:526 part/models.py:1685
msgid "multiple"
msgstr ""
@@ -2867,10 +2885,11 @@ msgstr ""
msgid "Download image from URL"
msgstr ""
-#: company/templates/company/company_base.html:86 order/models.py:649
+#: company/templates/company/company_base.html:86 order/models.py:653
#: order/templates/order/sales_order_base.html:116 stock/models.py:627
-#: stock/models.py:628 stock/serializers.py:758
+#: stock/models.py:628 stock/serializers.py:745
#: stock/templates/stock/item_base.html:401
+#: templates/email/overdue_sales_order.html:16
#: templates/js/translated/company.js:385 templates/js/translated/order.js:2458
#: templates/js/translated/stock.js:2431
#: templates/js/translated/table_filters.js:419
@@ -3000,7 +3019,7 @@ msgid "Supplier List"
msgstr ""
#: company/templates/company/manufacturer_part.html:15 company/views.py:45
-#: part/templates/part/prices.html:170 templates/InvenTree/search.html:179
+#: part/templates/part/prices.html:172 templates/InvenTree/search.html:179
#: templates/navbar.html:49
msgid "Manufacturers"
msgstr ""
@@ -3033,7 +3052,7 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:119
#: company/templates/company/supplier_part.html:15 company/views.py:39
-#: part/templates/part/part_sidebar.html:35 part/templates/part/prices.html:166
+#: part/templates/part/part_sidebar.html:35 part/templates/part/prices.html:168
#: templates/InvenTree/search.html:189 templates/navbar.html:48
msgid "Suppliers"
msgstr ""
@@ -3145,7 +3164,7 @@ msgstr ""
#: company/templates/company/supplier_part.html:191
#: company/templates/company/supplier_part.html:305
-#: part/templates/part/prices.html:274 templates/js/translated/part.js:2046
+#: part/templates/part/prices.html:276 templates/js/translated/part.js:2142
msgid "Add Price Break"
msgstr ""
@@ -3154,12 +3173,12 @@ msgid "No price break information found"
msgstr ""
#: company/templates/company/supplier_part.html:231
-#: templates/js/translated/part.js:2056
+#: templates/js/translated/part.js:2152
msgid "Delete Price Break"
msgstr ""
#: company/templates/company/supplier_part.html:245
-#: templates/js/translated/part.js:2070
+#: templates/js/translated/part.js:2166
msgid "Edit Price Break"
msgstr ""
@@ -3181,8 +3200,8 @@ msgstr ""
#: stock/templates/stock/stock_app_base.html:10
#: templates/InvenTree/search.html:151
#: templates/InvenTree/settings/sidebar.html:43
-#: templates/js/translated/bom.js:554 templates/js/translated/part.js:678
-#: templates/js/translated/part.js:1226 templates/js/translated/part.js:1387
+#: templates/js/translated/bom.js:554 templates/js/translated/part.js:722
+#: templates/js/translated/part.js:1270 templates/js/translated/part.js:1431
#: templates/js/translated/stock.js:904 templates/js/translated/stock.js:1687
#: templates/navbar.html:31
msgid "Stock"
@@ -3239,20 +3258,20 @@ msgstr ""
msgid "New Company"
msgstr ""
-#: company/views.py:112 part/views.py:578
+#: company/views.py:112 part/views.py:501
msgid "Download Image"
msgstr ""
-#: company/views.py:139 part/views.py:608
+#: company/views.py:139 part/views.py:531
msgid "Image size exceeds maximum allowable size for download"
msgstr ""
-#: company/views.py:146 part/views.py:615
+#: company/views.py:146 part/views.py:538
#, python-brace-format
msgid "Invalid response: {code}"
msgstr ""
-#: company/views.py:155 part/views.py:624
+#: company/views.py:155 part/views.py:547
msgid "Supplied URL is not a valid image file"
msgstr ""
@@ -3325,7 +3344,7 @@ msgstr ""
msgid "Order description"
msgstr ""
-#: order/models.py:135 order/models.py:1236
+#: order/models.py:135 order/models.py:1240
msgid "Link to external page"
msgstr ""
@@ -3341,293 +3360,294 @@ msgstr ""
msgid "Order notes"
msgstr ""
-#: order/models.py:289 order/models.py:639
+#: order/models.py:293 order/models.py:643
msgid "Order reference"
msgstr ""
-#: order/models.py:294 order/models.py:654
+#: order/models.py:298 order/models.py:658
msgid "Purchase order status"
msgstr ""
-#: order/models.py:304
+#: order/models.py:308
msgid "Company from which the items are being ordered"
msgstr ""
-#: order/models.py:307 order/templates/order/order_base.html:124
+#: order/models.py:311 order/templates/order/order_base.html:124
#: templates/js/translated/order.js:1652
msgid "Supplier Reference"
msgstr ""
-#: order/models.py:307
+#: order/models.py:311
msgid "Supplier order reference code"
msgstr ""
-#: order/models.py:314
+#: order/models.py:318
msgid "received by"
msgstr ""
-#: order/models.py:319
+#: order/models.py:323
msgid "Issue Date"
msgstr ""
-#: order/models.py:320
+#: order/models.py:324
msgid "Date order was issued"
msgstr ""
-#: order/models.py:325
+#: order/models.py:329
msgid "Target Delivery Date"
msgstr ""
-#: order/models.py:326
+#: order/models.py:330
msgid "Expected date for order delivery. Order will be overdue after this date."
msgstr ""
-#: order/models.py:332
+#: order/models.py:336
msgid "Date order was completed"
msgstr ""
-#: order/models.py:368
+#: order/models.py:372
msgid "Part supplier must match PO supplier"
msgstr ""
-#: order/models.py:512
+#: order/models.py:516
msgid "Quantity must be a positive number"
msgstr ""
-#: order/models.py:650
+#: order/models.py:654
msgid "Company to which the items are being sold"
msgstr ""
-#: order/models.py:656
+#: order/models.py:660
msgid "Customer Reference "
msgstr ""
-#: order/models.py:656
+#: order/models.py:660
msgid "Customer order reference code"
msgstr ""
-#: order/models.py:661
+#: order/models.py:665
msgid "Target date for order completion. Order will be overdue after this date."
msgstr ""
-#: order/models.py:664 order/models.py:1190
+#: order/models.py:668 order/models.py:1194
#: templates/js/translated/order.js:2505 templates/js/translated/order.js:2656
msgid "Shipment Date"
msgstr ""
-#: order/models.py:671
+#: order/models.py:675
msgid "shipped by"
msgstr ""
-#: order/models.py:726
+#: order/models.py:730
msgid "Order cannot be completed as no parts have been assigned"
msgstr ""
-#: order/models.py:730
+#: order/models.py:734
msgid "Only a pending order can be marked as complete"
msgstr ""
-#: order/models.py:733
+#: order/models.py:737
msgid "Order cannot be completed as there are incomplete shipments"
msgstr ""
-#: order/models.py:736
+#: order/models.py:740
msgid "Order cannot be completed as there are incomplete line items"
msgstr ""
-#: order/models.py:910
+#: order/models.py:914
msgid "Item quantity"
msgstr ""
-#: order/models.py:916
+#: order/models.py:920
msgid "Line item reference"
msgstr ""
-#: order/models.py:918
+#: order/models.py:922
msgid "Line item notes"
msgstr ""
-#: order/models.py:923
+#: order/models.py:927
msgid "Target shipping date for this line item"
msgstr ""
-#: order/models.py:941
+#: order/models.py:945
msgid "Context"
msgstr ""
-#: order/models.py:942
+#: order/models.py:946
msgid "Additional context for this line"
msgstr ""
-#: order/models.py:950
+#: order/models.py:954
msgid "Unit price"
msgstr ""
-#: order/models.py:980
+#: order/models.py:984
msgid "Supplier part must match supplier"
msgstr ""
-#: order/models.py:988
+#: order/models.py:992
msgid "deleted"
msgstr ""
-#: order/models.py:994 order/models.py:1074 order/models.py:1099
-#: order/models.py:1184 order/models.py:1320
+#: order/models.py:998 order/models.py:1078 order/models.py:1103
+#: order/models.py:1188 order/models.py:1324
#: templates/js/translated/order.js:3112
msgid "Order"
msgstr ""
-#: order/models.py:995 order/models.py:1074
+#: order/models.py:999 order/models.py:1078
#: order/templates/order/order_base.html:9
#: order/templates/order/order_base.html:18
#: report/templates/report/inventree_po_report.html:76
#: stock/templates/stock/item_base.html:184
+#: templates/email/overdue_purchase_order.html:15
#: templates/js/translated/order.js:885 templates/js/translated/order.js:1621
-#: templates/js/translated/part.js:899 templates/js/translated/stock.js:1846
+#: templates/js/translated/part.js:943 templates/js/translated/stock.js:1846
#: templates/js/translated/stock.js:2412
msgid "Purchase Order"
msgstr ""
-#: order/models.py:1013
+#: order/models.py:1017
msgid "Supplier part"
msgstr ""
-#: order/models.py:1020 order/templates/order/order_base.html:169
+#: order/models.py:1024 order/templates/order/order_base.html:169
#: templates/js/translated/order.js:1318 templates/js/translated/order.js:2009
-#: templates/js/translated/part.js:993 templates/js/translated/part.js:1020
+#: templates/js/translated/part.js:1037 templates/js/translated/part.js:1064
#: templates/js/translated/table_filters.js:330
msgid "Received"
msgstr ""
-#: order/models.py:1021
+#: order/models.py:1025
msgid "Number of items received"
msgstr ""
-#: order/models.py:1028 part/templates/part/prices.html:179 stock/models.py:722
+#: order/models.py:1032 part/templates/part/prices.html:181 stock/models.py:722
#: stock/serializers.py:153 stock/templates/stock/item_base.html:191
#: templates/js/translated/stock.js:1900
msgid "Purchase Price"
msgstr ""
-#: order/models.py:1029
+#: order/models.py:1033
msgid "Unit purchase price"
msgstr ""
-#: order/models.py:1037
+#: order/models.py:1041
msgid "Where does the Purchaser want this item to be stored?"
msgstr ""
-#: order/models.py:1109 part/templates/part/part_pricing.html:112
-#: part/templates/part/prices.html:119 part/templates/part/prices.html:288
+#: order/models.py:1113 part/templates/part/part_pricing.html:115
+#: part/templates/part/prices.html:121 part/templates/part/prices.html:290
msgid "Sale Price"
msgstr ""
-#: order/models.py:1110
+#: order/models.py:1114
msgid "Unit sale price"
msgstr ""
-#: order/models.py:1115
+#: order/models.py:1119
msgid "Shipped quantity"
msgstr ""
-#: order/models.py:1191
+#: order/models.py:1195
msgid "Date of shipment"
msgstr ""
-#: order/models.py:1198
+#: order/models.py:1202
msgid "Checked By"
msgstr ""
-#: order/models.py:1199
+#: order/models.py:1203
msgid "User who checked this shipment"
msgstr ""
-#: order/models.py:1207
+#: order/models.py:1211
msgid "Shipment number"
msgstr ""
-#: order/models.py:1214
+#: order/models.py:1218
msgid "Shipment notes"
msgstr ""
-#: order/models.py:1221
+#: order/models.py:1225
msgid "Tracking Number"
msgstr ""
-#: order/models.py:1222
+#: order/models.py:1226
msgid "Shipment tracking information"
msgstr ""
-#: order/models.py:1229
+#: order/models.py:1233
msgid "Invoice Number"
msgstr ""
-#: order/models.py:1230
+#: order/models.py:1234
msgid "Reference number for associated invoice"
msgstr ""
-#: order/models.py:1248
+#: order/models.py:1252
msgid "Shipment has already been sent"
msgstr ""
-#: order/models.py:1251
+#: order/models.py:1255
msgid "Shipment has no allocated stock items"
msgstr ""
-#: order/models.py:1354 order/models.py:1356
+#: order/models.py:1358 order/models.py:1360
msgid "Stock item has not been assigned"
msgstr ""
-#: order/models.py:1360
+#: order/models.py:1364
msgid "Cannot allocate stock item to a line with a different part"
msgstr ""
-#: order/models.py:1362
+#: order/models.py:1366
msgid "Cannot allocate stock to a line without a part"
msgstr ""
-#: order/models.py:1365
+#: order/models.py:1369
msgid "Allocation quantity cannot exceed stock quantity"
msgstr ""
-#: order/models.py:1369
+#: order/models.py:1373
msgid "StockItem is over-allocated"
msgstr ""
-#: order/models.py:1375 order/serializers.py:1045
+#: order/models.py:1379 order/serializers.py:1047
msgid "Quantity must be 1 for serialized stock item"
msgstr ""
-#: order/models.py:1378
+#: order/models.py:1382
msgid "Sales order does not match shipment"
msgstr ""
-#: order/models.py:1379
+#: order/models.py:1383
msgid "Shipment does not match sales order"
msgstr ""
-#: order/models.py:1387
+#: order/models.py:1391
msgid "Line"
msgstr ""
-#: order/models.py:1395 order/serializers.py:1149 order/serializers.py:1273
+#: order/models.py:1399 order/serializers.py:1151 order/serializers.py:1275
#: templates/js/translated/model_renderers.js:301
msgid "Shipment"
msgstr ""
-#: order/models.py:1396
+#: order/models.py:1400
msgid "Sales order shipment reference"
msgstr ""
-#: order/models.py:1408 templates/InvenTree/notifications/notifications.html:70
+#: order/models.py:1412 templates/InvenTree/notifications/notifications.html:70
msgid "Item"
msgstr ""
-#: order/models.py:1409
+#: order/models.py:1413
msgid "Select stock item to allocate"
msgstr ""
-#: order/models.py:1412
+#: order/models.py:1416
msgid "Enter stock allocation quantity"
msgstr ""
@@ -3663,7 +3683,7 @@ msgstr ""
msgid "Purchase order must match supplier"
msgstr ""
-#: order/serializers.py:406 order/serializers.py:1117
+#: order/serializers.py:406 order/serializers.py:1119
msgid "Line Item"
msgstr ""
@@ -3711,42 +3731,60 @@ msgstr ""
msgid "Supplied barcode values must be unique"
msgstr ""
-#: order/serializers.py:866
+#: order/serializers.py:868
msgid "Sale price currency"
msgstr ""
-#: order/serializers.py:947
+#: order/serializers.py:949
msgid "No shipment details provided"
msgstr ""
-#: order/serializers.py:1006 order/serializers.py:1126
+#: order/serializers.py:1008 order/serializers.py:1128
msgid "Line item is not associated with this order"
msgstr ""
-#: order/serializers.py:1028
+#: order/serializers.py:1030
msgid "Quantity must be positive"
msgstr ""
-#: order/serializers.py:1139
+#: order/serializers.py:1141
msgid "Enter serial numbers to allocate"
msgstr ""
-#: order/serializers.py:1161 order/serializers.py:1281
+#: order/serializers.py:1163 order/serializers.py:1283
msgid "Shipment has already been shipped"
msgstr ""
-#: order/serializers.py:1164 order/serializers.py:1284
+#: order/serializers.py:1166 order/serializers.py:1286
msgid "Shipment is not associated with this order"
msgstr ""
-#: order/serializers.py:1214
+#: order/serializers.py:1216
msgid "No match found for the following serial numbers"
msgstr ""
-#: order/serializers.py:1224
+#: order/serializers.py:1226
msgid "The following serial numbers are already allocated"
msgstr ""
+#: order/tasks.py:26
+msgid "Overdue Purchase Order"
+msgstr ""
+
+#: order/tasks.py:31
+#, python-brace-format
+msgid "Purchase order {po} is now overdue"
+msgstr ""
+
+#: order/tasks.py:88
+msgid "Overdue Sales Order"
+msgstr ""
+
+#: order/tasks.py:93
+#, python-brace-format
+msgid "Sales order {so} is now overdue"
+msgstr ""
+
#: order/templates/order/order_base.html:33
msgid "Print purchase order report"
msgstr ""
@@ -4022,47 +4060,47 @@ msgstr ""
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr ""
-#: part/api.py:474
+#: part/api.py:481
msgid "Incoming Purchase Order"
msgstr ""
-#: part/api.py:494
+#: part/api.py:501
msgid "Outgoing Sales Order"
msgstr ""
-#: part/api.py:512
+#: part/api.py:519
msgid "Stock produced by Build Order"
msgstr ""
-#: part/api.py:544
+#: part/api.py:551
msgid "Stock required for Build Order"
msgstr ""
-#: part/api.py:630
+#: part/api.py:637
msgid "Valid"
msgstr ""
-#: part/api.py:631
+#: part/api.py:638
msgid "Validate entire Bill of Materials"
msgstr ""
-#: part/api.py:637
+#: part/api.py:644
msgid "This option must be selected"
msgstr ""
-#: part/api.py:1003
+#: part/api.py:1010
msgid "Must be greater than zero"
msgstr ""
-#: part/api.py:1007
+#: part/api.py:1014
msgid "Must be a valid quantity"
msgstr ""
-#: part/api.py:1022
+#: part/api.py:1029
msgid "Specify location for initial part stock"
msgstr ""
-#: part/api.py:1053 part/api.py:1057 part/api.py:1072 part/api.py:1076
+#: part/api.py:1060 part/api.py:1064 part/api.py:1079 part/api.py:1083
msgid "This field is required"
msgstr ""
@@ -4081,25 +4119,13 @@ msgid "Available Stock"
msgstr ""
#: part/bom.py:130 part/templates/part/part_base.html:207
-#: templates/js/translated/part.js:517 templates/js/translated/part.js:537
-#: templates/js/translated/part.js:1229 templates/js/translated/part.js:1401
-#: templates/js/translated/part.js:1417
+#: templates/js/translated/part.js:561 templates/js/translated/part.js:581
+#: templates/js/translated/part.js:1273 templates/js/translated/part.js:1445
+#: templates/js/translated/part.js:1461
msgid "On Order"
msgstr ""
-#: part/forms.py:59
-msgid "Select part category"
-msgstr ""
-
-#: part/forms.py:67
-msgid "Add parameter template to same level categories"
-msgstr ""
-
-#: part/forms.py:71
-msgid "Add parameter template to all categories"
-msgstr ""
-
-#: part/forms.py:92
+#: part/forms.py:60
msgid "Input quantity for price calculation"
msgstr ""
@@ -4115,7 +4141,7 @@ msgstr ""
msgid "Default keywords for parts in this category"
msgstr ""
-#: part/models.py:115 part/models.py:2413 part/templates/part/category.html:15
+#: part/models.py:115 part/models.py:2403 part/templates/part/category.html:15
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr ""
@@ -4132,7 +4158,7 @@ msgstr ""
#: part/templates/part/category_sidebar.html:9
#: templates/InvenTree/index.html:85 templates/InvenTree/search.html:82
#: templates/InvenTree/settings/sidebar.html:39
-#: templates/js/translated/part.js:1768 templates/js/translated/search.js:144
+#: templates/js/translated/part.js:1864 templates/js/translated/search.js:144
#: templates/navbar.html:24 users/models.py:37
msgid "Parts"
msgstr ""
@@ -4162,7 +4188,7 @@ msgstr ""
msgid "Duplicate IPN not allowed in part settings"
msgstr ""
-#: part/models.py:738 part/models.py:2467
+#: part/models.py:738 part/models.py:2457
msgid "Part name"
msgstr ""
@@ -4195,12 +4221,11 @@ msgstr ""
msgid "Part keywords to improve visibility in search results"
msgstr ""
-#: part/models.py:776 part/models.py:2171 part/models.py:2412
+#: part/models.py:776 part/models.py:2159 part/models.py:2402
#: part/templates/part/part_base.html:257
-#: part/templates/part/set_category.html:15
#: templates/InvenTree/notifications/notifications.html:65
#: templates/InvenTree/settings/settings.html:231
-#: templates/js/translated/part.js:1369
+#: templates/js/translated/part.js:1413 templates/js/translated/part.js:1639
msgid "Category"
msgstr ""
@@ -4209,7 +4234,7 @@ msgid "Part category"
msgstr ""
#: part/models.py:782 part/templates/part/part_base.html:266
-#: templates/js/translated/part.js:666 templates/js/translated/part.js:1322
+#: templates/js/translated/part.js:710 templates/js/translated/part.js:1366
#: templates/js/translated/stock.js:1659
msgid "IPN"
msgstr ""
@@ -4223,7 +4248,7 @@ msgid "Part revision or version number"
msgstr ""
#: part/models.py:790 part/templates/part/part_base.html:273
-#: report/models.py:170 templates/js/translated/part.js:670
+#: report/models.py:170 templates/js/translated/part.js:714
msgid "Revision"
msgstr ""
@@ -4311,317 +4336,321 @@ msgstr ""
msgid "Creation User"
msgstr ""
-#: part/models.py:1690
+#: part/models.py:1685
msgid "Sell multiple"
msgstr ""
-#: part/models.py:2218
+#: part/models.py:2206
msgid "Test templates can only be created for trackable parts"
msgstr ""
-#: part/models.py:2235
+#: part/models.py:2223
msgid "Test with this name already exists for this part"
msgstr ""
-#: part/models.py:2255 templates/js/translated/part.js:1819
+#: part/models.py:2243 templates/js/translated/part.js:1915
#: templates/js/translated/stock.js:1274
msgid "Test Name"
msgstr ""
-#: part/models.py:2256
+#: part/models.py:2244
msgid "Enter a name for the test"
msgstr ""
-#: part/models.py:2261
+#: part/models.py:2249
msgid "Test Description"
msgstr ""
-#: part/models.py:2262
+#: part/models.py:2250
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:2267 templates/js/translated/part.js:1828
+#: part/models.py:2255 templates/js/translated/part.js:1924
#: templates/js/translated/table_filters.js:294
msgid "Required"
msgstr ""
-#: part/models.py:2268
+#: part/models.py:2256
msgid "Is this test required to pass?"
msgstr ""
-#: part/models.py:2273 templates/js/translated/part.js:1836
+#: part/models.py:2261 templates/js/translated/part.js:1932
msgid "Requires Value"
msgstr ""
-#: part/models.py:2274
+#: part/models.py:2262
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:2279 templates/js/translated/part.js:1843
+#: part/models.py:2267 templates/js/translated/part.js:1939
msgid "Requires Attachment"
msgstr ""
-#: part/models.py:2280
+#: part/models.py:2268
msgid "Does this test require a file attachment when adding a test result?"
msgstr ""
-#: part/models.py:2288
+#: part/models.py:2276
#, python-brace-format
msgid "Illegal character in template name ({c})"
msgstr ""
-#: part/models.py:2324
+#: part/models.py:2312
msgid "Parameter template name must be unique"
msgstr ""
-#: part/models.py:2332
+#: part/models.py:2320
msgid "Parameter Name"
msgstr ""
-#: part/models.py:2339
+#: part/models.py:2327
msgid "Parameter Units"
msgstr ""
-#: part/models.py:2370
+#: part/models.py:2358
msgid "Parent Part"
msgstr ""
-#: part/models.py:2372 part/models.py:2418 part/models.py:2419
+#: part/models.py:2360 part/models.py:2408 part/models.py:2409
#: templates/InvenTree/settings/settings.html:226
msgid "Parameter Template"
msgstr ""
-#: part/models.py:2374
+#: part/models.py:2362
msgid "Data"
msgstr ""
-#: part/models.py:2374
+#: part/models.py:2362
msgid "Parameter Value"
msgstr ""
-#: part/models.py:2423 templates/InvenTree/settings/settings.html:235
+#: part/models.py:2413 templates/InvenTree/settings/settings.html:235
msgid "Default Value"
msgstr ""
-#: part/models.py:2424
+#: part/models.py:2414
msgid "Default Parameter Value"
msgstr ""
-#: part/models.py:2459
+#: part/models.py:2449
msgid "Part ID or part name"
msgstr ""
-#: part/models.py:2462 templates/js/translated/model_renderers.js:200
+#: part/models.py:2452 templates/js/translated/model_renderers.js:200
msgid "Part ID"
msgstr ""
-#: part/models.py:2463
+#: part/models.py:2453
msgid "Unique part ID value"
msgstr ""
-#: part/models.py:2466
+#: part/models.py:2456
msgid "Part Name"
msgstr ""
-#: part/models.py:2470
+#: part/models.py:2460
msgid "Part IPN"
msgstr ""
-#: part/models.py:2471
+#: part/models.py:2461
msgid "Part IPN value"
msgstr ""
-#: part/models.py:2474
+#: part/models.py:2464
msgid "Level"
msgstr ""
-#: part/models.py:2475
+#: part/models.py:2465
msgid "BOM level"
msgstr ""
-#: part/models.py:2544
+#: part/models.py:2534
msgid "Select parent part"
msgstr ""
-#: part/models.py:2552
+#: part/models.py:2542
msgid "Sub part"
msgstr ""
-#: part/models.py:2553
+#: part/models.py:2543
msgid "Select part to be used in BOM"
msgstr ""
-#: part/models.py:2559
+#: part/models.py:2549
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:2561 part/templates/part/upload_bom.html:58
+#: part/models.py:2551 part/templates/part/upload_bom.html:58
#: templates/js/translated/bom.js:877 templates/js/translated/bom.js:971
#: templates/js/translated/table_filters.js:92
msgid "Optional"
msgstr ""
-#: part/models.py:2561
+#: part/models.py:2551
msgid "This BOM item is optional"
msgstr ""
-#: part/models.py:2564 part/templates/part/upload_bom.html:55
+#: part/models.py:2554 part/templates/part/upload_bom.html:55
msgid "Overage"
msgstr ""
-#: part/models.py:2565
+#: part/models.py:2555
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr ""
-#: part/models.py:2568
+#: part/models.py:2558
msgid "BOM item reference"
msgstr ""
-#: part/models.py:2571
+#: part/models.py:2561
msgid "BOM item notes"
msgstr ""
-#: part/models.py:2573
+#: part/models.py:2563
msgid "Checksum"
msgstr ""
-#: part/models.py:2573
+#: part/models.py:2563
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:2577 part/templates/part/upload_bom.html:57
+#: part/models.py:2567 part/templates/part/upload_bom.html:57
#: templates/js/translated/bom.js:988
#: templates/js/translated/table_filters.js:68
#: templates/js/translated/table_filters.js:88
msgid "Inherited"
msgstr ""
-#: part/models.py:2578
+#: part/models.py:2568
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr ""
-#: part/models.py:2583 part/templates/part/upload_bom.html:56
+#: part/models.py:2573 part/templates/part/upload_bom.html:56
#: templates/js/translated/bom.js:980
msgid "Allow Variants"
msgstr ""
-#: part/models.py:2584
+#: part/models.py:2574
msgid "Stock items for variant parts can be used for this BOM item"
msgstr ""
-#: part/models.py:2662 stock/models.py:460
+#: part/models.py:2652 stock/models.py:460
msgid "Quantity must be integer value for trackable parts"
msgstr ""
-#: part/models.py:2671 part/models.py:2673
+#: part/models.py:2661 part/models.py:2663
msgid "Sub part must be specified"
msgstr ""
-#: part/models.py:2778
+#: part/models.py:2768
msgid "BOM Item Substitute"
msgstr ""
-#: part/models.py:2799
+#: part/models.py:2789
msgid "Substitute part cannot be the same as the master part"
msgstr ""
-#: part/models.py:2812
+#: part/models.py:2802
msgid "Parent BOM item"
msgstr ""
-#: part/models.py:2820
+#: part/models.py:2810
msgid "Substitute part"
msgstr ""
-#: part/models.py:2831
+#: part/models.py:2825
msgid "Part 1"
msgstr ""
-#: part/models.py:2835
+#: part/models.py:2829
msgid "Part 2"
msgstr ""
-#: part/models.py:2835
+#: part/models.py:2829
msgid "Select Related Part"
msgstr ""
-#: part/models.py:2866
-msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique"
+#: part/models.py:2847
+msgid "Part relationship cannot be created between a part and itself"
msgstr ""
-#: part/serializers.py:138 part/serializers.py:169 stock/serializers.py:163
+#: part/models.py:2851
+msgid "Duplicate relationship already exists"
+msgstr ""
+
+#: part/serializers.py:140 part/serializers.py:171 stock/serializers.py:163
msgid "Purchase currency of this stock item"
msgstr ""
-#: part/serializers.py:794
+#: part/serializers.py:796
msgid "Select part to copy BOM from"
msgstr ""
-#: part/serializers.py:802
+#: part/serializers.py:804
msgid "Remove Existing Data"
msgstr ""
-#: part/serializers.py:803
+#: part/serializers.py:805
msgid "Remove existing BOM items before copying"
msgstr ""
-#: part/serializers.py:808
+#: part/serializers.py:810
msgid "Include Inherited"
msgstr ""
-#: part/serializers.py:809
+#: part/serializers.py:811
msgid "Include BOM items which are inherited from templated parts"
msgstr ""
-#: part/serializers.py:814
+#: part/serializers.py:816
msgid "Skip Invalid Rows"
msgstr ""
-#: part/serializers.py:815
+#: part/serializers.py:817
msgid "Enable this option to skip invalid rows"
msgstr ""
-#: part/serializers.py:820
+#: part/serializers.py:822
msgid "Copy Substitute Parts"
msgstr ""
-#: part/serializers.py:821
+#: part/serializers.py:823
msgid "Copy substitute parts when duplicate BOM items"
msgstr ""
-#: part/serializers.py:861
+#: part/serializers.py:863
msgid "Clear Existing BOM"
msgstr ""
-#: part/serializers.py:862
+#: part/serializers.py:864
msgid "Delete existing BOM items before uploading"
msgstr ""
-#: part/serializers.py:892
+#: part/serializers.py:894
msgid "No part column specified"
msgstr ""
-#: part/serializers.py:935
+#: part/serializers.py:937
msgid "Multiple matching parts found"
msgstr ""
-#: part/serializers.py:938
+#: part/serializers.py:940
msgid "No matching part found"
msgstr ""
-#: part/serializers.py:941
+#: part/serializers.py:943
msgid "Part is not designated as a component"
msgstr ""
-#: part/serializers.py:950
+#: part/serializers.py:952
msgid "Quantity not provided"
msgstr ""
-#: part/serializers.py:958
+#: part/serializers.py:960
msgid "Invalid quantity"
msgstr ""
-#: part/serializers.py:979
+#: part/serializers.py:981
msgid "At least one BOM item is required"
msgstr ""
@@ -5100,7 +5129,7 @@ msgstr ""
#: templates/js/translated/company.js:623
#: templates/js/translated/company.js:882
#: templates/js/translated/model_renderers.js:192
-#: templates/js/translated/part.js:581 templates/js/translated/part.js:658
+#: templates/js/translated/part.js:625 templates/js/translated/part.js:702
msgid "Inactive"
msgstr ""
@@ -5133,9 +5162,9 @@ msgstr ""
msgid "Can Build"
msgstr ""
-#: part/templates/part/part_base.html:238 templates/js/translated/part.js:520
-#: templates/js/translated/part.js:540 templates/js/translated/part.js:1233
-#: templates/js/translated/part.js:1405 templates/js/translated/part.js:1421
+#: part/templates/part/part_base.html:238 templates/js/translated/part.js:564
+#: templates/js/translated/part.js:584 templates/js/translated/part.js:1277
+#: templates/js/translated/part.js:1449 templates/js/translated/part.js:1465
msgid "Building"
msgstr ""
@@ -5152,7 +5181,7 @@ msgstr ""
msgid "Search for serial number"
msgstr ""
-#: part/templates/part/part_base.html:443 part/templates/part/prices.html:147
+#: part/templates/part/part_base.html:443 part/templates/part/prices.html:149
msgid "Calculate"
msgstr ""
@@ -5170,19 +5199,19 @@ msgstr ""
#: part/templates/part/part_pricing.html:26
#: part/templates/part/part_pricing.html:52
-#: part/templates/part/part_pricing.html:100
-#: part/templates/part/part_pricing.html:115 part/templates/part/prices.html:28
-#: part/templates/part/prices.html:55 part/templates/part/prices.html:106
-#: part/templates/part/prices.html:123
+#: part/templates/part/part_pricing.html:103
+#: part/templates/part/part_pricing.html:118 part/templates/part/prices.html:28
+#: part/templates/part/prices.html:55 part/templates/part/prices.html:108
+#: part/templates/part/prices.html:125
msgid "Unit Cost"
msgstr ""
#: part/templates/part/part_pricing.html:32
#: part/templates/part/part_pricing.html:58
-#: part/templates/part/part_pricing.html:104
-#: part/templates/part/part_pricing.html:119 part/templates/part/prices.html:35
-#: part/templates/part/prices.html:62 part/templates/part/prices.html:111
-#: part/templates/part/prices.html:128
+#: part/templates/part/part_pricing.html:107
+#: part/templates/part/part_pricing.html:122 part/templates/part/prices.html:35
+#: part/templates/part/prices.html:62 part/templates/part/prices.html:113
+#: part/templates/part/prices.html:130
msgid "Total Cost"
msgstr ""
@@ -5192,32 +5221,33 @@ msgid "No supplier pricing available"
msgstr ""
#: part/templates/part/part_pricing.html:48 part/templates/part/prices.html:52
-#: part/templates/part/prices.html:246
+#: part/templates/part/prices.html:248
msgid "BOM Pricing"
msgstr ""
-#: part/templates/part/part_pricing.html:65 part/templates/part/prices.html:72
+#: part/templates/part/part_pricing.html:66 part/templates/part/prices.html:72
msgid "Unit Purchase Price"
msgstr ""
-#: part/templates/part/part_pricing.html:71 part/templates/part/prices.html:79
+#: part/templates/part/part_pricing.html:72 part/templates/part/prices.html:79
msgid "Total Purchase Price"
msgstr ""
-#: part/templates/part/part_pricing.html:81 part/templates/part/prices.html:89
+#: part/templates/part/part_pricing.html:82 part/templates/part/prices.html:89
msgid "Note: BOM pricing is incomplete for this part"
msgstr ""
-#: part/templates/part/part_pricing.html:88 part/templates/part/prices.html:96
+#: part/templates/part/part_pricing.html:91 part/templates/part/prices.html:98
msgid "No BOM pricing available"
msgstr ""
-#: part/templates/part/part_pricing.html:97 part/templates/part/prices.html:105
+#: part/templates/part/part_pricing.html:100
+#: part/templates/part/prices.html:107
msgid "Internal Price"
msgstr ""
-#: part/templates/part/part_pricing.html:128
-#: part/templates/part/prices.html:137
+#: part/templates/part/part_pricing.html:131
+#: part/templates/part/prices.html:139
msgid "No pricing information is available for this part."
msgstr ""
@@ -5241,44 +5271,6 @@ msgstr ""
msgid "Select from existing images"
msgstr ""
-#: part/templates/part/partial_delete.html:9
-#, python-format
-msgid ""
-"Part '%(full_name)s' cannot be deleted as it is still marked as active.\n"
-"
Disable the \"Active\" part attribute and re-try.\n"
-" "
-msgstr ""
-
-#: part/templates/part/partial_delete.html:17
-#, python-format
-msgid "Are you sure you want to delete part '%(full_name)s'?"
-msgstr ""
-
-#: part/templates/part/partial_delete.html:22
-#, python-format
-msgid "This part is used in BOMs for %(count)s other parts. If you delete this part, the BOMs for the following parts will be updated"
-msgstr ""
-
-#: part/templates/part/partial_delete.html:32
-#, python-format
-msgid "There are %(count)s stock entries defined for this part. If you delete this part, the following stock entries will also be deleted:"
-msgstr ""
-
-#: part/templates/part/partial_delete.html:43
-#, python-format
-msgid "There are %(count)s manufacturers defined for this part. If you delete this part, the following manufacturer parts will also be deleted:"
-msgstr ""
-
-#: part/templates/part/partial_delete.html:54
-#, python-format
-msgid "There are %(count)s suppliers defined for this part. If you delete this part, the following supplier parts will also be deleted:"
-msgstr ""
-
-#: part/templates/part/partial_delete.html:67
-#, python-format
-msgid "There are %(count)s unique parts tracked for '%(full_name)s'. Deleting this part will permanently remove this tracking information."
-msgstr ""
-
#: part/templates/part/prices.html:19
msgid "Pricing ranges"
msgstr ""
@@ -5295,66 +5287,58 @@ msgstr ""
msgid "Show BOM cost"
msgstr ""
-#: part/templates/part/prices.html:120
+#: part/templates/part/prices.html:122
msgid "Show sale cost"
msgstr ""
-#: part/templates/part/prices.html:121
+#: part/templates/part/prices.html:123
msgid "Show sale price"
msgstr ""
-#: part/templates/part/prices.html:143
+#: part/templates/part/prices.html:145
msgid "Calculation parameters"
msgstr ""
-#: part/templates/part/prices.html:158 templates/js/translated/bom.js:957
+#: part/templates/part/prices.html:160 templates/js/translated/bom.js:957
msgid "Supplier Cost"
msgstr ""
-#: part/templates/part/prices.html:159 part/templates/part/prices.html:180
-#: part/templates/part/prices.html:204 part/templates/part/prices.html:234
-#: part/templates/part/prices.html:260 part/templates/part/prices.html:289
+#: part/templates/part/prices.html:161 part/templates/part/prices.html:182
+#: part/templates/part/prices.html:206 part/templates/part/prices.html:236
+#: part/templates/part/prices.html:262 part/templates/part/prices.html:291
msgid "Jump to overview"
msgstr ""
-#: part/templates/part/prices.html:184
+#: part/templates/part/prices.html:186
msgid "Stock Pricing"
msgstr ""
-#: part/templates/part/prices.html:193
+#: part/templates/part/prices.html:195
msgid "No stock pricing history is available for this part."
msgstr ""
-#: part/templates/part/prices.html:203
+#: part/templates/part/prices.html:205
msgid "Internal Cost"
msgstr ""
-#: part/templates/part/prices.html:218
+#: part/templates/part/prices.html:220
msgid "Add Internal Price Break"
msgstr ""
-#: part/templates/part/prices.html:233
+#: part/templates/part/prices.html:235
msgid "BOM Cost"
msgstr ""
-#: part/templates/part/prices.html:259
+#: part/templates/part/prices.html:261
msgid "Sale Cost"
msgstr ""
-#: part/templates/part/prices.html:300
+#: part/templates/part/prices.html:302
msgid "No sale pice history available for this part."
msgstr ""
-#: part/templates/part/set_category.html:9
-msgid "Set category for the following parts"
-msgstr ""
-
-#: part/templates/part/set_category.html:32
-msgid "Remove part"
-msgstr ""
-
-#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:543
-#: templates/js/translated/part.js:1221 templates/js/translated/part.js:1425
+#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:587
+#: templates/js/translated/part.js:1265 templates/js/translated/part.js:1469
msgid "No Stock"
msgstr ""
@@ -5417,71 +5401,42 @@ msgstr ""
msgid "{title} v{version}"
msgstr ""
-#: part/views.py:76
-msgid "Set Part Category"
-msgstr ""
-
-#: part/views.py:124
-#, python-brace-format
-msgid "Set category for {n} parts"
-msgstr ""
-
-#: part/views.py:195
+#: part/views.py:118
msgid "Match References"
msgstr ""
-#: part/views.py:496
+#: part/views.py:419
msgid "None"
msgstr ""
-#: part/views.py:558
+#: part/views.py:481
msgid "Part QR Code"
msgstr ""
-#: part/views.py:652
+#: part/views.py:575
msgid "Select Part Image"
msgstr ""
-#: part/views.py:678
+#: part/views.py:601
msgid "Updated part image"
msgstr ""
-#: part/views.py:681
+#: part/views.py:604
msgid "Part image not found"
msgstr ""
-#: part/views.py:770
-msgid "Confirm Part Deletion"
-msgstr ""
-
-#: part/views.py:778
-msgid "Part was deleted"
-msgstr ""
-
-#: part/views.py:787
+#: part/views.py:693
msgid "Part Pricing"
msgstr ""
-#: part/views.py:978
+#: part/views.py:884
msgid "Delete Part Category"
msgstr ""
-#: part/views.py:985
+#: part/views.py:891
msgid "Part category was deleted"
msgstr ""
-#: part/views.py:994
-msgid "Create Category Parameter Template"
-msgstr ""
-
-#: part/views.py:1094
-msgid "Edit Category Parameter Template"
-msgstr ""
-
-#: part/views.py:1155
-msgid "Delete Category Parameter Template"
-msgstr ""
-
#: plugin/apps.py:56
msgid "Your enviroment has an outdated git version. This prevents InvenTree from loading plugin details."
msgstr ""
@@ -5538,21 +5493,21 @@ msgstr ""
msgid "Label printing failed"
msgstr ""
-#: plugin/builtin/integration/core_notifications.py:28
+#: plugin/builtin/integration/core_notifications.py:29
msgid "InvenTree contributors"
msgstr ""
-#: plugin/builtin/integration/core_notifications.py:29
+#: plugin/builtin/integration/core_notifications.py:30
msgid "Integrated outgoing notificaton methods"
msgstr ""
-#: plugin/builtin/integration/core_notifications.py:33
-#: plugin/builtin/integration/core_notifications.py:52
-msgid "Enable email notifications"
-msgstr ""
-
#: plugin/builtin/integration/core_notifications.py:34
#: plugin/builtin/integration/core_notifications.py:53
+msgid "Enable email notifications"
+msgstr ""
+
+#: plugin/builtin/integration/core_notifications.py:35
+#: plugin/builtin/integration/core_notifications.py:54
msgid "Allow sending of emails for event notifications"
msgstr ""
@@ -5668,15 +5623,19 @@ msgstr ""
msgid "Either packagename of URL must be provided"
msgstr ""
-#: report/api.py:166
+#: report/api.py:179
msgid "No valid objects provided to template"
msgstr ""
-#: report/api.py:198 report/api.py:239
+#: report/api.py:215 report/api.py:256
#, python-brace-format
msgid "Template file '{template}' is missing or does not exist"
msgstr ""
+#: report/api.py:359
+msgid "Test report"
+msgstr ""
+
#: report/models.py:152
msgid "Template name"
msgstr ""
@@ -5788,12 +5747,12 @@ msgid "Test Results"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:93
-#: stock/models.py:2068
+#: stock/models.py:2072
msgid "Test"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:94
-#: stock/models.py:2074
+#: stock/models.py:2078
msgid "Result"
msgstr ""
@@ -5993,79 +5952,79 @@ msgstr ""
msgid "Serial numbers already exist: {exists}"
msgstr ""
-#: stock/models.py:1321
+#: stock/models.py:1325
msgid "Stock item has been assigned to a sales order"
msgstr ""
-#: stock/models.py:1324
+#: stock/models.py:1328
msgid "Stock item is installed in another item"
msgstr ""
-#: stock/models.py:1327
+#: stock/models.py:1331
msgid "Stock item contains other items"
msgstr ""
-#: stock/models.py:1330
+#: stock/models.py:1334
msgid "Stock item has been assigned to a customer"
msgstr ""
-#: stock/models.py:1333
+#: stock/models.py:1337
msgid "Stock item is currently in production"
msgstr ""
-#: stock/models.py:1336
+#: stock/models.py:1340
msgid "Serialized stock cannot be merged"
msgstr ""
-#: stock/models.py:1343 stock/serializers.py:908
+#: stock/models.py:1347 stock/serializers.py:895
msgid "Duplicate stock items"
msgstr ""
-#: stock/models.py:1347
+#: stock/models.py:1351
msgid "Stock items must refer to the same part"
msgstr ""
-#: stock/models.py:1351
+#: stock/models.py:1355
msgid "Stock items must refer to the same supplier part"
msgstr ""
-#: stock/models.py:1355
+#: stock/models.py:1359
msgid "Stock status codes must match"
msgstr ""
-#: stock/models.py:1524
+#: stock/models.py:1528
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:1986
+#: stock/models.py:1990
msgid "Entry notes"
msgstr ""
-#: stock/models.py:2044
+#: stock/models.py:2048
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:2050
+#: stock/models.py:2054
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:2069
+#: stock/models.py:2073
msgid "Test name"
msgstr ""
-#: stock/models.py:2075
+#: stock/models.py:2079
msgid "Test result"
msgstr ""
-#: stock/models.py:2081
+#: stock/models.py:2085
msgid "Test output value"
msgstr ""
-#: stock/models.py:2088
+#: stock/models.py:2092
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:2094
+#: stock/models.py:2098
msgid "Test notes"
msgstr ""
@@ -6086,7 +6045,7 @@ msgstr ""
msgid "Enter serial numbers for new items"
msgstr ""
-#: stock/serializers.py:309 stock/serializers.py:865 stock/serializers.py:1098
+#: stock/serializers.py:309 stock/serializers.py:852 stock/serializers.py:1085
msgid "Destination stock location"
msgstr ""
@@ -6126,63 +6085,63 @@ msgstr ""
msgid "Destination location for returned item"
msgstr ""
-#: stock/serializers.py:720
+#: stock/serializers.py:707
msgid "Part must be salable"
msgstr ""
-#: stock/serializers.py:724
+#: stock/serializers.py:711
msgid "Item is allocated to a sales order"
msgstr ""
-#: stock/serializers.py:728
+#: stock/serializers.py:715
msgid "Item is allocated to a build order"
msgstr ""
-#: stock/serializers.py:759
+#: stock/serializers.py:746
msgid "Customer to assign stock items"
msgstr ""
-#: stock/serializers.py:765
+#: stock/serializers.py:752
msgid "Selected company is not a customer"
msgstr ""
-#: stock/serializers.py:773
+#: stock/serializers.py:760
msgid "Stock assignment notes"
msgstr ""
-#: stock/serializers.py:783 stock/serializers.py:1014
+#: stock/serializers.py:770 stock/serializers.py:1001
msgid "A list of stock items must be provided"
msgstr ""
-#: stock/serializers.py:872
+#: stock/serializers.py:859
msgid "Stock merging notes"
msgstr ""
-#: stock/serializers.py:877
+#: stock/serializers.py:864
msgid "Allow mismatched suppliers"
msgstr ""
-#: stock/serializers.py:878
+#: stock/serializers.py:865
msgid "Allow stock items with different supplier parts to be merged"
msgstr ""
-#: stock/serializers.py:883
+#: stock/serializers.py:870
msgid "Allow mismatched status"
msgstr ""
-#: stock/serializers.py:884
+#: stock/serializers.py:871
msgid "Allow stock items with different status codes to be merged"
msgstr ""
-#: stock/serializers.py:894
+#: stock/serializers.py:881
msgid "At least two stock items must be provided"
msgstr ""
-#: stock/serializers.py:976
+#: stock/serializers.py:963
msgid "StockItem primary key value"
msgstr ""
-#: stock/serializers.py:1004
+#: stock/serializers.py:991
msgid "Stock transaction notes"
msgstr ""
@@ -6207,7 +6166,7 @@ msgstr ""
msgid "Test Report"
msgstr ""
-#: stock/templates/stock/item.html:94
+#: stock/templates/stock/item.html:94 stock/templates/stock/item.html:295
msgid "Delete Test Data"
msgstr ""
@@ -6223,7 +6182,11 @@ msgstr ""
msgid "Install Stock Item"
msgstr ""
-#: stock/templates/stock/item.html:292 templates/js/translated/stock.js:1455
+#: stock/templates/stock/item.html:290
+msgid "Delete all test results for this stock item"
+msgstr ""
+
+#: stock/templates/stock/item.html:331 templates/js/translated/stock.js:1455
msgid "Add Test Result"
msgstr ""
@@ -6551,7 +6514,7 @@ msgstr ""
msgid "Child Items"
msgstr ""
-#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:182
+#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:144
msgid "Convert Stock Item"
msgstr ""
@@ -6572,31 +6535,19 @@ msgstr ""
msgid "This action cannot be easily undone"
msgstr ""
-#: stock/views.py:113
+#: stock/views.py:111
msgid "Stock Location QR code"
msgstr ""
-#: stock/views.py:131
-msgid "Delete All Test Data"
-msgstr ""
-
-#: stock/views.py:149
-msgid "Confirm test data deletion"
-msgstr ""
-
-#: stock/views.py:150
-msgid "Check the confirmation box"
-msgstr ""
-
-#: stock/views.py:165
+#: stock/views.py:127
msgid "Stock Item QR Code"
msgstr ""
-#: stock/views.py:216
+#: stock/views.py:178
msgid "Delete Stock Location"
msgstr ""
-#: stock/views.py:229
+#: stock/views.py:191
msgid "Delete Stock Item"
msgstr ""
@@ -6731,7 +6682,7 @@ msgid "Notifications"
msgstr ""
#: templates/InvenTree/notifications/notifications.html:51
-#: templates/InvenTree/settings/settings.html:321
+#: templates/InvenTree/settings/settings.html:340
msgid "ID"
msgstr ""
@@ -7005,32 +6956,40 @@ msgid "No category parameter templates found"
msgstr ""
#: templates/InvenTree/settings/settings.html:238
-#: templates/InvenTree/settings/settings.html:337
+#: templates/InvenTree/settings/settings.html:356
msgid "Edit Template"
msgstr ""
#: templates/InvenTree/settings/settings.html:239
-#: templates/InvenTree/settings/settings.html:338
+#: templates/InvenTree/settings/settings.html:357
msgid "Delete Template"
msgstr ""
-#: templates/InvenTree/settings/settings.html:317
+#: templates/InvenTree/settings/settings.html:279
+msgid "Create Category Parameter Template"
+msgstr ""
+
+#: templates/InvenTree/settings/settings.html:324
+msgid "Delete Category Parameter Template"
+msgstr ""
+
+#: templates/InvenTree/settings/settings.html:336
msgid "No part parameter templates found"
msgstr ""
-#: templates/InvenTree/settings/settings.html:355
+#: templates/InvenTree/settings/settings.html:374
msgid "Create Part Parameter Template"
msgstr ""
-#: templates/InvenTree/settings/settings.html:373
+#: templates/InvenTree/settings/settings.html:392
msgid "Edit Part Parameter Template"
msgstr ""
-#: templates/InvenTree/settings/settings.html:387
+#: templates/InvenTree/settings/settings.html:406
msgid "Any parameters which reference this template will also be deleted"
msgstr ""
-#: templates/InvenTree/settings/settings.html:395
+#: templates/InvenTree/settings/settings.html:414
msgid "Delete Part Parameter Template"
msgstr ""
@@ -7331,8 +7290,8 @@ msgstr ""
#: templates/about.html:11 templates/about.html:105
#: templates/js/translated/bom.js:133 templates/js/translated/bom.js:621
-#: templates/js/translated/modals.js:56 templates/js/translated/modals.js:595
-#: templates/js/translated/modals.js:689 templates/js/translated/modals.js:997
+#: templates/js/translated/modals.js:56 templates/js/translated/modals.js:601
+#: templates/js/translated/modals.js:695 templates/js/translated/modals.js:1003
#: templates/js/translated/order.js:928 templates/modals.html:15
#: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50
msgid "Close"
@@ -7404,6 +7363,10 @@ msgstr ""
msgid "Please confirm that %(email)s is an email address for user %(user_display)s."
msgstr ""
+#: templates/account/email_confirm.html:20 templates/js/translated/forms.js:630
+msgid "Confirm"
+msgstr ""
+
#: templates/account/email_confirm.html:27
#, python-format
msgid "This email confirmation link expired or is invalid. Please issue a new email confirmation request."
@@ -7619,8 +7582,8 @@ msgstr ""
#: templates/email/build_order_required_stock.html:19
#: templates/email/low_stock_notification.html:18
#: templates/js/translated/bom.js:890 templates/js/translated/build.js:1787
-#: templates/js/translated/build.js:2650 templates/js/translated/part.js:527
-#: templates/js/translated/part.js:530
+#: templates/js/translated/build.js:2650 templates/js/translated/part.js:571
+#: templates/js/translated/part.js:574
#: templates/js/translated/table_filters.js:178
msgid "Available"
msgstr ""
@@ -7638,6 +7601,12 @@ msgstr ""
msgid "Minimum Quantity"
msgstr ""
+#: templates/email/overdue_build_order.html:9
+#: templates/email/overdue_purchase_order.html:9
+#: templates/email/overdue_sales_order.html:9
+msgid "Click on the following link to view this order"
+msgstr ""
+
#: templates/image_download.html:8
msgid "Specify URL for downloading image"
msgstr ""
@@ -7654,11 +7623,11 @@ msgstr ""
msgid "Remote image must not exceed maximum allowable file size"
msgstr ""
-#: templates/js/translated/api.js:235 templates/js/translated/modals.js:1067
+#: templates/js/translated/api.js:235 templates/js/translated/modals.js:1073
msgid "No Response"
msgstr ""
-#: templates/js/translated/api.js:236 templates/js/translated/modals.js:1068
+#: templates/js/translated/api.js:236 templates/js/translated/modals.js:1074
msgid "No response from the InvenTree server"
msgstr ""
@@ -7670,27 +7639,27 @@ msgstr ""
msgid "API request returned error code 400"
msgstr ""
-#: templates/js/translated/api.js:247 templates/js/translated/modals.js:1077
+#: templates/js/translated/api.js:247 templates/js/translated/modals.js:1083
msgid "Error 401: Not Authenticated"
msgstr ""
-#: templates/js/translated/api.js:248 templates/js/translated/modals.js:1078
+#: templates/js/translated/api.js:248 templates/js/translated/modals.js:1084
msgid "Authentication credentials not supplied"
msgstr ""
-#: templates/js/translated/api.js:252 templates/js/translated/modals.js:1082
+#: templates/js/translated/api.js:252 templates/js/translated/modals.js:1088
msgid "Error 403: Permission Denied"
msgstr ""
-#: templates/js/translated/api.js:253 templates/js/translated/modals.js:1083
+#: templates/js/translated/api.js:253 templates/js/translated/modals.js:1089
msgid "You do not have the required permissions to access this function"
msgstr ""
-#: templates/js/translated/api.js:257 templates/js/translated/modals.js:1087
+#: templates/js/translated/api.js:257 templates/js/translated/modals.js:1093
msgid "Error 404: Resource Not Found"
msgstr ""
-#: templates/js/translated/api.js:258 templates/js/translated/modals.js:1088
+#: templates/js/translated/api.js:258 templates/js/translated/modals.js:1094
msgid "The requested resource could not be located on the server"
msgstr ""
@@ -7702,11 +7671,11 @@ msgstr ""
msgid "HTTP method not allowed at URL"
msgstr ""
-#: templates/js/translated/api.js:267 templates/js/translated/modals.js:1092
+#: templates/js/translated/api.js:267 templates/js/translated/modals.js:1098
msgid "Error 408: Timeout"
msgstr ""
-#: templates/js/translated/api.js:268 templates/js/translated/modals.js:1093
+#: templates/js/translated/api.js:268 templates/js/translated/modals.js:1099
msgid "Connection timeout while requesting data from server"
msgstr ""
@@ -7734,11 +7703,11 @@ msgstr ""
msgid "Upload Date"
msgstr ""
-#: templates/js/translated/attachment.js:262
+#: templates/js/translated/attachment.js:268
msgid "Edit attachment"
msgstr ""
-#: templates/js/translated/attachment.js:269
+#: templates/js/translated/attachment.js:275
msgid "Delete attachment"
msgstr ""
@@ -7771,7 +7740,7 @@ msgid "Unknown response from server"
msgstr ""
#: templates/js/translated/barcode.js:182
-#: templates/js/translated/modals.js:1057
+#: templates/js/translated/modals.js:1063
msgid "Invalid server response"
msgstr ""
@@ -7964,7 +7933,7 @@ msgid "Includes variant and substitute stock"
msgstr ""
#: templates/js/translated/bom.js:912 templates/js/translated/build.js:1820
-#: templates/js/translated/part.js:690
+#: templates/js/translated/part.js:734
msgid "Includes variant stock"
msgstr ""
@@ -8275,8 +8244,8 @@ msgstr ""
msgid "No builds matching query"
msgstr ""
-#: templates/js/translated/build.js:2448 templates/js/translated/part.js:1314
-#: templates/js/translated/part.js:1729 templates/js/translated/stock.js:1619
+#: templates/js/translated/build.js:2448 templates/js/translated/part.js:1358
+#: templates/js/translated/part.js:1825 templates/js/translated/stock.js:1619
#: templates/js/translated/stock.js:2277
msgid "Select"
msgstr ""
@@ -8370,34 +8339,34 @@ msgid "No manufacturer parts found"
msgstr ""
#: templates/js/translated/company.js:615
-#: templates/js/translated/company.js:874 templates/js/translated/part.js:565
-#: templates/js/translated/part.js:650
+#: templates/js/translated/company.js:874 templates/js/translated/part.js:609
+#: templates/js/translated/part.js:694
msgid "Template part"
msgstr ""
#: templates/js/translated/company.js:619
-#: templates/js/translated/company.js:878 templates/js/translated/part.js:569
-#: templates/js/translated/part.js:654
+#: templates/js/translated/company.js:878 templates/js/translated/part.js:613
+#: templates/js/translated/part.js:698
msgid "Assembled part"
msgstr ""
-#: templates/js/translated/company.js:747 templates/js/translated/part.js:757
+#: templates/js/translated/company.js:747 templates/js/translated/part.js:801
msgid "No parameters found"
msgstr ""
-#: templates/js/translated/company.js:784 templates/js/translated/part.js:799
+#: templates/js/translated/company.js:784 templates/js/translated/part.js:843
msgid "Edit parameter"
msgstr ""
-#: templates/js/translated/company.js:785 templates/js/translated/part.js:800
+#: templates/js/translated/company.js:785 templates/js/translated/part.js:844
msgid "Delete parameter"
msgstr ""
-#: templates/js/translated/company.js:804 templates/js/translated/part.js:817
+#: templates/js/translated/company.js:804 templates/js/translated/part.js:861
msgid "Edit Parameter"
msgstr ""
-#: templates/js/translated/company.js:815 templates/js/translated/part.js:829
+#: templates/js/translated/company.js:815 templates/js/translated/part.js:873
msgid "Delete Parameter"
msgstr ""
@@ -8568,12 +8537,12 @@ msgid "Select Label Template"
msgstr ""
#: templates/js/translated/modals.js:82 templates/js/translated/modals.js:142
-#: templates/js/translated/modals.js:621
+#: templates/js/translated/modals.js:627
msgid "Cancel"
msgstr ""
#: templates/js/translated/modals.js:83 templates/js/translated/modals.js:141
-#: templates/js/translated/modals.js:688 templates/js/translated/modals.js:996
+#: templates/js/translated/modals.js:694 templates/js/translated/modals.js:1002
#: templates/modals.html:28 templates/modals.html:51
msgid "Submit"
msgstr ""
@@ -8582,47 +8551,47 @@ msgstr ""
msgid "Form Title"
msgstr ""
-#: templates/js/translated/modals.js:403
+#: templates/js/translated/modals.js:421
msgid "Waiting for server..."
msgstr ""
-#: templates/js/translated/modals.js:562
+#: templates/js/translated/modals.js:568
msgid "Show Error Information"
msgstr ""
-#: templates/js/translated/modals.js:620
+#: templates/js/translated/modals.js:626
msgid "Accept"
msgstr ""
-#: templates/js/translated/modals.js:677
+#: templates/js/translated/modals.js:683
msgid "Loading Data"
msgstr ""
-#: templates/js/translated/modals.js:948
+#: templates/js/translated/modals.js:954
msgid "Invalid response from server"
msgstr ""
-#: templates/js/translated/modals.js:948
+#: templates/js/translated/modals.js:954
msgid "Form data missing from server response"
msgstr ""
-#: templates/js/translated/modals.js:960
+#: templates/js/translated/modals.js:966
msgid "Error posting form data"
msgstr ""
-#: templates/js/translated/modals.js:1057
+#: templates/js/translated/modals.js:1063
msgid "JSON response missing form data"
msgstr ""
-#: templates/js/translated/modals.js:1072
+#: templates/js/translated/modals.js:1078
msgid "Error 400: Bad Request"
msgstr ""
-#: templates/js/translated/modals.js:1073
+#: templates/js/translated/modals.js:1079
msgid "Server returned error code 400"
msgstr ""
-#: templates/js/translated/modals.js:1096
+#: templates/js/translated/modals.js:1102
msgid "Error requesting form data"
msgstr ""
@@ -8672,11 +8641,11 @@ msgstr ""
msgid "Mark as read"
msgstr ""
-#: templates/js/translated/notification.js:259
+#: templates/js/translated/notification.js:260
msgid "No unread notifications"
msgstr ""
-#: templates/js/translated/notification.js:300 templates/notifications.html:10
+#: templates/js/translated/notification.js:302 templates/notifications.html:10
msgid "Notifications will load here"
msgstr ""
@@ -8844,7 +8813,7 @@ msgstr ""
msgid "Receive Purchase Order Items"
msgstr ""
-#: templates/js/translated/order.js:1602 templates/js/translated/part.js:870
+#: templates/js/translated/order.js:1602 templates/js/translated/part.js:914
msgid "No purchase orders found"
msgstr ""
@@ -8879,7 +8848,7 @@ msgstr ""
#: templates/js/translated/order.js:1937 templates/js/translated/order.js:2139
#: templates/js/translated/order.js:3467 templates/js/translated/order.js:3978
-#: templates/js/translated/part.js:1948 templates/js/translated/part.js:2301
+#: templates/js/translated/part.js:2044 templates/js/translated/part.js:2397
msgid "Unit Price"
msgstr ""
@@ -8889,11 +8858,11 @@ msgid "Total Price"
msgstr ""
#: templates/js/translated/order.js:1993 templates/js/translated/order.js:3525
-#: templates/js/translated/part.js:979
+#: templates/js/translated/part.js:1023
msgid "This line item is overdue"
msgstr ""
-#: templates/js/translated/order.js:2052 templates/js/translated/part.js:1025
+#: templates/js/translated/order.js:2052 templates/js/translated/part.js:1069
msgid "Receive line item"
msgstr ""
@@ -9154,165 +9123,209 @@ msgstr ""
msgid "Create Part Variant"
msgstr ""
+#: templates/js/translated/part.js:405
+msgid "Active Part"
+msgstr ""
+
+#: templates/js/translated/part.js:406
+msgid "Part cannot be deleted as it is currently active"
+msgstr ""
+
+#: templates/js/translated/part.js:420
+msgid "Deleting this part cannot be reversed"
+msgstr ""
+
+#: templates/js/translated/part.js:422
+msgid "Any stock items for this part will be deleted"
+msgstr ""
+
#: templates/js/translated/part.js:423
+msgid "This part will be removed from any Bills of Material"
+msgstr ""
+
+#: templates/js/translated/part.js:424
+msgid "All manufacturer and supplier information for this part will be deleted"
+msgstr ""
+
+#: templates/js/translated/part.js:431
+msgid "Delete Part"
+msgstr ""
+
+#: templates/js/translated/part.js:467
msgid "You are subscribed to notifications for this item"
msgstr ""
-#: templates/js/translated/part.js:425
+#: templates/js/translated/part.js:469
msgid "You have subscribed to notifications for this item"
msgstr ""
-#: templates/js/translated/part.js:430
+#: templates/js/translated/part.js:474
msgid "Subscribe to notifications for this item"
msgstr ""
-#: templates/js/translated/part.js:432
+#: templates/js/translated/part.js:476
msgid "You have unsubscribed to notifications for this item"
msgstr ""
-#: templates/js/translated/part.js:449
+#: templates/js/translated/part.js:493
msgid "Validating the BOM will mark each line item as valid"
msgstr ""
-#: templates/js/translated/part.js:459
+#: templates/js/translated/part.js:503
msgid "Validate Bill of Materials"
msgstr ""
-#: templates/js/translated/part.js:462
+#: templates/js/translated/part.js:506
msgid "Validated Bill of Materials"
msgstr ""
-#: templates/js/translated/part.js:487
+#: templates/js/translated/part.js:531
msgid "Copy Bill of Materials"
msgstr ""
-#: templates/js/translated/part.js:513 templates/js/translated/part.js:1397
+#: templates/js/translated/part.js:557 templates/js/translated/part.js:1441
#: templates/js/translated/table_filters.js:452
msgid "Low stock"
msgstr ""
-#: templates/js/translated/part.js:523 templates/js/translated/part.js:1409
+#: templates/js/translated/part.js:567 templates/js/translated/part.js:1453
msgid "No stock available"
msgstr ""
-#: templates/js/translated/part.js:557 templates/js/translated/part.js:642
+#: templates/js/translated/part.js:601 templates/js/translated/part.js:686
msgid "Trackable part"
msgstr ""
-#: templates/js/translated/part.js:561 templates/js/translated/part.js:646
+#: templates/js/translated/part.js:605 templates/js/translated/part.js:690
msgid "Virtual part"
msgstr ""
-#: templates/js/translated/part.js:573
+#: templates/js/translated/part.js:617
msgid "Subscribed part"
msgstr ""
-#: templates/js/translated/part.js:577
+#: templates/js/translated/part.js:621
msgid "Salable part"
msgstr ""
-#: templates/js/translated/part.js:705
+#: templates/js/translated/part.js:749
msgid "No variants found"
msgstr ""
-#: templates/js/translated/part.js:1095
+#: templates/js/translated/part.js:1139
msgid "Delete part relationship"
msgstr ""
-#: templates/js/translated/part.js:1119
+#: templates/js/translated/part.js:1163
msgid "Delete Part Relationship"
msgstr ""
-#: templates/js/translated/part.js:1184 templates/js/translated/part.js:1480
+#: templates/js/translated/part.js:1228 templates/js/translated/part.js:1524
msgid "No parts found"
msgstr ""
-#: templates/js/translated/part.js:1223
+#: templates/js/translated/part.js:1267
msgid "Not available"
msgstr ""
-#: templates/js/translated/part.js:1374
+#: templates/js/translated/part.js:1418
msgid "No category"
msgstr ""
-#: templates/js/translated/part.js:1504 templates/js/translated/part.js:1664
+#: templates/js/translated/part.js:1548 templates/js/translated/part.js:1760
#: templates/js/translated/stock.js:2238
msgid "Display as list"
msgstr ""
-#: templates/js/translated/part.js:1520
+#: templates/js/translated/part.js:1564
msgid "Display as grid"
msgstr ""
-#: templates/js/translated/part.js:1683 templates/js/translated/stock.js:2257
+#: templates/js/translated/part.js:1630
+msgid "Set the part category for the selected parts"
+msgstr ""
+
+#: templates/js/translated/part.js:1635
+msgid "Set Part Category"
+msgstr ""
+
+#: templates/js/translated/part.js:1640
+msgid "Select Part Category"
+msgstr ""
+
+#: templates/js/translated/part.js:1653
+msgid "Category is required"
+msgstr ""
+
+#: templates/js/translated/part.js:1779 templates/js/translated/stock.js:2257
msgid "Display as tree"
msgstr ""
-#: templates/js/translated/part.js:1747
+#: templates/js/translated/part.js:1843
msgid "Subscribed category"
msgstr ""
-#: templates/js/translated/part.js:1761 templates/js/translated/stock.js:2301
+#: templates/js/translated/part.js:1857 templates/js/translated/stock.js:2301
msgid "Path"
msgstr ""
-#: templates/js/translated/part.js:1805
+#: templates/js/translated/part.js:1901
msgid "No test templates matching query"
msgstr ""
-#: templates/js/translated/part.js:1856 templates/js/translated/stock.js:1233
+#: templates/js/translated/part.js:1952 templates/js/translated/stock.js:1233
msgid "Edit test result"
msgstr ""
-#: templates/js/translated/part.js:1857 templates/js/translated/stock.js:1234
+#: templates/js/translated/part.js:1953 templates/js/translated/stock.js:1234
#: templates/js/translated/stock.js:1493
msgid "Delete test result"
msgstr ""
-#: templates/js/translated/part.js:1863
+#: templates/js/translated/part.js:1959
msgid "This test is defined for a parent part"
msgstr ""
-#: templates/js/translated/part.js:1885
+#: templates/js/translated/part.js:1981
msgid "Edit Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:1899
+#: templates/js/translated/part.js:1995
msgid "Delete Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:1924
+#: templates/js/translated/part.js:2020
#, python-brace-format
msgid "No ${human_name} information found"
msgstr ""
-#: templates/js/translated/part.js:1981
+#: templates/js/translated/part.js:2077
#, python-brace-format
msgid "Edit ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:1982
+#: templates/js/translated/part.js:2078
#, python-brace-format
msgid "Delete ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:2096
+#: templates/js/translated/part.js:2192
msgid "Current Stock"
msgstr ""
-#: templates/js/translated/part.js:2129
+#: templates/js/translated/part.js:2225
msgid "No scheduling information available for this part"
msgstr ""
-#: templates/js/translated/part.js:2155
+#: templates/js/translated/part.js:2251
msgid "Scheduled Stock Quantities"
msgstr ""
-#: templates/js/translated/part.js:2225
+#: templates/js/translated/part.js:2321
msgid "Single Price"
msgstr ""
-#: templates/js/translated/part.js:2244
+#: templates/js/translated/part.js:2340
msgid "Single Price Difference"
msgstr ""
diff --git a/InvenTree/locale/ru/LC_MESSAGES/django.po b/InvenTree/locale/ru/LC_MESSAGES/django.po
index b3162ac9ce..a4592c4198 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: 2022-06-05 14:26+0000\n"
-"PO-Revision-Date: 2022-06-05 14:34\n"
+"POT-Creation-Date: 2022-06-06 22:59+0000\n"
+"PO-Revision-Date: 2022-06-07 14:34\n"
"Last-Translator: \n"
"Language-Team: Russian\n"
"Language: ru_RU\n"
@@ -17,7 +17,7 @@ msgstr ""
"X-Crowdin-File: /[inventree.InvenTree] l10/InvenTree/locale/en/LC_MESSAGES/django.po\n"
"X-Crowdin-File-ID: 154\n"
-#: InvenTree/api.py:46
+#: InvenTree/api.py:49
msgid "API endpoint not found"
msgstr "Конечная точка API не обнаружена"
@@ -29,275 +29,273 @@ msgstr ""
msgid "Enter date"
msgstr "Введите дату"
-#: InvenTree/forms.py:117 templates/account/email_confirm.html:20
-#: templates/js/translated/forms.js:630
-msgid "Confirm"
-msgstr "Подтвердить"
-
-#: InvenTree/forms.py:134
+#: InvenTree/forms.py:117
msgid "Confirm delete"
msgstr "Подтвердите удаление"
-#: InvenTree/forms.py:135
+#: InvenTree/forms.py:118
msgid "Confirm item deletion"
msgstr "Подтвердите удаление элемента"
-#: InvenTree/forms.py:167
+#: InvenTree/forms.py:150
msgid "Enter password"
msgstr "Введите пароль"
-#: InvenTree/forms.py:168
+#: InvenTree/forms.py:151
msgid "Enter new password"
msgstr "Введите новый пароль"
-#: InvenTree/forms.py:175
+#: InvenTree/forms.py:158
msgid "Confirm password"
msgstr "Подтвердить пароль"
-#: InvenTree/forms.py:176
+#: InvenTree/forms.py:159
msgid "Confirm new password"
msgstr "Подтвердите новый пароль"
-#: InvenTree/forms.py:213
-msgid "Select Category"
-msgstr "Выбрать категорию"
-
-#: InvenTree/forms.py:234
+#: InvenTree/forms.py:184
msgid "Email (again)"
msgstr "Email (еще раз)"
-#: InvenTree/forms.py:238
+#: InvenTree/forms.py:188
msgid "Email address confirmation"
msgstr "Подтверждение адреса электронной почты"
-#: InvenTree/forms.py:259
+#: InvenTree/forms.py:209
msgid "You must type the same email each time."
msgstr "Вы должны вводить один и тот же адрес электронной почты."
-#: InvenTree/helpers.py:402
+#: InvenTree/helpers.py:404
#, python-brace-format
msgid "Duplicate serial: {sn}"
msgstr "Повторяющийся серийный номер: {sn}"
-#: InvenTree/helpers.py:409 order/models.py:365 order/models.py:517
+#: InvenTree/helpers.py:411 order/models.py:370 order/models.py:522
msgid "Invalid quantity provided"
msgstr "недопустимое количество"
-#: InvenTree/helpers.py:412
+#: InvenTree/helpers.py:414
msgid "Empty serial number string"
msgstr "Пустая строка серийного номера"
-#: InvenTree/helpers.py:444
+#: InvenTree/helpers.py:446
#, python-brace-format
msgid "Invalid group range: {g}"
msgstr ""
-#: InvenTree/helpers.py:447
+#: InvenTree/helpers.py:449
#, python-brace-format
msgid "Invalid group: {g}"
msgstr "Некорректный идентификатор группы {g}"
-#: InvenTree/helpers.py:475
+#: InvenTree/helpers.py:477
#, python-brace-format
msgid "Invalid group sequence: {g}"
msgstr ""
-#: InvenTree/helpers.py:483
+#: InvenTree/helpers.py:485
#, python-brace-format
msgid "Invalid/no group {group}"
msgstr "Недопустимая/несуществующая группа {group}"
-#: InvenTree/helpers.py:489
+#: InvenTree/helpers.py:491
msgid "No serial numbers found"
msgstr "Серийных номеров не найдено"
-#: InvenTree/helpers.py:493
+#: InvenTree/helpers.py:495
#, python-brace-format
msgid "Number of unique serial numbers ({s}) must match quantity ({q})"
msgstr ""
-#: InvenTree/models.py:174
+#: InvenTree/models.py:178
msgid "Missing file"
msgstr "Файл не найден"
-#: InvenTree/models.py:175
+#: InvenTree/models.py:179
msgid "Missing external link"
msgstr "Отсутствует внешняя ссылка"
-#: InvenTree/models.py:187 stock/models.py:2087
-#: templates/js/translated/attachment.js:101
-#: templates/js/translated/attachment.js:198
+#: InvenTree/models.py:191 stock/models.py:2091
+#: templates/js/translated/attachment.js:103
+#: templates/js/translated/attachment.js:194
msgid "Attachment"
msgstr "Вложения"
-#: InvenTree/models.py:188
+#: InvenTree/models.py:192
msgid "Select file to attach"
msgstr "Выберите файл для вложения"
-#: InvenTree/models.py:194 company/models.py:123 company/models.py:272
-#: company/models.py:506 order/models.py:135 order/models.py:1235
+#: InvenTree/models.py:198 company/models.py:123 company/models.py:272
+#: company/models.py:506 order/models.py:136 order/models.py:1251
#: part/models.py:795
#: report/templates/report/inventree_build_order_base.html:165
-#: templates/js/translated/company.js:655
-#: templates/js/translated/company.js:946 templates/js/translated/order.js:2676
-#: templates/js/translated/part.js:1441
+#: templates/js/translated/company.js:640
+#: templates/js/translated/company.js:931 templates/js/translated/order.js:2676
+#: templates/js/translated/part.js:1485
msgid "Link"
msgstr "Ссылка"
-#: InvenTree/models.py:195 build/models.py:320 part/models.py:796
+#: InvenTree/models.py:199 build/models.py:320 part/models.py:796
#: stock/models.py:642
msgid "Link to external URL"
msgstr "Ссылка на внешний URL"
-#: InvenTree/models.py:198 templates/js/translated/attachment.js:102
-#: templates/js/translated/attachment.js:242
+#: InvenTree/models.py:202 templates/js/translated/attachment.js:104
+#: templates/js/translated/attachment.js:238
msgid "Comment"
msgstr "Комментарий"
-#: InvenTree/models.py:198
+#: InvenTree/models.py:202
msgid "File comment"
msgstr "Комментарий к файлу"
-#: InvenTree/models.py:204 InvenTree/models.py:205 common/models.py:1499
-#: common/models.py:1500 common/models.py:1728 common/models.py:1729
-#: common/models.py:1991 common/models.py:1992 part/models.py:2153
-#: part/models.py:2173 plugin/models.py:238 plugin/models.py:239
+#: InvenTree/models.py:208 InvenTree/models.py:209 common/models.py:1506
+#: common/models.py:1507 common/models.py:1735 common/models.py:1736
+#: common/models.py:1998 common/models.py:1999 part/models.py:2141
+#: part/models.py:2161 plugin/models.py:238 plugin/models.py:239
#: report/templates/report/inventree_test_report_base.html:96
-#: templates/js/translated/stock.js:2513
+#: templates/js/translated/stock.js:2523
msgid "User"
msgstr "Пользователь"
-#: InvenTree/models.py:208
+#: InvenTree/models.py:212
msgid "upload date"
msgstr "дата загрузки"
-#: InvenTree/models.py:230
+#: InvenTree/models.py:234
msgid "Filename must not be empty"
msgstr "Имя файла не должно быть пустым"
-#: InvenTree/models.py:253
+#: InvenTree/models.py:257
msgid "Invalid attachment directory"
msgstr "Неверная директория вложений"
-#: InvenTree/models.py:263
+#: InvenTree/models.py:267
#, python-brace-format
msgid "Filename contains illegal character '{c}'"
msgstr "Имя файла содержит запрещенные символы '{c}'"
-#: InvenTree/models.py:266
+#: InvenTree/models.py:270
msgid "Filename missing extension"
msgstr "Отсутствует расширение для имени файла"
-#: InvenTree/models.py:273
+#: InvenTree/models.py:277
msgid "Attachment with this filename already exists"
msgstr "Вложение с таким именем файла уже существует"
-#: InvenTree/models.py:280
+#: InvenTree/models.py:284
msgid "Error renaming file"
msgstr "Ошибка переименования файла"
-#: InvenTree/models.py:314
+#: InvenTree/models.py:318
msgid "Invalid choice"
msgstr "Неверный выбор"
-#: InvenTree/models.py:333 InvenTree/models.py:334 common/models.py:1714
+#: InvenTree/models.py:337 InvenTree/models.py:338 common/models.py:1721
#: company/models.py:354 label/models.py:101 part/models.py:739
-#: part/models.py:2331 plugin/models.py:93 report/models.py:151
+#: part/models.py:2319 plugin/models.py:93 report/models.py:151
#: templates/InvenTree/notifications/notifications.html:84
#: templates/InvenTree/settings/mixins/urls.html:13
#: templates/InvenTree/settings/plugin.html:49
#: templates/InvenTree/settings/plugin.html:132
#: templates/InvenTree/settings/plugin_settings.html:23
#: templates/InvenTree/settings/settings.html:346
-#: templates/js/translated/company.js:539
-#: templates/js/translated/company.js:757 templates/js/translated/part.js:615
-#: templates/js/translated/part.js:767 templates/js/translated/part.js:1736
-#: templates/js/translated/stock.js:2283
+#: templates/js/translated/company.js:530
+#: templates/js/translated/company.js:742 templates/js/translated/part.js:659
+#: templates/js/translated/part.js:811 templates/js/translated/part.js:1832
+#: templates/js/translated/stock.js:2293
msgid "Name"
msgstr "Название"
-#: InvenTree/models.py:340 build/models.py:197
+#: InvenTree/models.py:344 build/models.py:197
#: build/templates/build/detail.html:24 company/models.py:278
#: company/models.py:512 company/templates/company/company_base.html:71
#: company/templates/company/manufacturer_part.html:75
#: company/templates/company/supplier_part.html:73 label/models.py:108
-#: order/models.py:133 part/models.py:762 part/templates/part/category.html:74
-#: part/templates/part/part_base.html:167
-#: part/templates/part/set_category.html:14 report/models.py:164
+#: order/models.py:134 part/models.py:762 part/templates/part/category.html:74
+#: part/templates/part/part_base.html:167 report/models.py:164
#: report/models.py:509 report/models.py:550
#: report/templates/report/inventree_build_order_base.html:118
#: stock/templates/stock/location.html:103
#: templates/InvenTree/settings/plugin_settings.html:33
-#: templates/js/translated/bom.js:553 templates/js/translated/bom.js:851
-#: templates/js/translated/build.js:2476 templates/js/translated/company.js:401
-#: templates/js/translated/company.js:666
-#: templates/js/translated/company.js:957 templates/js/translated/order.js:1656
+#: templates/js/translated/bom.js:553 templates/js/translated/bom.js:845
+#: templates/js/translated/build.js:2476 templates/js/translated/company.js:395
+#: templates/js/translated/company.js:651
+#: templates/js/translated/company.js:942 templates/js/translated/order.js:1656
#: templates/js/translated/order.js:1888 templates/js/translated/order.js:2476
-#: templates/js/translated/part.js:674 templates/js/translated/part.js:1082
-#: templates/js/translated/part.js:1355 templates/js/translated/part.js:1755
-#: templates/js/translated/part.js:1824 templates/js/translated/stock.js:1676
-#: templates/js/translated/stock.js:2295 templates/js/translated/stock.js:2350
+#: templates/js/translated/part.js:718 templates/js/translated/part.js:1126
+#: templates/js/translated/part.js:1399 templates/js/translated/part.js:1851
+#: templates/js/translated/part.js:1920 templates/js/translated/stock.js:1686
+#: templates/js/translated/stock.js:2305 templates/js/translated/stock.js:2360
msgid "Description"
msgstr "Описание"
-#: InvenTree/models.py:341
+#: InvenTree/models.py:345
msgid "Description (optional)"
msgstr "Описание (необязательно)"
-#: InvenTree/models.py:349
+#: InvenTree/models.py:353
msgid "parent"
msgstr "родитель"
-#: InvenTree/serializers.py:52 part/models.py:2652
+#: InvenTree/models.py:466
+msgid "Server Error"
+msgstr ""
+
+#: InvenTree/models.py:467
+msgid "An error has been logged by the server."
+msgstr ""
+
+#: InvenTree/serializers.py:52 part/models.py:2640
msgid "Must be a valid number"
msgstr "Должно быть действительным номером"
-#: InvenTree/serializers.py:271
+#: InvenTree/serializers.py:263
msgid "Filename"
msgstr "Имя файла"
-#: InvenTree/serializers.py:306
+#: InvenTree/serializers.py:298
msgid "Invalid value"
msgstr "Неверное значение"
-#: InvenTree/serializers.py:328
+#: InvenTree/serializers.py:320
msgid "Data File"
msgstr "Файл данных"
-#: InvenTree/serializers.py:329
+#: InvenTree/serializers.py:321
msgid "Select data file for upload"
msgstr "Выберите файл данных для загрузки"
-#: InvenTree/serializers.py:350
+#: InvenTree/serializers.py:342
msgid "Unsupported file type"
msgstr "Неподдерживаемый тип файла"
-#: InvenTree/serializers.py:356
+#: InvenTree/serializers.py:348
msgid "File is too large"
msgstr "Файл слишком большой"
-#: InvenTree/serializers.py:377
+#: InvenTree/serializers.py:369
msgid "No columns found in file"
msgstr "Столбцы в файле не найдены"
-#: InvenTree/serializers.py:380
+#: InvenTree/serializers.py:372
msgid "No data rows found in file"
msgstr "Строки данных в файле не найдены"
-#: InvenTree/serializers.py:503
+#: InvenTree/serializers.py:495
msgid "No data rows provided"
msgstr "Строки данных в файле не найдены"
-#: InvenTree/serializers.py:506
+#: InvenTree/serializers.py:498
msgid "No data columns supplied"
msgstr ""
-#: InvenTree/serializers.py:583
+#: InvenTree/serializers.py:575
#, python-brace-format
msgid "Missing required column: '{name}'"
msgstr ""
-#: InvenTree/serializers.py:592
+#: InvenTree/serializers.py:584
#, python-brace-format
msgid "Duplicate column: '{col}'"
msgstr "Повторяющийся столбец: '{col}'"
@@ -440,7 +438,7 @@ msgstr "Потерян"
msgid "Returned"
msgstr "Возвращено"
-#: InvenTree/status_codes.py:141 order/models.py:1114
+#: InvenTree/status_codes.py:141 order/models.py:1130
#: templates/js/translated/order.js:3264 templates/js/translated/order.js:3607
msgid "Shipped"
msgstr "Доставлено"
@@ -525,7 +523,7 @@ msgstr "Отделить от родительского элемента"
msgid "Split child item"
msgstr "Разбить дочерний элемент"
-#: InvenTree/status_codes.py:281 templates/js/translated/stock.js:2020
+#: InvenTree/status_codes.py:281 templates/js/translated/stock.js:2030
msgid "Merged stock items"
msgstr "Объединенные позиции на складе"
@@ -597,27 +595,27 @@ msgstr "Перегрузка не может превысить 100%"
msgid "Invalid value for overage"
msgstr ""
-#: InvenTree/views.py:522
+#: InvenTree/views.py:521
msgid "Delete Item"
msgstr "Удалить элемент"
-#: InvenTree/views.py:571
+#: InvenTree/views.py:570
msgid "Check box to confirm item deletion"
msgstr "Установите флажок для подтверждения удаления элемента"
-#: InvenTree/views.py:586 templates/InvenTree/settings/user.html:22
+#: InvenTree/views.py:585 templates/InvenTree/settings/user.html:22
msgid "Edit User Information"
msgstr "Редактировать информацию о пользователе"
-#: InvenTree/views.py:598 templates/InvenTree/settings/user.html:19
+#: InvenTree/views.py:597 templates/InvenTree/settings/user.html:19
msgid "Set Password"
msgstr "Установить пароль"
-#: InvenTree/views.py:618
+#: InvenTree/views.py:617
msgid "Password fields must match"
msgstr "Пароли должны совпадать"
-#: InvenTree/views.py:842 templates/navbar.html:152
+#: InvenTree/views.py:807 templates/navbar.html:152
msgid "System Information"
msgstr "Информация о системе"
@@ -628,6 +626,7 @@ msgstr "Неверный выбор для родительской сборки
#: build/models.py:131 build/templates/build/build_base.html:9
#: build/templates/build/build_base.html:27
#: report/templates/report/inventree_build_order_base.html:106
+#: templates/email/overdue_build_order.html:15
#: templates/js/translated/build.js:727
msgid "Build Order"
msgstr "Порядок сборки"
@@ -646,12 +645,12 @@ msgstr "Порядок сборки"
msgid "Build Order Reference"
msgstr "Ссылка на заказ"
-#: build/models.py:189 order/models.py:288 order/models.py:638
-#: order/models.py:916 part/models.py:2570
+#: build/models.py:189 order/models.py:293 order/models.py:654
+#: order/models.py:932 part/models.py:2558
#: part/templates/part/upload_bom.html:54
#: report/templates/report/inventree_po_report.html:91
#: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:688 templates/js/translated/bom.js:858
+#: templates/js/translated/bom.js:690 templates/js/translated/bom.js:852
#: templates/js/translated/build.js:1777 templates/js/translated/order.js:1919
#: templates/js/translated/order.js:2120 templates/js/translated/order.js:3448
#: templates/js/translated/order.js:3959
@@ -673,13 +672,12 @@ msgstr ""
#: build/models.py:215 build/templates/build/build_base.html:77
#: build/templates/build/detail.html:29 company/models.py:647
-#: order/models.py:1012 order/models.py:1103 part/models.py:336
-#: part/models.py:2099 part/models.py:2114 part/models.py:2133
-#: part/models.py:2151 part/models.py:2250 part/models.py:2370
-#: part/models.py:2460 part/models.py:2545 part/models.py:2821
-#: part/serializers.py:793 part/templates/part/part_app_base.html:8
+#: order/models.py:1028 order/models.py:1119 part/models.py:336
+#: part/models.py:2087 part/models.py:2102 part/models.py:2121
+#: part/models.py:2139 part/models.py:2238 part/models.py:2358
+#: part/models.py:2448 part/models.py:2533 part/models.py:2809
+#: part/serializers.py:795 part/templates/part/part_app_base.html:8
#: part/templates/part/part_pricing.html:12
-#: part/templates/part/set_category.html:13
#: part/templates/part/upload_bom.html:52
#: report/templates/report/inventree_build_order_base.html:110
#: report/templates/report/inventree_po_report.html:89
@@ -687,22 +685,23 @@ msgstr ""
#: templates/InvenTree/search.html:80
#: templates/email/build_order_required_stock.html:17
#: templates/email/low_stock_notification.html:16
+#: templates/email/overdue_build_order.html:16
#: templates/js/translated/barcode.js:435 templates/js/translated/bom.js:552
-#: templates/js/translated/bom.js:687 templates/js/translated/bom.js:805
+#: templates/js/translated/bom.js:689 templates/js/translated/bom.js:799
#: templates/js/translated/build.js:1153 templates/js/translated/build.js:1647
#: templates/js/translated/build.js:2083 templates/js/translated/build.js:2481
-#: templates/js/translated/company.js:252
-#: templates/js/translated/company.js:486
-#: templates/js/translated/company.js:607
-#: templates/js/translated/company.js:866 templates/js/translated/order.js:100
+#: templates/js/translated/company.js:253
+#: templates/js/translated/company.js:482
+#: templates/js/translated/company.js:592
+#: templates/js/translated/company.js:851 templates/js/translated/order.js:100
#: templates/js/translated/order.js:883 templates/js/translated/order.js:1315
#: templates/js/translated/order.js:1873 templates/js/translated/order.js:2819
#: templates/js/translated/order.js:3217 templates/js/translated/order.js:3432
-#: templates/js/translated/part.js:1067 templates/js/translated/part.js:1137
-#: templates/js/translated/part.js:1333 templates/js/translated/stock.js:531
-#: templates/js/translated/stock.js:696 templates/js/translated/stock.js:903
-#: templates/js/translated/stock.js:1633 templates/js/translated/stock.js:2376
-#: templates/js/translated/stock.js:2571 templates/js/translated/stock.js:2705
+#: templates/js/translated/part.js:1111 templates/js/translated/part.js:1181
+#: templates/js/translated/part.js:1377 templates/js/translated/stock.js:530
+#: templates/js/translated/stock.js:695 templates/js/translated/stock.js:902
+#: templates/js/translated/stock.js:1643 templates/js/translated/stock.js:2386
+#: templates/js/translated/stock.js:2581 templates/js/translated/stock.js:2715
msgid "Part"
msgstr "Детали"
@@ -768,12 +767,12 @@ msgstr "Код партии"
msgid "Batch code for this build output"
msgstr "Код партии для этого вывода сборки"
-#: build/models.py:282 order/models.py:137 part/models.py:932
+#: build/models.py:282 order/models.py:138 part/models.py:932
#: part/templates/part/part_base.html:305 templates/js/translated/order.js:2489
msgid "Creation Date"
msgstr "Дата создания"
-#: build/models.py:286 order/models.py:660
+#: build/models.py:286 order/models.py:676
msgid "Target completion date"
msgstr "Целевая дата завершения"
@@ -781,7 +780,7 @@ msgstr "Целевая дата завершения"
msgid "Target date for build completion. Build will be overdue after this date."
msgstr "Целевая дата для сборки. Сборка будет просрочена после этой даты."
-#: build/models.py:290 order/models.py:331
+#: build/models.py:290 order/models.py:336
#: templates/js/translated/build.js:2558
msgid "Completion Date"
msgstr "Дата завершения"
@@ -799,7 +798,7 @@ msgid "User who issued this build order"
msgstr "Пользователь, выпустивший этот заказ на сборку"
#: build/models.py:313 build/templates/build/build_base.html:190
-#: build/templates/build/detail.html:115 order/models.py:151
+#: build/templates/build/detail.html:115 order/models.py:152
#: order/templates/order/order_base.html:176
#: order/templates/order/sales_order_base.html:183 part/models.py:936
#: report/templates/report/inventree_build_order_base.html:159
@@ -822,20 +821,20 @@ msgstr "Внешняя ссылка"
#: build/models.py:324 build/serializers.py:374
#: build/templates/build/sidebar.html:21 company/models.py:134
#: company/models.py:519 company/templates/company/sidebar.html:25
-#: order/models.py:155 order/models.py:918 order/models.py:1213
+#: order/models.py:156 order/models.py:934 order/models.py:1229
#: order/templates/order/po_sidebar.html:11
#: order/templates/order/so_sidebar.html:17 part/models.py:921
#: part/templates/part/part_sidebar.html:59
#: report/templates/report/inventree_build_order_base.html:173
-#: stock/models.py:713 stock/models.py:1985 stock/models.py:2093
+#: stock/models.py:713 stock/models.py:1989 stock/models.py:2097
#: stock/serializers.py:315 stock/serializers.py:444 stock/serializers.py:486
-#: stock/serializers.py:772 stock/serializers.py:871 stock/serializers.py:1003
+#: stock/serializers.py:759 stock/serializers.py:858 stock/serializers.py:990
#: stock/templates/stock/stock_sidebar.html:25
-#: templates/js/translated/barcode.js:100 templates/js/translated/bom.js:1044
-#: templates/js/translated/company.js:962 templates/js/translated/order.js:2040
+#: templates/js/translated/barcode.js:100 templates/js/translated/bom.js:1038
+#: templates/js/translated/company.js:947 templates/js/translated/order.js:2040
#: templates/js/translated/order.js:2191 templates/js/translated/order.js:2687
#: templates/js/translated/order.js:3632 templates/js/translated/order.js:4030
-#: templates/js/translated/stock.js:1307 templates/js/translated/stock.js:1916
+#: templates/js/translated/stock.js:1317 templates/js/translated/stock.js:1926
msgid "Notes"
msgstr "Заметки"
@@ -855,44 +854,44 @@ msgstr "Вывод сборки уже завершен"
msgid "Build output does not match Build Order"
msgstr "Вывод сборки не совпадает с порядком сборки"
-#: build/models.py:1108
+#: build/models.py:1111
msgid "Build item must specify a build output, as master part is marked as trackable"
msgstr "Элемент сборки должен указать вывод сборки, так как основная часть помечена как отслеживаемая"
-#: build/models.py:1117
+#: build/models.py:1120
#, python-brace-format
msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})"
msgstr ""
-#: build/models.py:1127
+#: build/models.py:1130
msgid "Stock item is over-allocated"
msgstr "Предмет на складе перераспределен"
-#: build/models.py:1133 order/models.py:1372
+#: build/models.py:1136 order/models.py:1388
msgid "Allocation quantity must be greater than zero"
msgstr "Выделенное количество должно быть больше нуля"
-#: build/models.py:1139
+#: build/models.py:1142
msgid "Quantity must be 1 for serialized stock"
msgstr "Количество должно быть 1 для сериализованных запасов"
-#: build/models.py:1196
+#: build/models.py:1199
msgid "Selected stock item not found in BOM"
msgstr "Выбранная единица хранения не найдена в BOM"
-#: build/models.py:1265 stock/templates/stock/item_base.html:177
+#: build/models.py:1268 stock/templates/stock/item_base.html:177
#: templates/InvenTree/search.html:137 templates/js/translated/build.js:2454
#: templates/navbar.html:38
msgid "Build"
msgstr "Сборка"
-#: build/models.py:1266
+#: build/models.py:1269
msgid "Build to allocate parts"
msgstr ""
-#: build/models.py:1282 build/serializers.py:603 order/serializers.py:994
-#: order/serializers.py:1015 stock/serializers.py:382 stock/serializers.py:703
-#: stock/serializers.py:829 stock/templates/stock/item_base.html:10
+#: build/models.py:1285 build/serializers.py:603 order/serializers.py:996
+#: order/serializers.py:1017 stock/serializers.py:382 stock/serializers.py:690
+#: stock/serializers.py:816 stock/templates/stock/item_base.html:10
#: stock/templates/stock/item_base.html:23
#: stock/templates/stock/item_base.html:199
#: templates/js/translated/build.js:738 templates/js/translated/build.js:743
@@ -900,22 +899,22 @@ msgstr ""
#: templates/js/translated/order.js:101 templates/js/translated/order.js:2820
#: templates/js/translated/order.js:3124 templates/js/translated/order.js:3129
#: templates/js/translated/order.js:3224 templates/js/translated/order.js:3314
-#: templates/js/translated/stock.js:532 templates/js/translated/stock.js:697
-#: templates/js/translated/stock.js:2449
+#: templates/js/translated/stock.js:531 templates/js/translated/stock.js:696
+#: templates/js/translated/stock.js:2459
msgid "Stock Item"
msgstr "Предметы на складе"
-#: build/models.py:1283
+#: build/models.py:1286
msgid "Source stock item"
msgstr "Исходный складской предмет"
-#: build/models.py:1295 build/serializers.py:183
+#: build/models.py:1298 build/serializers.py:183
#: build/templates/build/build_base.html:82
-#: build/templates/build/detail.html:34 common/models.py:1536
+#: build/templates/build/detail.html:34 common/models.py:1543
#: company/forms.py:36 company/templates/company/supplier_part.html:258
-#: order/models.py:909 order/models.py:1412 order/serializers.py:1134
-#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:68
-#: part/forms.py:83 part/forms.py:98 part/models.py:2561
+#: order/models.py:925 order/models.py:1428 order/serializers.py:1136
+#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:59
+#: part/forms.py:74 part/forms.py:89 part/models.py:2549
#: part/templates/part/detail.html:935 part/templates/part/detail.html:1021
#: part/templates/part/part_pricing.html:16
#: part/templates/part/upload_bom.html:53
@@ -926,8 +925,8 @@ msgstr "Исходный складской предмет"
#: report/templates/report/inventree_test_report_base.html:139
#: stock/serializers.py:279 stock/templates/stock/item_base.html:292
#: stock/templates/stock/item_base.html:300
-#: templates/js/translated/barcode.js:437 templates/js/translated/bom.js:689
-#: templates/js/translated/bom.js:866 templates/js/translated/build.js:422
+#: templates/js/translated/barcode.js:437 templates/js/translated/bom.js:691
+#: templates/js/translated/bom.js:860 templates/js/translated/build.js:422
#: templates/js/translated/build.js:574 templates/js/translated/build.js:765
#: templates/js/translated/build.js:1175 templates/js/translated/build.js:1673
#: templates/js/translated/build.js:2086
@@ -937,23 +936,23 @@ msgstr "Исходный складской предмет"
#: templates/js/translated/order.js:2821 templates/js/translated/order.js:3143
#: templates/js/translated/order.js:3231 templates/js/translated/order.js:3320
#: templates/js/translated/order.js:3454 templates/js/translated/order.js:3965
-#: templates/js/translated/part.js:967 templates/js/translated/part.js:1969
-#: templates/js/translated/part.js:2200 templates/js/translated/part.js:2234
-#: templates/js/translated/part.js:2312 templates/js/translated/stock.js:403
-#: templates/js/translated/stock.js:557 templates/js/translated/stock.js:727
-#: templates/js/translated/stock.js:2498 templates/js/translated/stock.js:2583
+#: templates/js/translated/part.js:1011 templates/js/translated/part.js:2065
+#: templates/js/translated/part.js:2296 templates/js/translated/part.js:2330
+#: templates/js/translated/part.js:2408 templates/js/translated/stock.js:402
+#: templates/js/translated/stock.js:556 templates/js/translated/stock.js:726
+#: templates/js/translated/stock.js:2508 templates/js/translated/stock.js:2593
msgid "Quantity"
msgstr "Количество"
-#: build/models.py:1296
+#: build/models.py:1299
msgid "Stock quantity to allocate to build"
msgstr ""
-#: build/models.py:1304
+#: build/models.py:1307
msgid "Install into"
msgstr ""
-#: build/models.py:1305
+#: build/models.py:1308
msgid "Destination stock item"
msgstr ""
@@ -982,9 +981,9 @@ msgstr ""
msgid "Enter quantity for build output"
msgstr "Введите количество для вывода сборки"
-#: build/serializers.py:198 build/serializers.py:623 order/models.py:363
-#: order/serializers.py:280 order/serializers.py:435 part/serializers.py:512
-#: part/serializers.py:956 stock/models.py:470 stock/models.py:1239
+#: build/serializers.py:198 build/serializers.py:623 order/models.py:368
+#: order/serializers.py:280 order/serializers.py:435 part/serializers.py:514
+#: part/serializers.py:958 stock/models.py:470 stock/models.py:1239
#: stock/serializers.py:288
msgid "Quantity must be greater than zero"
msgstr "Количество должно быть больше нуля"
@@ -997,9 +996,9 @@ msgstr ""
msgid "Integer quantity required, as the bill of materials contains trackable parts"
msgstr ""
-#: build/serializers.py:222 order/serializers.py:448 order/serializers.py:1138
+#: build/serializers.py:222 order/serializers.py:448 order/serializers.py:1140
#: stock/serializers.py:297 templates/js/translated/order.js:1186
-#: templates/js/translated/stock.js:238 templates/js/translated/stock.js:404
+#: templates/js/translated/stock.js:237 templates/js/translated/stock.js:403
msgid "Serial Numbers"
msgstr "Серийные номера"
@@ -1015,7 +1014,7 @@ msgstr ""
msgid "Automatically allocate required items with matching serial numbers"
msgstr ""
-#: build/serializers.py:268 stock/api.py:552
+#: build/serializers.py:268 stock/api.py:553
msgid "The following serial numbers already exist"
msgstr ""
@@ -1025,16 +1024,16 @@ msgstr ""
#: build/serializers.py:356 order/serializers.py:421 order/serializers.py:525
#: stock/serializers.py:308 stock/serializers.py:439 stock/serializers.py:481
-#: stock/serializers.py:864 stock/serializers.py:1097
+#: stock/serializers.py:851 stock/serializers.py:1084
#: stock/templates/stock/item_base.html:390
#: templates/js/translated/barcode.js:436
#: templates/js/translated/barcode.js:618 templates/js/translated/build.js:750
#: templates/js/translated/build.js:1685 templates/js/translated/order.js:1213
#: templates/js/translated/order.js:3136 templates/js/translated/order.js:3239
#: templates/js/translated/order.js:3247 templates/js/translated/order.js:3328
-#: templates/js/translated/part.js:180 templates/js/translated/stock.js:533
-#: templates/js/translated/stock.js:698 templates/js/translated/stock.js:905
-#: templates/js/translated/stock.js:1787 templates/js/translated/stock.js:2390
+#: templates/js/translated/part.js:180 templates/js/translated/stock.js:532
+#: templates/js/translated/stock.js:697 templates/js/translated/stock.js:904
+#: templates/js/translated/stock.js:1797 templates/js/translated/stock.js:2400
msgid "Location"
msgstr "Расположение"
@@ -1043,12 +1042,12 @@ msgid "Location for completed build outputs"
msgstr ""
#: build/serializers.py:363 build/templates/build/build_base.html:142
-#: build/templates/build/detail.html:62 order/models.py:654
+#: build/templates/build/detail.html:62 order/models.py:670
#: order/serializers.py:458 stock/templates/stock/item_base.html:423
#: templates/js/translated/barcode.js:182 templates/js/translated/build.js:2510
#: templates/js/translated/order.js:1320 templates/js/translated/order.js:1660
-#: templates/js/translated/order.js:2481 templates/js/translated/stock.js:1762
-#: templates/js/translated/stock.js:2467 templates/js/translated/stock.js:2599
+#: templates/js/translated/order.js:2481 templates/js/translated/stock.js:1772
+#: templates/js/translated/stock.js:2477 templates/js/translated/stock.js:2609
msgid "Status"
msgstr "Статус"
@@ -1108,8 +1107,8 @@ msgstr ""
msgid "No build outputs have been created for this build order"
msgstr ""
-#: build/serializers.py:535 build/serializers.py:580 part/models.py:2679
-#: part/models.py:2813
+#: build/serializers.py:535 build/serializers.py:580 part/models.py:2667
+#: part/models.py:2801
msgid "BOM Item"
msgstr "BOM Компонент"
@@ -1125,11 +1124,11 @@ msgstr ""
msgid "bom_item.part must point to the same part as the build order"
msgstr ""
-#: build/serializers.py:609 stock/serializers.py:716
+#: build/serializers.py:609 stock/serializers.py:703
msgid "Item must be in stock"
msgstr "Компонент должен быть в наличии"
-#: build/serializers.py:667 order/serializers.py:1052
+#: build/serializers.py:667 order/serializers.py:1054
#, python-brace-format
msgid "Available quantity ({q}) exceeded"
msgstr "Превышено доступное количество ({q})"
@@ -1146,7 +1145,7 @@ msgstr ""
msgid "This stock item has already been allocated to this build output"
msgstr ""
-#: build/serializers.py:708 order/serializers.py:1298
+#: build/serializers.py:708 order/serializers.py:1300
msgid "Allocation items must be provided"
msgstr ""
@@ -1178,10 +1177,19 @@ msgstr ""
msgid "Allow allocation of substitute parts"
msgstr ""
-#: build/tasks.py:96
+#: build/tasks.py:100
msgid "Stock required for build order"
msgstr "Для заказа сборки необходим остаток"
+#: build/tasks.py:118
+msgid "Overdue Build Order"
+msgstr ""
+
+#: build/tasks.py:123
+#, python-brace-format
+msgid "Build order {bo} is now overdue"
+msgstr ""
+
#: build/templates/build/build_base.html:39
#: order/templates/order/order_base.html:28
#: order/templates/order/sales_order_base.html:38
@@ -1244,13 +1252,13 @@ msgid "Stock has not been fully allocated to this Build Order"
msgstr ""
#: build/templates/build/build_base.html:151
-#: build/templates/build/detail.html:131 order/models.py:922
+#: build/templates/build/detail.html:131 order/models.py:938
#: order/templates/order/order_base.html:162
#: order/templates/order/sales_order_base.html:164
#: report/templates/report/inventree_build_order_base.html:126
#: templates/js/translated/build.js:2550 templates/js/translated/order.js:1677
#: templates/js/translated/order.js:1987 templates/js/translated/order.js:2497
-#: templates/js/translated/order.js:3517 templates/js/translated/part.js:971
+#: templates/js/translated/order.js:3517 templates/js/translated/part.js:1015
msgid "Target Date"
msgstr "Целевая дата"
@@ -1277,13 +1285,14 @@ msgid "Completed"
msgstr "Завершённые"
#: build/templates/build/build_base.html:176
-#: build/templates/build/detail.html:94 order/models.py:1100
-#: order/models.py:1185 order/models.py:1320
+#: build/templates/build/detail.html:94 order/models.py:1116
+#: order/models.py:1201 order/models.py:1336
#: order/templates/order/sales_order_base.html:9
#: order/templates/order/sales_order_base.html:28
#: report/templates/report/inventree_build_order_base.html:136
#: report/templates/report/inventree_so_report.html:77
#: stock/templates/stock/item_base.html:370
+#: templates/email/overdue_sales_order.html:15
#: templates/js/translated/order.js:2436
msgid "Sales Order"
msgstr "Заказ покупателя"
@@ -1319,7 +1328,7 @@ msgstr ""
msgid "Stock can be taken from any available location."
msgstr ""
-#: build/templates/build/detail.html:49 order/models.py:1034
+#: build/templates/build/detail.html:49 order/models.py:1050
#: templates/js/translated/order.js:1321 templates/js/translated/order.js:2029
msgid "Destination"
msgstr "Назначение"
@@ -1336,8 +1345,8 @@ msgstr ""
#: stock/templates/stock/item_base.html:170
#: templates/js/translated/build.js:1179
#: templates/js/translated/model_renderers.js:112
-#: templates/js/translated/stock.js:971 templates/js/translated/stock.js:1776
-#: templates/js/translated/stock.js:2606
+#: templates/js/translated/stock.js:970 templates/js/translated/stock.js:1786
+#: templates/js/translated/stock.js:2616
#: templates/js/translated/table_filters.js:151
#: templates/js/translated/table_filters.js:242
msgid "Batch"
@@ -1716,7 +1725,7 @@ msgstr ""
msgid "Copy category parameter templates when creating a part"
msgstr ""
-#: common/models.py:820 part/models.py:2372 report/models.py:157
+#: common/models.py:820 part/models.py:2360 report/models.py:157
#: templates/js/translated/table_filters.js:38
#: templates/js/translated/table_filters.js:444
msgid "Template"
@@ -1726,7 +1735,7 @@ msgstr "Шаблон"
msgid "Parts are templates by default"
msgstr "По умолчанию детали являются шаблонами"
-#: common/models.py:827 part/models.py:884 templates/js/translated/bom.js:1390
+#: common/models.py:827 part/models.py:884 templates/js/translated/bom.js:1384
#: templates/js/translated/table_filters.js:168
#: templates/js/translated/table_filters.js:460
msgid "Assembly"
@@ -1880,7 +1889,7 @@ msgid "Default page size for PDF reports"
msgstr ""
#: common/models.py:968
-msgid "Test Reports"
+msgid "Enable Test Reports"
msgstr ""
#: common/models.py:969
@@ -1888,568 +1897,576 @@ msgid "Enable generation of test reports"
msgstr ""
#: common/models.py:975
-msgid "Batch Code Template"
+msgid "Attach Test Reports"
msgstr ""
#: common/models.py:976
-msgid "Template for generating default batch codes for stock items"
-msgstr ""
-
-#: common/models.py:981
-msgid "Stock Expiry"
+msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item"
msgstr ""
#: common/models.py:982
-msgid "Enable stock expiry functionality"
+msgid "Batch Code Template"
+msgstr ""
+
+#: common/models.py:983
+msgid "Template for generating default batch codes for stock items"
msgstr ""
#: common/models.py:988
-msgid "Sell Expired Stock"
+msgid "Stock Expiry"
msgstr ""
#: common/models.py:989
-msgid "Allow sale of expired stock"
+msgid "Enable stock expiry functionality"
msgstr ""
#: common/models.py:995
-msgid "Stock Stale Time"
+msgid "Sell Expired Stock"
msgstr ""
#: common/models.py:996
-msgid "Number of days stock items are considered stale before expiring"
+msgid "Allow sale of expired stock"
msgstr ""
-#: common/models.py:998
-msgid "days"
+#: common/models.py:1002
+msgid "Stock Stale Time"
msgstr ""
#: common/models.py:1003
-msgid "Build Expired Stock"
+msgid "Number of days stock items are considered stale before expiring"
msgstr ""
-#: common/models.py:1004
-msgid "Allow building with expired stock"
+#: common/models.py:1005
+msgid "days"
msgstr ""
#: common/models.py:1010
-msgid "Stock Ownership Control"
+msgid "Build Expired Stock"
msgstr ""
#: common/models.py:1011
-msgid "Enable ownership control over stock locations and items"
+msgid "Allow building with expired stock"
msgstr ""
#: common/models.py:1017
-msgid "Build Order Reference Prefix"
+msgid "Stock Ownership Control"
msgstr ""
#: common/models.py:1018
-msgid "Prefix value for build order reference"
-msgstr ""
-
-#: common/models.py:1023
-msgid "Build Order Reference Regex"
+msgid "Enable ownership control over stock locations and items"
msgstr ""
#: common/models.py:1024
+msgid "Build Order Reference Prefix"
+msgstr ""
+
+#: common/models.py:1025
+msgid "Prefix value for build order reference"
+msgstr ""
+
+#: common/models.py:1030
+msgid "Build Order Reference Regex"
+msgstr ""
+
+#: common/models.py:1031
msgid "Regular expression pattern for matching build order reference"
msgstr ""
-#: common/models.py:1028
+#: common/models.py:1035
msgid "Sales Order Reference Prefix"
msgstr ""
-#: common/models.py:1029
+#: common/models.py:1036
msgid "Prefix value for sales order reference"
msgstr ""
-#: common/models.py:1034
+#: common/models.py:1041
msgid "Sales Order Default Shipment"
msgstr ""
-#: common/models.py:1035
+#: common/models.py:1042
msgid "Enable creation of default shipment with sales orders"
msgstr ""
-#: common/models.py:1041
+#: common/models.py:1048
msgid "Purchase Order Reference Prefix"
msgstr ""
-#: common/models.py:1042
+#: common/models.py:1049
msgid "Prefix value for purchase order reference"
msgstr ""
-#: common/models.py:1048
+#: common/models.py:1055
msgid "Enable password forgot"
msgstr ""
-#: common/models.py:1049
+#: common/models.py:1056
msgid "Enable password forgot function on the login pages"
msgstr ""
-#: common/models.py:1055
+#: common/models.py:1062
msgid "Enable registration"
msgstr ""
-#: common/models.py:1056
+#: common/models.py:1063
msgid "Enable self-registration for users on the login pages"
msgstr ""
-#: common/models.py:1062
+#: common/models.py:1069
msgid "Enable SSO"
msgstr ""
-#: common/models.py:1063
+#: common/models.py:1070
msgid "Enable SSO on the login pages"
msgstr ""
-#: common/models.py:1069
+#: common/models.py:1076
msgid "Email required"
msgstr "Необходимо указать EMail"
-#: common/models.py:1070
+#: common/models.py:1077
msgid "Require user to supply mail on signup"
msgstr ""
-#: common/models.py:1076
+#: common/models.py:1083
msgid "Auto-fill SSO users"
msgstr ""
-#: common/models.py:1077
+#: common/models.py:1084
msgid "Automatically fill out user-details from SSO account-data"
msgstr ""
-#: common/models.py:1083
+#: common/models.py:1090
msgid "Mail twice"
msgstr ""
-#: common/models.py:1084
+#: common/models.py:1091
msgid "On signup ask users twice for their mail"
msgstr ""
-#: common/models.py:1090
+#: common/models.py:1097
msgid "Password twice"
msgstr ""
-#: common/models.py:1091
+#: common/models.py:1098
msgid "On signup ask users twice for their password"
msgstr ""
-#: common/models.py:1097
+#: common/models.py:1104
msgid "Group on signup"
msgstr ""
-#: common/models.py:1098
+#: common/models.py:1105
msgid "Group to which new users are assigned on registration"
msgstr ""
-#: common/models.py:1104
+#: common/models.py:1111
msgid "Enforce MFA"
msgstr ""
-#: common/models.py:1105
+#: common/models.py:1112
msgid "Users must use multifactor security."
msgstr ""
-#: common/models.py:1111
+#: common/models.py:1118
msgid "Check plugins on startup"
msgstr ""
-#: common/models.py:1112
+#: common/models.py:1119
msgid "Check that all plugins are installed on startup - enable in container enviroments"
msgstr ""
-#: common/models.py:1120
+#: common/models.py:1127
msgid "Enable URL integration"
msgstr ""
-#: common/models.py:1121
+#: common/models.py:1128
msgid "Enable plugins to add URL routes"
msgstr ""
-#: common/models.py:1128
+#: common/models.py:1135
msgid "Enable navigation integration"
msgstr ""
-#: common/models.py:1129
+#: common/models.py:1136
msgid "Enable plugins to integrate into navigation"
msgstr ""
-#: common/models.py:1136
+#: common/models.py:1143
msgid "Enable app integration"
msgstr ""
-#: common/models.py:1137
+#: common/models.py:1144
msgid "Enable plugins to add apps"
msgstr ""
-#: common/models.py:1144
+#: common/models.py:1151
msgid "Enable schedule integration"
msgstr ""
-#: common/models.py:1145
+#: common/models.py:1152
msgid "Enable plugins to run scheduled tasks"
msgstr ""
-#: common/models.py:1152
+#: common/models.py:1159
msgid "Enable event integration"
msgstr ""
-#: common/models.py:1153
+#: common/models.py:1160
msgid "Enable plugins to respond to internal events"
msgstr ""
-#: common/models.py:1170 common/models.py:1492
+#: common/models.py:1177 common/models.py:1499
msgid "Settings key (must be unique - case insensitive"
msgstr ""
-#: common/models.py:1192
+#: common/models.py:1199
msgid "Show subscribed parts"
msgstr "Показывать детали, на которые включены уведомления"
-#: common/models.py:1193
+#: common/models.py:1200
msgid "Show subscribed parts on the homepage"
msgstr "Показывать детали, на которые включены уведомления, на главной странице"
-#: common/models.py:1199
+#: common/models.py:1206
msgid "Show subscribed categories"
msgstr "Показывать категории, на которые включены уведомления"
-#: common/models.py:1200
+#: common/models.py:1207
msgid "Show subscribed part categories on the homepage"
msgstr "Показывать категории, на которые включены уведомления, на главной странице"
-#: common/models.py:1206
+#: common/models.py:1213
msgid "Show latest parts"
msgstr "Показывать последние детали"
-#: common/models.py:1207
+#: common/models.py:1214
msgid "Show latest parts on the homepage"
msgstr "Показывать последние детали на главной странице"
-#: common/models.py:1213
+#: common/models.py:1220
msgid "Recent Part Count"
msgstr ""
-#: common/models.py:1214
+#: common/models.py:1221
msgid "Number of recent parts to display on index page"
msgstr ""
-#: common/models.py:1220
+#: common/models.py:1227
msgid "Show unvalidated BOMs"
msgstr "Показывать непроверенные BOMы"
-#: common/models.py:1221
+#: common/models.py:1228
msgid "Show BOMs that await validation on the homepage"
msgstr "Показывать BOMы, ожидающие проверки, на главной странице"
-#: common/models.py:1227
+#: common/models.py:1234
msgid "Show recent stock changes"
msgstr "Показывать изменившиеся складские запасы"
-#: common/models.py:1228
+#: common/models.py:1235
msgid "Show recently changed stock items on the homepage"
msgstr "Показывать единицы хранения с недавно изменившимися складскими запасами на главной странице"
-#: common/models.py:1234
+#: common/models.py:1241
msgid "Recent Stock Count"
msgstr ""
-#: common/models.py:1235
+#: common/models.py:1242
msgid "Number of recent stock items to display on index page"
msgstr ""
-#: common/models.py:1241
+#: common/models.py:1248
msgid "Show low stock"
msgstr "Показывать низкие складские запасы"
-#: common/models.py:1242
+#: common/models.py:1249
msgid "Show low stock items on the homepage"
msgstr "Показывать единицы хранения с низкими складскими запасами на главной странице"
-#: common/models.py:1248
+#: common/models.py:1255
msgid "Show depleted stock"
msgstr "Показывать закончившиеся детали"
-#: common/models.py:1249
+#: common/models.py:1256
msgid "Show depleted stock items on the homepage"
msgstr "Показывать закончившиеся на складе единицы хранения на главной странице"
-#: common/models.py:1255
+#: common/models.py:1262
msgid "Show needed stock"
msgstr "Показывать требуемые детали"
-#: common/models.py:1256
+#: common/models.py:1263
msgid "Show stock items needed for builds on the homepage"
msgstr "Показывать требуемые для сборки единицы хранения на главной странице"
-#: common/models.py:1262
+#: common/models.py:1269
msgid "Show expired stock"
msgstr "Показывать просрочку"
-#: common/models.py:1263
+#: common/models.py:1270
msgid "Show expired stock items on the homepage"
msgstr "Показывать единицы хранения с истёкшим сроком годности на главной странице"
-#: common/models.py:1269
+#: common/models.py:1276
msgid "Show stale stock"
msgstr "Показывать залежалые"
-#: common/models.py:1270
+#: common/models.py:1277
msgid "Show stale stock items on the homepage"
msgstr "Показывать залежалые единицы хранения на главной странице"
-#: common/models.py:1276
+#: common/models.py:1283
msgid "Show pending builds"
msgstr "Показывать незавершённые сборки"
-#: common/models.py:1277
+#: common/models.py:1284
msgid "Show pending builds on the homepage"
msgstr "Показывать незавершённые сборки на главной странице"
-#: common/models.py:1283
+#: common/models.py:1290
msgid "Show overdue builds"
msgstr "Показывать просроченные сборки"
-#: common/models.py:1284
+#: common/models.py:1291
msgid "Show overdue builds on the homepage"
msgstr "Показывать просроченные сборки на главной странице"
-#: common/models.py:1290
+#: common/models.py:1297
msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:1291
+#: common/models.py:1298
msgid "Show outstanding POs on the homepage"
msgstr ""
-#: common/models.py:1297
+#: common/models.py:1304
msgid "Show overdue POs"
msgstr ""
-#: common/models.py:1298
+#: common/models.py:1305
msgid "Show overdue POs on the homepage"
msgstr ""
-#: common/models.py:1304
+#: common/models.py:1311
msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:1305
+#: common/models.py:1312
msgid "Show outstanding SOs on the homepage"
msgstr ""
-#: common/models.py:1311
+#: common/models.py:1318
msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:1312
+#: common/models.py:1319
msgid "Show overdue SOs on the homepage"
msgstr ""
-#: common/models.py:1317
+#: common/models.py:1324
msgid "Enable label printing"
msgstr ""
-#: common/models.py:1318
+#: common/models.py:1325
msgid "Enable label printing from the web interface"
msgstr ""
-#: common/models.py:1324
+#: common/models.py:1331
msgid "Inline label display"
msgstr ""
-#: common/models.py:1325
+#: common/models.py:1332
msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:1331
+#: common/models.py:1338
msgid "Inline report display"
msgstr ""
-#: common/models.py:1332
+#: common/models.py:1339
msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:1338
+#: common/models.py:1345
msgid "Search Parts"
msgstr ""
-#: common/models.py:1339
+#: common/models.py:1346
msgid "Display parts in search preview window"
msgstr ""
-#: common/models.py:1345
+#: common/models.py:1352
msgid "Seach Supplier Parts"
msgstr ""
-#: common/models.py:1346
+#: common/models.py:1353
msgid "Display supplier parts in search preview window"
msgstr ""
-#: common/models.py:1352
+#: common/models.py:1359
msgid "Search Manufacturer Parts"
msgstr ""
-#: common/models.py:1353
+#: common/models.py:1360
msgid "Display manufacturer parts in search preview window"
msgstr ""
-#: common/models.py:1359
+#: common/models.py:1366
msgid "Hide Inactive Parts"
msgstr ""
-#: common/models.py:1360
+#: common/models.py:1367
msgid "Excluded inactive parts from search preview window"
msgstr ""
-#: common/models.py:1366
+#: common/models.py:1373
msgid "Search Categories"
msgstr ""
-#: common/models.py:1367
+#: common/models.py:1374
msgid "Display part categories in search preview window"
msgstr ""
-#: common/models.py:1373
+#: common/models.py:1380
msgid "Search Stock"
msgstr ""
-#: common/models.py:1374
+#: common/models.py:1381
msgid "Display stock items in search preview window"
msgstr ""
-#: common/models.py:1380
+#: common/models.py:1387
msgid "Hide Unavailable Stock Items"
msgstr ""
-#: common/models.py:1381
+#: common/models.py:1388
msgid "Exclude stock items which are not available from the search preview window"
msgstr ""
-#: common/models.py:1387
+#: common/models.py:1394
msgid "Search Locations"
msgstr ""
-#: common/models.py:1388
+#: common/models.py:1395
msgid "Display stock locations in search preview window"
msgstr ""
-#: common/models.py:1394
+#: common/models.py:1401
msgid "Search Companies"
msgstr ""
-#: common/models.py:1395
+#: common/models.py:1402
msgid "Display companies in search preview window"
msgstr ""
-#: common/models.py:1401
+#: common/models.py:1408
msgid "Search Purchase Orders"
msgstr ""
-#: common/models.py:1402
+#: common/models.py:1409
msgid "Display purchase orders in search preview window"
msgstr ""
-#: common/models.py:1408
+#: common/models.py:1415
msgid "Exclude Inactive Purchase Orders"
msgstr ""
-#: common/models.py:1409
+#: common/models.py:1416
msgid "Exclude inactive purchase orders from search preview window"
msgstr ""
-#: common/models.py:1415
+#: common/models.py:1422
msgid "Search Sales Orders"
msgstr ""
-#: common/models.py:1416
+#: common/models.py:1423
msgid "Display sales orders in search preview window"
msgstr ""
-#: common/models.py:1422
+#: common/models.py:1429
msgid "Exclude Inactive Sales Orders"
msgstr ""
-#: common/models.py:1423
+#: common/models.py:1430
msgid "Exclude inactive sales orders from search preview window"
msgstr ""
-#: common/models.py:1429
+#: common/models.py:1436
msgid "Search Preview Results"
msgstr ""
-#: common/models.py:1430
+#: common/models.py:1437
msgid "Number of results to show in each section of the search preview window"
msgstr ""
-#: common/models.py:1436
+#: common/models.py:1443
msgid "Show Quantity in Forms"
msgstr ""
-#: common/models.py:1437
+#: common/models.py:1444
msgid "Display available part quantity in some forms"
msgstr ""
-#: common/models.py:1443
+#: common/models.py:1450
msgid "Escape Key Closes Forms"
msgstr ""
-#: common/models.py:1444
+#: common/models.py:1451
msgid "Use the escape key to close modal forms"
msgstr ""
-#: common/models.py:1450
+#: common/models.py:1457
msgid "Fixed Navbar"
msgstr ""
-#: common/models.py:1451
+#: common/models.py:1458
msgid "The navbar position is fixed to the top of the screen"
msgstr ""
-#: common/models.py:1457
+#: common/models.py:1464
msgid "Date Format"
msgstr ""
-#: common/models.py:1458
+#: common/models.py:1465
msgid "Preferred format for displaying dates"
msgstr ""
-#: common/models.py:1472 part/templates/part/detail.html:39
+#: common/models.py:1479 part/templates/part/detail.html:39
msgid "Part Scheduling"
msgstr ""
-#: common/models.py:1473
+#: common/models.py:1480
msgid "Display part scheduling information"
msgstr ""
-#: common/models.py:1537 company/forms.py:37
+#: common/models.py:1544 company/forms.py:37
msgid "Price break quantity"
msgstr ""
-#: common/models.py:1544 company/serializers.py:288
-#: company/templates/company/supplier_part.html:263 order/models.py:949
-#: templates/js/translated/part.js:998 templates/js/translated/part.js:1974
+#: common/models.py:1551 company/serializers.py:290
+#: company/templates/company/supplier_part.html:263 order/models.py:965
+#: templates/js/translated/part.js:1042 templates/js/translated/part.js:2070
msgid "Price"
msgstr "Цена"
-#: common/models.py:1545
+#: common/models.py:1552
msgid "Unit price at specified quantity"
msgstr ""
-#: common/models.py:1705 common/models.py:1883
+#: common/models.py:1712 common/models.py:1890
msgid "Endpoint"
msgstr ""
-#: common/models.py:1706
+#: common/models.py:1713
msgid "Endpoint at which this webhook is received"
msgstr ""
-#: common/models.py:1715
+#: common/models.py:1722
msgid "Name for this webhook"
msgstr ""
-#: common/models.py:1720 part/models.py:911 plugin/models.py:99
+#: common/models.py:1727 part/models.py:911 plugin/models.py:99
#: templates/js/translated/table_filters.js:34
#: templates/js/translated/table_filters.js:96
#: templates/js/translated/table_filters.js:308
@@ -2457,79 +2474,89 @@ msgstr ""
msgid "Active"
msgstr ""
-#: common/models.py:1721
+#: common/models.py:1728
msgid "Is this webhook active"
msgstr ""
-#: common/models.py:1735
+#: common/models.py:1742
msgid "Token"
msgstr ""
-#: common/models.py:1736
+#: common/models.py:1743
msgid "Token for access"
msgstr ""
-#: common/models.py:1743
+#: common/models.py:1750
msgid "Secret"
msgstr ""
-#: common/models.py:1744
+#: common/models.py:1751
msgid "Shared secret for HMAC"
msgstr ""
-#: common/models.py:1850
+#: common/models.py:1857
msgid "Message ID"
msgstr ""
-#: common/models.py:1851
+#: common/models.py:1858
msgid "Unique identifier for this message"
msgstr ""
-#: common/models.py:1859
+#: common/models.py:1866
msgid "Host"
msgstr ""
-#: common/models.py:1860
+#: common/models.py:1867
msgid "Host from which this message was received"
msgstr ""
-#: common/models.py:1867
+#: common/models.py:1874
msgid "Header"
msgstr ""
-#: common/models.py:1868
+#: common/models.py:1875
msgid "Header of this message"
msgstr ""
-#: common/models.py:1874
+#: common/models.py:1881
msgid "Body"
msgstr ""
-#: common/models.py:1875
+#: common/models.py:1882
msgid "Body of this message"
msgstr ""
-#: common/models.py:1884
+#: common/models.py:1891
msgid "Endpoint on which this message was received"
msgstr ""
-#: common/models.py:1889
+#: common/models.py:1896
msgid "Worked on"
msgstr ""
-#: common/models.py:1890
+#: common/models.py:1897
msgid "Was the work on this message finished?"
msgstr ""
+#: common/notifications.py:292
+#, python-brace-format
+msgid "New {verbose_name}"
+msgstr ""
+
+#: common/notifications.py:294
+#, python-brace-format
+msgid "A new {verbose_name} has been created and ,assigned to you"
+msgstr ""
+
#: common/views.py:87 order/templates/order/purchase_order_detail.html:23
-#: order/views.py:102 part/views.py:191
+#: order/views.py:102 part/views.py:116
#: templates/patterns/wizard/upload.html:37
msgid "Upload File"
msgstr "Загрузить файл"
#: common/views.py:88 order/views.py:103
#: part/templates/part/import_wizard/ajax_match_fields.html:45
-#: part/views.py:192 templates/patterns/wizard/match_fields.html:51
+#: part/views.py:117 templates/patterns/wizard/match_fields.html:51
msgid "Match Fields"
msgstr ""
@@ -2545,19 +2572,19 @@ msgstr ""
msgid "Parts imported"
msgstr "Детали импортированы"
-#: common/views.py:507 order/templates/order/order_wizard/match_parts.html:19
+#: common/views.py:511 order/templates/order/order_wizard/match_parts.html:19
#: part/templates/part/import_wizard/match_references.html:19
#: templates/patterns/wizard/match_fields.html:26
#: templates/patterns/wizard/upload.html:35
msgid "Previous Step"
msgstr "Предыдущий шаг"
-#: company/forms.py:16 part/forms.py:21
+#: company/forms.py:16 part/forms.py:18
#: templates/InvenTree/settings/mixins/urls.html:14
msgid "URL"
msgstr "Ссылка"
-#: company/forms.py:17 part/forms.py:22
+#: company/forms.py:17 part/forms.py:19
msgid "Image URL"
msgstr "Ссылка на изображение"
@@ -2571,7 +2598,7 @@ msgstr "Описание компании"
#: company/models.py:104 company/templates/company/company_base.html:100
#: templates/InvenTree/settings/plugin_settings.html:55
-#: templates/js/translated/company.js:405
+#: templates/js/translated/company.js:399
msgid "Website"
msgstr "Сайт"
@@ -2644,9 +2671,9 @@ msgstr "производитель"
msgid "Does this company manufacture parts?"
msgstr "Является ли компания производителем деталей?"
-#: company/models.py:144 company/serializers.py:294
-#: company/templates/company/company_base.html:106 part/serializers.py:137
-#: part/serializers.py:168 stock/serializers.py:162
+#: company/models.py:144 company/serializers.py:296
+#: company/templates/company/company_base.html:106 part/serializers.py:139
+#: part/serializers.py:170 stock/serializers.py:162
msgid "Currency"
msgstr "Валюта"
@@ -2667,10 +2694,10 @@ msgstr "Выберите деталь"
#: company/templates/company/manufacturer_part.html:90
#: company/templates/company/supplier_part.html:103
#: stock/templates/stock/item_base.html:212
-#: templates/js/translated/company.js:389
-#: templates/js/translated/company.js:488
-#: templates/js/translated/company.js:632
-#: templates/js/translated/company.js:917 templates/js/translated/part.js:235
+#: templates/js/translated/company.js:383
+#: templates/js/translated/company.js:484
+#: templates/js/translated/company.js:617
+#: templates/js/translated/company.js:902 templates/js/translated/part.js:235
#: templates/js/translated/table_filters.js:411
msgid "Manufacturer"
msgstr "Производитель"
@@ -2681,11 +2708,11 @@ msgstr "Выберите производителя"
#: company/models.py:266 company/templates/company/manufacturer_part.html:101
#: company/templates/company/supplier_part.html:111
-#: templates/js/translated/company.js:255
-#: templates/js/translated/company.js:487
-#: templates/js/translated/company.js:648
-#: templates/js/translated/company.js:935 templates/js/translated/order.js:1907
-#: templates/js/translated/part.js:246 templates/js/translated/part.js:956
+#: templates/js/translated/company.js:256
+#: templates/js/translated/company.js:483
+#: templates/js/translated/company.js:633
+#: templates/js/translated/company.js:920 templates/js/translated/order.js:1907
+#: templates/js/translated/part.js:246 templates/js/translated/part.js:1000
msgid "MPN"
msgstr ""
@@ -2714,9 +2741,9 @@ msgstr "Наименование параметра"
#: company/models.py:361
#: report/templates/report/inventree_test_report_base.html:95
-#: stock/models.py:2080 templates/js/translated/company.js:540
-#: templates/js/translated/company.js:763 templates/js/translated/part.js:776
-#: templates/js/translated/stock.js:1294
+#: stock/models.py:2084 templates/js/translated/company.js:531
+#: templates/js/translated/company.js:748 templates/js/translated/part.js:820
+#: templates/js/translated/stock.js:1304
msgid "Value"
msgstr "Значение"
@@ -2724,10 +2751,10 @@ msgstr "Значение"
msgid "Parameter value"
msgstr "Значение параметра"
-#: company/models.py:368 part/models.py:878 part/models.py:2339
+#: company/models.py:368 part/models.py:878 part/models.py:2327
#: part/templates/part/part_base.html:280
#: templates/InvenTree/settings/settings.html:351
-#: templates/js/translated/company.js:769 templates/js/translated/part.js:782
+#: templates/js/translated/company.js:754 templates/js/translated/part.js:826
msgid "Units"
msgstr "Ед.изм"
@@ -2740,13 +2767,14 @@ msgid "Linked manufacturer part must reference the same base part"
msgstr ""
#: company/models.py:487 company/templates/company/company_base.html:81
-#: company/templates/company/supplier_part.html:87 order/models.py:303
+#: company/templates/company/supplier_part.html:87 order/models.py:308
#: order/templates/order/order_base.html:112 part/bom.py:237 part/bom.py:265
#: stock/templates/stock/item_base.html:229
-#: templates/js/translated/company.js:254
-#: templates/js/translated/company.js:393
-#: templates/js/translated/company.js:891 templates/js/translated/order.js:1643
-#: templates/js/translated/part.js:216 templates/js/translated/part.js:924
+#: templates/email/overdue_purchase_order.html:16
+#: templates/js/translated/company.js:255
+#: templates/js/translated/company.js:387
+#: templates/js/translated/company.js:876 templates/js/translated/order.js:1643
+#: templates/js/translated/part.js:216 templates/js/translated/part.js:968
#: templates/js/translated/table_filters.js:415
msgid "Supplier"
msgstr "Поставщик"
@@ -2756,9 +2784,9 @@ msgid "Select supplier"
msgstr "Выберите поставщика"
#: company/models.py:493 company/templates/company/supplier_part.html:97
-#: part/bom.py:238 part/bom.py:266 templates/js/translated/company.js:253
+#: part/bom.py:238 part/bom.py:266 templates/js/translated/company.js:254
#: templates/js/translated/order.js:1894 templates/js/translated/part.js:227
-#: templates/js/translated/part.js:942
+#: templates/js/translated/part.js:986
msgid "SKU"
msgstr ""
@@ -2779,23 +2807,23 @@ msgid "Supplier part description"
msgstr ""
#: company/models.py:518 company/templates/company/supplier_part.html:125
-#: part/models.py:2573 part/templates/part/upload_bom.html:59
+#: part/models.py:2561 part/templates/part/upload_bom.html:59
#: report/templates/report/inventree_po_report.html:92
#: report/templates/report/inventree_so_report.html:93 stock/serializers.py:387
msgid "Note"
msgstr "Заметка"
-#: company/models.py:522 part/models.py:1688
+#: company/models.py:522 part/models.py:1683
msgid "base cost"
msgstr ""
-#: company/models.py:522 part/models.py:1688
+#: company/models.py:522 part/models.py:1683
msgid "Minimum charge (e.g. stocking fee)"
msgstr ""
#: company/models.py:524 company/templates/company/supplier_part.html:118
#: stock/models.py:608 stock/templates/stock/item_base.html:245
-#: templates/js/translated/company.js:967 templates/js/translated/stock.js:1912
+#: templates/js/translated/company.js:952 templates/js/translated/stock.js:1922
msgid "Packaging"
msgstr "Упаковка"
@@ -2803,7 +2831,7 @@ msgstr "Упаковка"
msgid "Part packaging"
msgstr ""
-#: company/models.py:526 part/models.py:1690
+#: company/models.py:526 part/models.py:1685
msgid "multiple"
msgstr ""
@@ -2825,7 +2853,7 @@ msgstr "Код валюты"
#: company/templates/company/company_base.html:8
#: company/templates/company/company_base.html:12
-#: templates/InvenTree/search.html:177 templates/js/translated/company.js:378
+#: templates/InvenTree/search.html:177 templates/js/translated/company.js:372
msgid "Company"
msgstr "Компания"
@@ -2843,7 +2871,7 @@ msgid "Edit company information"
msgstr "Редактировать информацию о компании"
#: company/templates/company/company_base.html:34
-#: templates/js/translated/company.js:321
+#: templates/js/translated/company.js:315
msgid "Edit Company"
msgstr "Редактировать компанию"
@@ -2866,12 +2894,13 @@ msgstr "Загрузить новое изображение"
msgid "Download image from URL"
msgstr "Скачать изображение по ссылке"
-#: company/templates/company/company_base.html:86 order/models.py:649
+#: company/templates/company/company_base.html:86 order/models.py:665
#: order/templates/order/sales_order_base.html:116 stock/models.py:627
-#: stock/models.py:628 stock/serializers.py:758
+#: stock/models.py:628 stock/serializers.py:745
#: stock/templates/stock/item_base.html:401
-#: templates/js/translated/company.js:385 templates/js/translated/order.js:2458
-#: templates/js/translated/stock.js:2431
+#: templates/email/overdue_sales_order.html:16
+#: templates/js/translated/company.js:379 templates/js/translated/order.js:2458
+#: templates/js/translated/stock.js:2441
#: templates/js/translated/table_filters.js:419
msgid "Customer"
msgstr "Покупатель"
@@ -2999,7 +3028,7 @@ msgid "Supplier List"
msgstr "Список поставщиков"
#: company/templates/company/manufacturer_part.html:15 company/views.py:45
-#: part/templates/part/prices.html:170 templates/InvenTree/search.html:179
+#: part/templates/part/prices.html:172 templates/InvenTree/search.html:179
#: templates/navbar.html:49
msgid "Manufacturers"
msgstr "Производители"
@@ -3012,12 +3041,12 @@ msgid "Order part"
msgstr ""
#: company/templates/company/manufacturer_part.html:39
-#: templates/js/translated/company.js:680
+#: templates/js/translated/company.js:665
msgid "Edit manufacturer part"
msgstr ""
#: company/templates/company/manufacturer_part.html:43
-#: templates/js/translated/company.js:681
+#: templates/js/translated/company.js:666
msgid "Delete manufacturer part"
msgstr ""
@@ -3032,7 +3061,7 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:119
#: company/templates/company/supplier_part.html:15 company/views.py:39
-#: part/templates/part/part_sidebar.html:35 part/templates/part/prices.html:166
+#: part/templates/part/part_sidebar.html:35 part/templates/part/prices.html:168
#: templates/InvenTree/search.html:189 templates/navbar.html:48
msgid "Suppliers"
msgstr "Поставщики"
@@ -3092,18 +3121,18 @@ msgstr ""
#: company/templates/company/supplier_part.html:7
#: company/templates/company/supplier_part.html:24 stock/models.py:592
#: stock/templates/stock/item_base.html:238
-#: templates/js/translated/company.js:907 templates/js/translated/order.js:884
-#: templates/js/translated/stock.js:1869
+#: templates/js/translated/company.js:892 templates/js/translated/order.js:884
+#: templates/js/translated/stock.js:1879
msgid "Supplier Part"
msgstr "Деталь поставщика"
#: company/templates/company/supplier_part.html:38
-#: templates/js/translated/company.js:980
+#: templates/js/translated/company.js:965
msgid "Edit supplier part"
msgstr "Редактировать деталь поставщика"
#: company/templates/company/supplier_part.html:42
-#: templates/js/translated/company.js:981
+#: templates/js/translated/company.js:966
msgid "Delete supplier part"
msgstr "Удалить деталь поставщика"
@@ -3123,7 +3152,7 @@ msgstr "Создать единицу хранения"
#: company/templates/company/supplier_part.html:148
#: part/templates/part/detail.html:24 stock/templates/stock/location.html:177
-#: templates/js/translated/stock.js:380
+#: templates/js/translated/stock.js:379
msgid "New Stock Item"
msgstr "Новая единица хранения"
@@ -3144,7 +3173,7 @@ msgstr "Информация о цене"
#: company/templates/company/supplier_part.html:191
#: company/templates/company/supplier_part.html:305
-#: part/templates/part/prices.html:274 templates/js/translated/part.js:2046
+#: part/templates/part/prices.html:276 templates/js/translated/part.js:2142
msgid "Add Price Break"
msgstr ""
@@ -3153,12 +3182,12 @@ msgid "No price break information found"
msgstr ""
#: company/templates/company/supplier_part.html:231
-#: templates/js/translated/part.js:2056
+#: templates/js/translated/part.js:2152
msgid "Delete Price Break"
msgstr ""
#: company/templates/company/supplier_part.html:245
-#: templates/js/translated/part.js:2070
+#: templates/js/translated/part.js:2166
msgid "Edit Price Break"
msgstr ""
@@ -3180,9 +3209,9 @@ msgstr "Последнее обновление"
#: stock/templates/stock/stock_app_base.html:10
#: templates/InvenTree/search.html:151
#: templates/InvenTree/settings/sidebar.html:43
-#: templates/js/translated/bom.js:554 templates/js/translated/part.js:678
-#: templates/js/translated/part.js:1226 templates/js/translated/part.js:1387
-#: templates/js/translated/stock.js:904 templates/js/translated/stock.js:1687
+#: templates/js/translated/bom.js:554 templates/js/translated/part.js:722
+#: templates/js/translated/part.js:1270 templates/js/translated/part.js:1431
+#: templates/js/translated/stock.js:903 templates/js/translated/stock.js:1697
#: templates/navbar.html:31
msgid "Stock"
msgstr "Склад"
@@ -3209,7 +3238,7 @@ msgstr ""
#: stock/templates/stock/location.html:173
#: stock/templates/stock/location_sidebar.html:7
#: templates/InvenTree/search.html:153 templates/js/translated/search.js:223
-#: templates/js/translated/stock.js:2307 users/models.py:39
+#: templates/js/translated/stock.js:2317 users/models.py:39
msgid "Stock Items"
msgstr "Детали на складе"
@@ -3238,20 +3267,20 @@ msgstr "Компании"
msgid "New Company"
msgstr "Новая компания"
-#: company/views.py:112 part/views.py:576
+#: company/views.py:112 part/views.py:501
msgid "Download Image"
msgstr "Скачать изображение"
-#: company/views.py:139 part/views.py:606
+#: company/views.py:139 part/views.py:531
msgid "Image size exceeds maximum allowable size for download"
msgstr ""
-#: company/views.py:146 part/views.py:613
+#: company/views.py:146 part/views.py:538
#, python-brace-format
msgid "Invalid response: {code}"
msgstr ""
-#: company/views.py:155 part/views.py:622
+#: company/views.py:155 part/views.py:547
msgid "Supplied URL is not a valid image file"
msgstr ""
@@ -3320,313 +3349,314 @@ msgstr ""
msgid "Part query filters (comma-separated value of key=value pairs)"
msgstr ""
-#: order/models.py:133
+#: order/models.py:134
msgid "Order description"
msgstr ""
-#: order/models.py:135 order/models.py:1236
+#: order/models.py:136 order/models.py:1252
msgid "Link to external page"
msgstr ""
-#: order/models.py:143
+#: order/models.py:144
msgid "Created By"
msgstr ""
-#: order/models.py:150
+#: order/models.py:151
msgid "User or group responsible for this order"
msgstr ""
-#: order/models.py:155
+#: order/models.py:156
msgid "Order notes"
msgstr ""
-#: order/models.py:289 order/models.py:639
+#: order/models.py:294 order/models.py:655
msgid "Order reference"
msgstr ""
-#: order/models.py:294 order/models.py:654
+#: order/models.py:299 order/models.py:670
msgid "Purchase order status"
msgstr ""
-#: order/models.py:304
+#: order/models.py:309
msgid "Company from which the items are being ordered"
msgstr "Компания, в которой детали заказываются"
-#: order/models.py:307 order/templates/order/order_base.html:124
+#: order/models.py:312 order/templates/order/order_base.html:124
#: templates/js/translated/order.js:1652
msgid "Supplier Reference"
msgstr ""
-#: order/models.py:307
+#: order/models.py:312
msgid "Supplier order reference code"
msgstr ""
-#: order/models.py:314
+#: order/models.py:319
msgid "received by"
msgstr ""
-#: order/models.py:319
+#: order/models.py:324
msgid "Issue Date"
msgstr ""
-#: order/models.py:320
+#: order/models.py:325
msgid "Date order was issued"
msgstr ""
-#: order/models.py:325
+#: order/models.py:330
msgid "Target Delivery Date"
msgstr ""
-#: order/models.py:326
+#: order/models.py:331
msgid "Expected date for order delivery. Order will be overdue after this date."
msgstr ""
-#: order/models.py:332
+#: order/models.py:337
msgid "Date order was completed"
msgstr ""
-#: order/models.py:368
+#: order/models.py:373
msgid "Part supplier must match PO supplier"
msgstr ""
-#: order/models.py:512
+#: order/models.py:517
msgid "Quantity must be a positive number"
msgstr ""
-#: order/models.py:650
+#: order/models.py:666
msgid "Company to which the items are being sold"
msgstr "Компания, которой детали продаются"
-#: order/models.py:656
+#: order/models.py:672
msgid "Customer Reference "
msgstr ""
-#: order/models.py:656
+#: order/models.py:672
msgid "Customer order reference code"
msgstr ""
-#: order/models.py:661
+#: order/models.py:677
msgid "Target date for order completion. Order will be overdue after this date."
msgstr ""
-#: order/models.py:664 order/models.py:1190
+#: order/models.py:680 order/models.py:1206
#: templates/js/translated/order.js:2505 templates/js/translated/order.js:2656
msgid "Shipment Date"
msgstr ""
-#: order/models.py:671
+#: order/models.py:687
msgid "shipped by"
msgstr ""
-#: order/models.py:726
+#: order/models.py:742
msgid "Order cannot be completed as no parts have been assigned"
msgstr ""
-#: order/models.py:730
+#: order/models.py:746
msgid "Only a pending order can be marked as complete"
msgstr ""
-#: order/models.py:733
+#: order/models.py:749
msgid "Order cannot be completed as there are incomplete shipments"
msgstr ""
-#: order/models.py:736
+#: order/models.py:752
msgid "Order cannot be completed as there are incomplete line items"
msgstr ""
-#: order/models.py:910
+#: order/models.py:926
msgid "Item quantity"
msgstr ""
-#: order/models.py:916
+#: order/models.py:932
msgid "Line item reference"
msgstr ""
-#: order/models.py:918
+#: order/models.py:934
msgid "Line item notes"
msgstr ""
-#: order/models.py:923
+#: order/models.py:939
msgid "Target shipping date for this line item"
msgstr ""
-#: order/models.py:941
+#: order/models.py:957
msgid "Context"
msgstr ""
-#: order/models.py:942
+#: order/models.py:958
msgid "Additional context for this line"
msgstr ""
-#: order/models.py:950
+#: order/models.py:966
msgid "Unit price"
msgstr ""
-#: order/models.py:980
+#: order/models.py:996
msgid "Supplier part must match supplier"
msgstr ""
-#: order/models.py:988
+#: order/models.py:1004
msgid "deleted"
msgstr ""
-#: order/models.py:994 order/models.py:1074 order/models.py:1099
-#: order/models.py:1184 order/models.py:1320
+#: order/models.py:1010 order/models.py:1090 order/models.py:1115
+#: order/models.py:1200 order/models.py:1336
#: templates/js/translated/order.js:3112
msgid "Order"
msgstr ""
-#: order/models.py:995 order/models.py:1074
+#: order/models.py:1011 order/models.py:1090
#: order/templates/order/order_base.html:9
#: order/templates/order/order_base.html:18
#: report/templates/report/inventree_po_report.html:76
#: stock/templates/stock/item_base.html:184
+#: templates/email/overdue_purchase_order.html:15
#: templates/js/translated/order.js:885 templates/js/translated/order.js:1621
-#: templates/js/translated/part.js:899 templates/js/translated/stock.js:1846
-#: templates/js/translated/stock.js:2412
+#: templates/js/translated/part.js:943 templates/js/translated/stock.js:1856
+#: templates/js/translated/stock.js:2422
msgid "Purchase Order"
msgstr "Заказ на закупку"
-#: order/models.py:1013
+#: order/models.py:1029
msgid "Supplier part"
msgstr ""
-#: order/models.py:1020 order/templates/order/order_base.html:169
+#: order/models.py:1036 order/templates/order/order_base.html:169
#: templates/js/translated/order.js:1318 templates/js/translated/order.js:2009
-#: templates/js/translated/part.js:993 templates/js/translated/part.js:1020
+#: templates/js/translated/part.js:1037 templates/js/translated/part.js:1064
#: templates/js/translated/table_filters.js:330
msgid "Received"
msgstr ""
-#: order/models.py:1021
+#: order/models.py:1037
msgid "Number of items received"
msgstr ""
-#: order/models.py:1028 part/templates/part/prices.html:179 stock/models.py:722
+#: order/models.py:1044 part/templates/part/prices.html:181 stock/models.py:722
#: stock/serializers.py:153 stock/templates/stock/item_base.html:191
-#: templates/js/translated/stock.js:1900
+#: templates/js/translated/stock.js:1910
msgid "Purchase Price"
msgstr "Закупочная цена"
-#: order/models.py:1029
+#: order/models.py:1045
msgid "Unit purchase price"
msgstr ""
-#: order/models.py:1037
+#: order/models.py:1053
msgid "Where does the Purchaser want this item to be stored?"
msgstr ""
-#: order/models.py:1109 part/templates/part/part_pricing.html:112
-#: part/templates/part/prices.html:119 part/templates/part/prices.html:288
+#: order/models.py:1125 part/templates/part/part_pricing.html:115
+#: part/templates/part/prices.html:121 part/templates/part/prices.html:290
msgid "Sale Price"
msgstr "Цена продажи"
-#: order/models.py:1110
+#: order/models.py:1126
msgid "Unit sale price"
msgstr ""
-#: order/models.py:1115
+#: order/models.py:1131
msgid "Shipped quantity"
msgstr ""
-#: order/models.py:1191
+#: order/models.py:1207
msgid "Date of shipment"
msgstr ""
-#: order/models.py:1198
+#: order/models.py:1214
msgid "Checked By"
msgstr ""
-#: order/models.py:1199
+#: order/models.py:1215
msgid "User who checked this shipment"
msgstr ""
-#: order/models.py:1207
+#: order/models.py:1223
msgid "Shipment number"
msgstr ""
-#: order/models.py:1214
+#: order/models.py:1230
msgid "Shipment notes"
msgstr ""
-#: order/models.py:1221
+#: order/models.py:1237
msgid "Tracking Number"
msgstr ""
-#: order/models.py:1222
+#: order/models.py:1238
msgid "Shipment tracking information"
msgstr ""
-#: order/models.py:1229
+#: order/models.py:1245
msgid "Invoice Number"
msgstr ""
-#: order/models.py:1230
+#: order/models.py:1246
msgid "Reference number for associated invoice"
msgstr ""
-#: order/models.py:1248
+#: order/models.py:1264
msgid "Shipment has already been sent"
msgstr ""
-#: order/models.py:1251
+#: order/models.py:1267
msgid "Shipment has no allocated stock items"
msgstr ""
-#: order/models.py:1354 order/models.py:1356
+#: order/models.py:1370 order/models.py:1372
msgid "Stock item has not been assigned"
msgstr ""
-#: order/models.py:1360
+#: order/models.py:1376
msgid "Cannot allocate stock item to a line with a different part"
msgstr ""
-#: order/models.py:1362
+#: order/models.py:1378
msgid "Cannot allocate stock to a line without a part"
msgstr ""
-#: order/models.py:1365
+#: order/models.py:1381
msgid "Allocation quantity cannot exceed stock quantity"
msgstr ""
-#: order/models.py:1369
+#: order/models.py:1385
msgid "StockItem is over-allocated"
msgstr ""
-#: order/models.py:1375 order/serializers.py:1045
+#: order/models.py:1391 order/serializers.py:1047
msgid "Quantity must be 1 for serialized stock item"
msgstr ""
-#: order/models.py:1378
+#: order/models.py:1394
msgid "Sales order does not match shipment"
msgstr ""
-#: order/models.py:1379
+#: order/models.py:1395
msgid "Shipment does not match sales order"
msgstr ""
-#: order/models.py:1387
+#: order/models.py:1403
msgid "Line"
msgstr ""
-#: order/models.py:1395 order/serializers.py:1149 order/serializers.py:1273
+#: order/models.py:1411 order/serializers.py:1151 order/serializers.py:1275
#: templates/js/translated/model_renderers.js:301
msgid "Shipment"
msgstr ""
-#: order/models.py:1396
+#: order/models.py:1412
msgid "Sales order shipment reference"
msgstr ""
-#: order/models.py:1408 templates/InvenTree/notifications/notifications.html:70
+#: order/models.py:1424 templates/InvenTree/notifications/notifications.html:70
msgid "Item"
msgstr ""
-#: order/models.py:1409
+#: order/models.py:1425
msgid "Select stock item to allocate"
msgstr ""
-#: order/models.py:1412
+#: order/models.py:1428
msgid "Enter stock allocation quantity"
msgstr ""
@@ -3662,7 +3692,7 @@ msgstr ""
msgid "Purchase order must match supplier"
msgstr ""
-#: order/serializers.py:406 order/serializers.py:1117
+#: order/serializers.py:406 order/serializers.py:1119
msgid "Line Item"
msgstr ""
@@ -3710,42 +3740,60 @@ msgstr ""
msgid "Supplied barcode values must be unique"
msgstr ""
-#: order/serializers.py:866
+#: order/serializers.py:868
msgid "Sale price currency"
msgstr "Курс продажи валюты"
-#: order/serializers.py:947
+#: order/serializers.py:949
msgid "No shipment details provided"
msgstr ""
-#: order/serializers.py:1006 order/serializers.py:1126
+#: order/serializers.py:1008 order/serializers.py:1128
msgid "Line item is not associated with this order"
msgstr ""
-#: order/serializers.py:1028
+#: order/serializers.py:1030
msgid "Quantity must be positive"
msgstr ""
-#: order/serializers.py:1139
+#: order/serializers.py:1141
msgid "Enter serial numbers to allocate"
msgstr ""
-#: order/serializers.py:1161 order/serializers.py:1281
+#: order/serializers.py:1163 order/serializers.py:1283
msgid "Shipment has already been shipped"
msgstr ""
-#: order/serializers.py:1164 order/serializers.py:1284
+#: order/serializers.py:1166 order/serializers.py:1286
msgid "Shipment is not associated with this order"
msgstr ""
-#: order/serializers.py:1214
+#: order/serializers.py:1216
msgid "No match found for the following serial numbers"
msgstr ""
-#: order/serializers.py:1224
+#: order/serializers.py:1226
msgid "The following serial numbers are already allocated"
msgstr ""
+#: order/tasks.py:26
+msgid "Overdue Purchase Order"
+msgstr ""
+
+#: order/tasks.py:31
+#, python-brace-format
+msgid "Purchase order {po} is now overdue"
+msgstr ""
+
+#: order/tasks.py:88
+msgid "Overdue Sales Order"
+msgstr ""
+
+#: order/tasks.py:93
+#, python-brace-format
+msgid "Sales order {so} is now overdue"
+msgstr ""
+
#: order/templates/order/order_base.html:33
msgid "Print purchase order report"
msgstr ""
@@ -3870,8 +3918,8 @@ msgstr "Выберите деталь поставщика"
#: templates/js/translated/bom.js:77 templates/js/translated/build.js:427
#: templates/js/translated/build.js:579 templates/js/translated/build.js:1972
#: templates/js/translated/order.js:833 templates/js/translated/order.js:1265
-#: templates/js/translated/order.js:2731 templates/js/translated/stock.js:570
-#: templates/js/translated/stock.js:738
+#: templates/js/translated/order.js:2731 templates/js/translated/stock.js:569
+#: templates/js/translated/stock.js:737
#: templates/patterns/wizard/match_fields.html:70
msgid "Remove row"
msgstr "Удалить строку"
@@ -3990,7 +4038,7 @@ msgid "Pending Shipments"
msgstr ""
#: order/templates/order/sales_order_detail.html:70
-#: templates/attachment_table.html:6 templates/js/translated/bom.js:1053
+#: templates/attachment_table.html:6 templates/js/translated/bom.js:1047
#: templates/js/translated/build.js:1880
msgid "Actions"
msgstr "Действия"
@@ -4021,47 +4069,47 @@ msgstr ""
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr ""
-#: part/api.py:481
+#: part/api.py:482
msgid "Incoming Purchase Order"
msgstr ""
-#: part/api.py:501
+#: part/api.py:502
msgid "Outgoing Sales Order"
msgstr ""
-#: part/api.py:519
+#: part/api.py:520
msgid "Stock produced by Build Order"
msgstr ""
-#: part/api.py:551
+#: part/api.py:552
msgid "Stock required for Build Order"
msgstr ""
-#: part/api.py:637
+#: part/api.py:638
msgid "Valid"
msgstr ""
-#: part/api.py:638
+#: part/api.py:639
msgid "Validate entire Bill of Materials"
msgstr ""
-#: part/api.py:644
+#: part/api.py:645
msgid "This option must be selected"
msgstr ""
-#: part/api.py:1010
+#: part/api.py:1011
msgid "Must be greater than zero"
msgstr ""
-#: part/api.py:1014
+#: part/api.py:1015
msgid "Must be a valid quantity"
msgstr ""
-#: part/api.py:1029
+#: part/api.py:1030
msgid "Specify location for initial part stock"
msgstr ""
-#: part/api.py:1060 part/api.py:1064 part/api.py:1079 part/api.py:1083
+#: part/api.py:1061 part/api.py:1065 part/api.py:1080 part/api.py:1084
msgid "This field is required"
msgstr ""
@@ -4080,17 +4128,13 @@ msgid "Available Stock"
msgstr "Доступный запас"
#: part/bom.py:130 part/templates/part/part_base.html:207
-#: templates/js/translated/part.js:517 templates/js/translated/part.js:537
-#: templates/js/translated/part.js:1229 templates/js/translated/part.js:1401
-#: templates/js/translated/part.js:1417
+#: templates/js/translated/part.js:561 templates/js/translated/part.js:581
+#: templates/js/translated/part.js:1273 templates/js/translated/part.js:1445
+#: templates/js/translated/part.js:1461
msgid "On Order"
msgstr ""
-#: part/forms.py:59
-msgid "Select part category"
-msgstr "Выберите категорию"
-
-#: part/forms.py:69
+#: part/forms.py:60
msgid "Input quantity for price calculation"
msgstr ""
@@ -4106,7 +4150,7 @@ msgstr "Ключевые слова по умолчанию"
msgid "Default keywords for parts in this category"
msgstr "Ключевые слова по умолчанию для деталей этой категории"
-#: part/models.py:115 part/models.py:2415 part/templates/part/category.html:15
+#: part/models.py:115 part/models.py:2403 part/templates/part/category.html:15
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr "Категория детали"
@@ -4123,7 +4167,7 @@ msgstr ""
#: part/templates/part/category_sidebar.html:9
#: templates/InvenTree/index.html:85 templates/InvenTree/search.html:82
#: templates/InvenTree/settings/sidebar.html:39
-#: templates/js/translated/part.js:1768 templates/js/translated/search.js:144
+#: templates/js/translated/part.js:1864 templates/js/translated/search.js:144
#: templates/navbar.html:24 users/models.py:37
msgid "Parts"
msgstr "Детали"
@@ -4153,7 +4197,7 @@ msgstr ""
msgid "Duplicate IPN not allowed in part settings"
msgstr ""
-#: part/models.py:738 part/models.py:2469
+#: part/models.py:738 part/models.py:2457
msgid "Part name"
msgstr "Наименование детали"
@@ -4186,12 +4230,11 @@ msgstr "Ключевые слова"
msgid "Part keywords to improve visibility in search results"
msgstr "Ключевые слова для улучшения видимости в результатах поиска"
-#: part/models.py:776 part/models.py:2171 part/models.py:2414
+#: part/models.py:776 part/models.py:2159 part/models.py:2402
#: part/templates/part/part_base.html:257
-#: part/templates/part/set_category.html:15
#: templates/InvenTree/notifications/notifications.html:65
#: templates/InvenTree/settings/settings.html:231
-#: templates/js/translated/part.js:1369
+#: templates/js/translated/part.js:1413 templates/js/translated/part.js:1639
msgid "Category"
msgstr "Категория"
@@ -4200,8 +4243,8 @@ msgid "Part category"
msgstr "Категория"
#: part/models.py:782 part/templates/part/part_base.html:266
-#: templates/js/translated/part.js:666 templates/js/translated/part.js:1322
-#: templates/js/translated/stock.js:1659
+#: templates/js/translated/part.js:710 templates/js/translated/part.js:1366
+#: templates/js/translated/stock.js:1669
msgid "IPN"
msgstr ""
@@ -4214,7 +4257,7 @@ msgid "Part revision or version number"
msgstr "Версия детали"
#: part/models.py:790 part/templates/part/part_base.html:273
-#: report/models.py:170 templates/js/translated/part.js:670
+#: report/models.py:170 templates/js/translated/part.js:714
msgid "Revision"
msgstr "Версия"
@@ -4302,317 +4345,321 @@ msgstr ""
msgid "Creation User"
msgstr ""
-#: part/models.py:1690
+#: part/models.py:1685
msgid "Sell multiple"
msgstr ""
-#: part/models.py:2218
+#: part/models.py:2206
msgid "Test templates can only be created for trackable parts"
msgstr ""
-#: part/models.py:2235
+#: part/models.py:2223
msgid "Test with this name already exists for this part"
msgstr ""
-#: part/models.py:2255 templates/js/translated/part.js:1819
-#: templates/js/translated/stock.js:1274
+#: part/models.py:2243 templates/js/translated/part.js:1915
+#: templates/js/translated/stock.js:1284
msgid "Test Name"
msgstr ""
-#: part/models.py:2256
+#: part/models.py:2244
msgid "Enter a name for the test"
msgstr ""
-#: part/models.py:2261
+#: part/models.py:2249
msgid "Test Description"
msgstr ""
-#: part/models.py:2262
+#: part/models.py:2250
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:2267 templates/js/translated/part.js:1828
+#: part/models.py:2255 templates/js/translated/part.js:1924
#: templates/js/translated/table_filters.js:294
msgid "Required"
msgstr ""
-#: part/models.py:2268
+#: part/models.py:2256
msgid "Is this test required to pass?"
msgstr ""
-#: part/models.py:2273 templates/js/translated/part.js:1836
+#: part/models.py:2261 templates/js/translated/part.js:1932
msgid "Requires Value"
msgstr ""
-#: part/models.py:2274
+#: part/models.py:2262
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:2279 templates/js/translated/part.js:1843
+#: part/models.py:2267 templates/js/translated/part.js:1939
msgid "Requires Attachment"
msgstr ""
-#: part/models.py:2280
+#: part/models.py:2268
msgid "Does this test require a file attachment when adding a test result?"
msgstr ""
-#: part/models.py:2288
+#: part/models.py:2276
#, python-brace-format
msgid "Illegal character in template name ({c})"
msgstr ""
-#: part/models.py:2324
+#: part/models.py:2312
msgid "Parameter template name must be unique"
msgstr ""
-#: part/models.py:2332
+#: part/models.py:2320
msgid "Parameter Name"
msgstr ""
-#: part/models.py:2339
+#: part/models.py:2327
msgid "Parameter Units"
msgstr ""
-#: part/models.py:2370
+#: part/models.py:2358
msgid "Parent Part"
msgstr "Родительская деталь"
-#: part/models.py:2372 part/models.py:2420 part/models.py:2421
+#: part/models.py:2360 part/models.py:2408 part/models.py:2409
#: templates/InvenTree/settings/settings.html:226
msgid "Parameter Template"
msgstr "Шаблон параметра"
-#: part/models.py:2374
+#: part/models.py:2362
msgid "Data"
msgstr ""
-#: part/models.py:2374
+#: part/models.py:2362
msgid "Parameter Value"
msgstr ""
-#: part/models.py:2425 templates/InvenTree/settings/settings.html:235
+#: part/models.py:2413 templates/InvenTree/settings/settings.html:235
msgid "Default Value"
msgstr ""
-#: part/models.py:2426
+#: part/models.py:2414
msgid "Default Parameter Value"
msgstr ""
-#: part/models.py:2461
+#: part/models.py:2449
msgid "Part ID or part name"
msgstr "Артикул или наименование детали"
-#: part/models.py:2464 templates/js/translated/model_renderers.js:200
+#: part/models.py:2452 templates/js/translated/model_renderers.js:200
msgid "Part ID"
msgstr "Артикул"
-#: part/models.py:2465
+#: part/models.py:2453
msgid "Unique part ID value"
msgstr ""
-#: part/models.py:2468
+#: part/models.py:2456
msgid "Part Name"
msgstr "Наименование детали"
-#: part/models.py:2472
+#: part/models.py:2460
msgid "Part IPN"
msgstr "IPN"
-#: part/models.py:2473
+#: part/models.py:2461
msgid "Part IPN value"
msgstr "Значение IPN"
-#: part/models.py:2476
+#: part/models.py:2464
msgid "Level"
msgstr ""
-#: part/models.py:2477
+#: part/models.py:2465
msgid "BOM level"
msgstr ""
-#: part/models.py:2546
+#: part/models.py:2534
msgid "Select parent part"
msgstr "Выберите родительскую деталь"
-#: part/models.py:2554
+#: part/models.py:2542
msgid "Sub part"
msgstr ""
-#: part/models.py:2555
+#: part/models.py:2543
msgid "Select part to be used in BOM"
msgstr "Выбрать деталь для использования в BOM"
-#: part/models.py:2561
+#: part/models.py:2549
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:2563 part/templates/part/upload_bom.html:58
-#: templates/js/translated/bom.js:877 templates/js/translated/bom.js:971
+#: part/models.py:2551 part/templates/part/upload_bom.html:58
+#: templates/js/translated/bom.js:871 templates/js/translated/bom.js:965
#: templates/js/translated/table_filters.js:92
msgid "Optional"
msgstr ""
-#: part/models.py:2563
+#: part/models.py:2551
msgid "This BOM item is optional"
msgstr ""
-#: part/models.py:2566 part/templates/part/upload_bom.html:55
+#: part/models.py:2554 part/templates/part/upload_bom.html:55
msgid "Overage"
msgstr ""
-#: part/models.py:2567
+#: part/models.py:2555
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr ""
-#: part/models.py:2570
+#: part/models.py:2558
msgid "BOM item reference"
msgstr ""
-#: part/models.py:2573
+#: part/models.py:2561
msgid "BOM item notes"
msgstr ""
-#: part/models.py:2575
+#: part/models.py:2563
msgid "Checksum"
msgstr ""
-#: part/models.py:2575
+#: part/models.py:2563
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:2579 part/templates/part/upload_bom.html:57
-#: templates/js/translated/bom.js:988
+#: part/models.py:2567 part/templates/part/upload_bom.html:57
+#: templates/js/translated/bom.js:982
#: templates/js/translated/table_filters.js:68
#: templates/js/translated/table_filters.js:88
msgid "Inherited"
msgstr ""
-#: part/models.py:2580
+#: part/models.py:2568
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr ""
-#: part/models.py:2585 part/templates/part/upload_bom.html:56
-#: templates/js/translated/bom.js:980
+#: part/models.py:2573 part/templates/part/upload_bom.html:56
+#: templates/js/translated/bom.js:974
msgid "Allow Variants"
msgstr "Разрешить разновидности"
-#: part/models.py:2586
+#: part/models.py:2574
msgid "Stock items for variant parts can be used for this BOM item"
msgstr ""
-#: part/models.py:2664 stock/models.py:460
+#: part/models.py:2652 stock/models.py:460
msgid "Quantity must be integer value for trackable parts"
msgstr "Для отслеживаемых деталей количество должно быть целым числом"
-#: part/models.py:2673 part/models.py:2675
+#: part/models.py:2661 part/models.py:2663
msgid "Sub part must be specified"
msgstr ""
-#: part/models.py:2780
+#: part/models.py:2768
msgid "BOM Item Substitute"
msgstr ""
-#: part/models.py:2801
+#: part/models.py:2789
msgid "Substitute part cannot be the same as the master part"
msgstr ""
-#: part/models.py:2814
+#: part/models.py:2802
msgid "Parent BOM item"
msgstr ""
-#: part/models.py:2822
+#: part/models.py:2810
msgid "Substitute part"
msgstr ""
-#: part/models.py:2833
+#: part/models.py:2825
msgid "Part 1"
msgstr "Часть 1"
-#: part/models.py:2837
+#: part/models.py:2829
msgid "Part 2"
msgstr "Часть 2"
-#: part/models.py:2837
+#: part/models.py:2829
msgid "Select Related Part"
msgstr ""
-#: part/models.py:2868
-msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique"
+#: part/models.py:2847
+msgid "Part relationship cannot be created between a part and itself"
msgstr ""
-#: part/serializers.py:138 part/serializers.py:169 stock/serializers.py:163
+#: part/models.py:2851
+msgid "Duplicate relationship already exists"
+msgstr ""
+
+#: part/serializers.py:140 part/serializers.py:171 stock/serializers.py:163
msgid "Purchase currency of this stock item"
msgstr "Валюта покупки этой единицы хранения"
-#: part/serializers.py:794
+#: part/serializers.py:796
msgid "Select part to copy BOM from"
msgstr ""
-#: part/serializers.py:802
+#: part/serializers.py:804
msgid "Remove Existing Data"
msgstr ""
-#: part/serializers.py:803
+#: part/serializers.py:805
msgid "Remove existing BOM items before copying"
msgstr ""
-#: part/serializers.py:808
+#: part/serializers.py:810
msgid "Include Inherited"
msgstr ""
-#: part/serializers.py:809
+#: part/serializers.py:811
msgid "Include BOM items which are inherited from templated parts"
msgstr ""
-#: part/serializers.py:814
+#: part/serializers.py:816
msgid "Skip Invalid Rows"
msgstr ""
-#: part/serializers.py:815
+#: part/serializers.py:817
msgid "Enable this option to skip invalid rows"
msgstr ""
-#: part/serializers.py:820
+#: part/serializers.py:822
msgid "Copy Substitute Parts"
msgstr ""
-#: part/serializers.py:821
+#: part/serializers.py:823
msgid "Copy substitute parts when duplicate BOM items"
msgstr ""
-#: part/serializers.py:861
+#: part/serializers.py:863
msgid "Clear Existing BOM"
msgstr ""
-#: part/serializers.py:862
+#: part/serializers.py:864
msgid "Delete existing BOM items before uploading"
msgstr ""
-#: part/serializers.py:892
+#: part/serializers.py:894
msgid "No part column specified"
msgstr ""
-#: part/serializers.py:935
+#: part/serializers.py:937
msgid "Multiple matching parts found"
msgstr ""
-#: part/serializers.py:938
+#: part/serializers.py:940
msgid "No matching part found"
msgstr "Подходящая деталь не найдена"
-#: part/serializers.py:941
+#: part/serializers.py:943
msgid "Part is not designated as a component"
msgstr ""
-#: part/serializers.py:950
+#: part/serializers.py:952
msgid "Quantity not provided"
msgstr ""
-#: part/serializers.py:958
+#: part/serializers.py:960
msgid "Invalid quantity"
msgstr ""
-#: part/serializers.py:979
+#: part/serializers.py:981
msgid "At least one BOM item is required"
msgstr ""
@@ -5088,10 +5135,10 @@ msgid "Part is virtual (not a physical part)"
msgstr ""
#: part/templates/part/part_base.html:143
-#: templates/js/translated/company.js:623
-#: templates/js/translated/company.js:882
+#: templates/js/translated/company.js:608
+#: templates/js/translated/company.js:867
#: templates/js/translated/model_renderers.js:192
-#: templates/js/translated/part.js:581 templates/js/translated/part.js:658
+#: templates/js/translated/part.js:625 templates/js/translated/part.js:702
msgid "Inactive"
msgstr ""
@@ -5120,13 +5167,13 @@ msgstr ""
msgid "Allocated to Sales Orders"
msgstr ""
-#: part/templates/part/part_base.html:232 templates/js/translated/bom.js:1009
+#: part/templates/part/part_base.html:232 templates/js/translated/bom.js:1003
msgid "Can Build"
msgstr ""
-#: part/templates/part/part_base.html:238 templates/js/translated/part.js:520
-#: templates/js/translated/part.js:540 templates/js/translated/part.js:1233
-#: templates/js/translated/part.js:1405 templates/js/translated/part.js:1421
+#: part/templates/part/part_base.html:238 templates/js/translated/part.js:564
+#: templates/js/translated/part.js:584 templates/js/translated/part.js:1277
+#: templates/js/translated/part.js:1449 templates/js/translated/part.js:1465
msgid "Building"
msgstr ""
@@ -5143,7 +5190,7 @@ msgstr ""
msgid "Search for serial number"
msgstr ""
-#: part/templates/part/part_base.html:443 part/templates/part/prices.html:147
+#: part/templates/part/part_base.html:443 part/templates/part/prices.html:149
msgid "Calculate"
msgstr ""
@@ -5161,54 +5208,55 @@ msgstr ""
#: part/templates/part/part_pricing.html:26
#: part/templates/part/part_pricing.html:52
-#: part/templates/part/part_pricing.html:100
-#: part/templates/part/part_pricing.html:115 part/templates/part/prices.html:28
-#: part/templates/part/prices.html:55 part/templates/part/prices.html:106
-#: part/templates/part/prices.html:123
+#: part/templates/part/part_pricing.html:103
+#: part/templates/part/part_pricing.html:118 part/templates/part/prices.html:28
+#: part/templates/part/prices.html:55 part/templates/part/prices.html:108
+#: part/templates/part/prices.html:125
msgid "Unit Cost"
msgstr ""
#: part/templates/part/part_pricing.html:32
#: part/templates/part/part_pricing.html:58
-#: part/templates/part/part_pricing.html:104
-#: part/templates/part/part_pricing.html:119 part/templates/part/prices.html:35
-#: part/templates/part/prices.html:62 part/templates/part/prices.html:111
-#: part/templates/part/prices.html:128
+#: part/templates/part/part_pricing.html:107
+#: part/templates/part/part_pricing.html:122 part/templates/part/prices.html:35
+#: part/templates/part/prices.html:62 part/templates/part/prices.html:113
+#: part/templates/part/prices.html:130
msgid "Total Cost"
msgstr ""
#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:43
-#: templates/js/translated/bom.js:963
+#: templates/js/translated/bom.js:957
msgid "No supplier pricing available"
msgstr ""
#: part/templates/part/part_pricing.html:48 part/templates/part/prices.html:52
-#: part/templates/part/prices.html:246
+#: part/templates/part/prices.html:248
msgid "BOM Pricing"
msgstr ""
-#: part/templates/part/part_pricing.html:65 part/templates/part/prices.html:72
+#: part/templates/part/part_pricing.html:66 part/templates/part/prices.html:72
msgid "Unit Purchase Price"
msgstr ""
-#: part/templates/part/part_pricing.html:71 part/templates/part/prices.html:79
+#: part/templates/part/part_pricing.html:72 part/templates/part/prices.html:79
msgid "Total Purchase Price"
msgstr ""
-#: part/templates/part/part_pricing.html:81 part/templates/part/prices.html:89
+#: part/templates/part/part_pricing.html:82 part/templates/part/prices.html:89
msgid "Note: BOM pricing is incomplete for this part"
msgstr ""
-#: part/templates/part/part_pricing.html:88 part/templates/part/prices.html:96
+#: part/templates/part/part_pricing.html:91 part/templates/part/prices.html:98
msgid "No BOM pricing available"
msgstr ""
-#: part/templates/part/part_pricing.html:97 part/templates/part/prices.html:105
+#: part/templates/part/part_pricing.html:100
+#: part/templates/part/prices.html:107
msgid "Internal Price"
msgstr "Внутренняя цена"
-#: part/templates/part/part_pricing.html:128
-#: part/templates/part/prices.html:137
+#: part/templates/part/part_pricing.html:131
+#: part/templates/part/prices.html:139
msgid "No pricing information is available for this part."
msgstr ""
@@ -5232,43 +5280,6 @@ msgstr ""
msgid "Select from existing images"
msgstr ""
-#: part/templates/part/partial_delete.html:9
-#, python-format
-msgid "Part '%(full_name)s' cannot be deleted as it is still marked as active.\n"
-"
Disable the \"Active\" part attribute and re-try.\n"
-" "
-msgstr ""
-
-#: part/templates/part/partial_delete.html:17
-#, python-format
-msgid "Are you sure you want to delete part '%(full_name)s'?"
-msgstr ""
-
-#: part/templates/part/partial_delete.html:22
-#, python-format
-msgid "This part is used in BOMs for %(count)s other parts. If you delete this part, the BOMs for the following parts will be updated"
-msgstr ""
-
-#: part/templates/part/partial_delete.html:32
-#, python-format
-msgid "There are %(count)s stock entries defined for this part. If you delete this part, the following stock entries will also be deleted:"
-msgstr ""
-
-#: part/templates/part/partial_delete.html:43
-#, python-format
-msgid "There are %(count)s manufacturers defined for this part. If you delete this part, the following manufacturer parts will also be deleted:"
-msgstr ""
-
-#: part/templates/part/partial_delete.html:54
-#, python-format
-msgid "There are %(count)s suppliers defined for this part. If you delete this part, the following supplier parts will also be deleted:"
-msgstr ""
-
-#: part/templates/part/partial_delete.html:67
-#, python-format
-msgid "There are %(count)s unique parts tracked for '%(full_name)s'. Deleting this part will permanently remove this tracking information."
-msgstr ""
-
#: part/templates/part/prices.html:19
msgid "Pricing ranges"
msgstr ""
@@ -5285,66 +5296,58 @@ msgstr "Показать закупочную цену"
msgid "Show BOM cost"
msgstr ""
-#: part/templates/part/prices.html:120
+#: part/templates/part/prices.html:122
msgid "Show sale cost"
msgstr ""
-#: part/templates/part/prices.html:121
+#: part/templates/part/prices.html:123
msgid "Show sale price"
msgstr ""
-#: part/templates/part/prices.html:143
+#: part/templates/part/prices.html:145
msgid "Calculation parameters"
msgstr ""
-#: part/templates/part/prices.html:158 templates/js/translated/bom.js:957
+#: part/templates/part/prices.html:160 templates/js/translated/bom.js:951
msgid "Supplier Cost"
msgstr ""
-#: part/templates/part/prices.html:159 part/templates/part/prices.html:180
-#: part/templates/part/prices.html:204 part/templates/part/prices.html:234
-#: part/templates/part/prices.html:260 part/templates/part/prices.html:289
+#: part/templates/part/prices.html:161 part/templates/part/prices.html:182
+#: part/templates/part/prices.html:206 part/templates/part/prices.html:236
+#: part/templates/part/prices.html:262 part/templates/part/prices.html:291
msgid "Jump to overview"
msgstr ""
-#: part/templates/part/prices.html:184
+#: part/templates/part/prices.html:186
msgid "Stock Pricing"
msgstr ""
-#: part/templates/part/prices.html:193
+#: part/templates/part/prices.html:195
msgid "No stock pricing history is available for this part."
msgstr ""
-#: part/templates/part/prices.html:203
+#: part/templates/part/prices.html:205
msgid "Internal Cost"
msgstr ""
-#: part/templates/part/prices.html:218
+#: part/templates/part/prices.html:220
msgid "Add Internal Price Break"
msgstr ""
-#: part/templates/part/prices.html:233
+#: part/templates/part/prices.html:235
msgid "BOM Cost"
msgstr ""
-#: part/templates/part/prices.html:259
+#: part/templates/part/prices.html:261
msgid "Sale Cost"
msgstr ""
-#: part/templates/part/prices.html:300
+#: part/templates/part/prices.html:302
msgid "No sale pice history available for this part."
msgstr ""
-#: part/templates/part/set_category.html:9
-msgid "Set category for the following parts"
-msgstr ""
-
-#: part/templates/part/set_category.html:32
-msgid "Remove part"
-msgstr "Удалить деталь"
-
-#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:543
-#: templates/js/translated/part.js:1221 templates/js/translated/part.js:1425
+#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:587
+#: templates/js/translated/part.js:1265 templates/js/translated/part.js:1469
msgid "No Stock"
msgstr ""
@@ -5407,56 +5410,39 @@ msgstr "Неизвестная база данных"
msgid "{title} v{version}"
msgstr ""
-#: part/views.py:74
-msgid "Set Part Category"
-msgstr "Укажите категорию"
-
-#: part/views.py:122
-#, python-brace-format
-msgid "Set category for {n} parts"
-msgstr ""
-
-#: part/views.py:193
+#: part/views.py:118
msgid "Match References"
msgstr ""
-#: part/views.py:494
+#: part/views.py:419
msgid "None"
msgstr ""
-#: part/views.py:556
+#: part/views.py:481
msgid "Part QR Code"
msgstr ""
-#: part/views.py:650
+#: part/views.py:575
msgid "Select Part Image"
msgstr ""
-#: part/views.py:676
+#: part/views.py:601
msgid "Updated part image"
msgstr ""
-#: part/views.py:679
+#: part/views.py:604
msgid "Part image not found"
msgstr "Изображение детали не найдено"
-#: part/views.py:768
-msgid "Confirm Part Deletion"
-msgstr ""
-
-#: part/views.py:776
-msgid "Part was deleted"
-msgstr "Деталь была удалена"
-
-#: part/views.py:785
+#: part/views.py:693
msgid "Part Pricing"
msgstr ""
-#: part/views.py:976
+#: part/views.py:884
msgid "Delete Part Category"
msgstr "Удалить категорию"
-#: part/views.py:983
+#: part/views.py:891
msgid "Part category was deleted"
msgstr "Категория удалена"
@@ -5516,21 +5502,21 @@ msgstr ""
msgid "Label printing failed"
msgstr ""
-#: plugin/builtin/integration/core_notifications.py:28
+#: plugin/builtin/integration/core_notifications.py:29
msgid "InvenTree contributors"
msgstr ""
-#: plugin/builtin/integration/core_notifications.py:29
+#: plugin/builtin/integration/core_notifications.py:30
msgid "Integrated outgoing notificaton methods"
msgstr ""
-#: plugin/builtin/integration/core_notifications.py:33
-#: plugin/builtin/integration/core_notifications.py:52
+#: plugin/builtin/integration/core_notifications.py:34
+#: plugin/builtin/integration/core_notifications.py:53
msgid "Enable email notifications"
msgstr "Включить уведомления по электронной почте"
-#: plugin/builtin/integration/core_notifications.py:34
-#: plugin/builtin/integration/core_notifications.py:53
+#: plugin/builtin/integration/core_notifications.py:35
+#: plugin/builtin/integration/core_notifications.py:54
msgid "Allow sending of emails for event notifications"
msgstr "Разрешить отправку уведомлений о событиях по электронной почте"
@@ -5646,15 +5632,19 @@ msgstr ""
msgid "Either packagename of URL must be provided"
msgstr ""
-#: report/api.py:166
+#: report/api.py:179
msgid "No valid objects provided to template"
msgstr ""
-#: report/api.py:198 report/api.py:239
+#: report/api.py:215 report/api.py:256
#, python-brace-format
msgid "Template file '{template}' is missing or does not exist"
msgstr ""
+#: report/api.py:359
+msgid "Test report"
+msgstr ""
+
#: report/models.py:152
msgid "Template name"
msgstr "Название шаблона"
@@ -5757,7 +5747,7 @@ msgstr ""
#: templates/js/translated/build.js:1173 templates/js/translated/build.js:1671
#: templates/js/translated/model_renderers.js:106
#: templates/js/translated/order.js:115 templates/js/translated/order.js:3229
-#: templates/js/translated/order.js:3318 templates/js/translated/stock.js:435
+#: templates/js/translated/order.js:3318 templates/js/translated/stock.js:434
msgid "Serial Number"
msgstr "Серийный номер"
@@ -5766,19 +5756,19 @@ msgid "Test Results"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:93
-#: stock/models.py:2068
+#: stock/models.py:2072
msgid "Test"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:94
-#: stock/models.py:2074
+#: stock/models.py:2078
msgid "Result"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:97
#: templates/InvenTree/settings/plugin.html:51
#: templates/InvenTree/settings/plugin_settings.html:38
-#: templates/js/translated/order.js:1669 templates/js/translated/stock.js:2340
+#: templates/js/translated/order.js:1669 templates/js/translated/stock.js:2350
msgid "Date"
msgstr ""
@@ -5796,20 +5786,20 @@ msgid "Installed Items"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:137
-#: templates/js/translated/stock.js:555 templates/js/translated/stock.js:725
-#: templates/js/translated/stock.js:2589
+#: templates/js/translated/stock.js:554 templates/js/translated/stock.js:724
+#: templates/js/translated/stock.js:2599
msgid "Serial"
msgstr ""
-#: stock/api.py:504
+#: stock/api.py:505
msgid "Quantity is required"
msgstr ""
-#: stock/api.py:511
+#: stock/api.py:512
msgid "Valid part must be supplied"
msgstr ""
-#: stock/api.py:536
+#: stock/api.py:537
msgid "Serial numbers cannot be supplied for a non-trackable part"
msgstr ""
@@ -5917,7 +5907,7 @@ msgid "Destination Sales Order"
msgstr ""
#: stock/models.py:690 stock/templates/stock/item_base.html:429
-#: templates/js/translated/stock.js:1816
+#: templates/js/translated/stock.js:1826
msgid "Expiry Date"
msgstr ""
@@ -5971,79 +5961,79 @@ msgstr ""
msgid "Serial numbers already exist: {exists}"
msgstr ""
-#: stock/models.py:1321
+#: stock/models.py:1325
msgid "Stock item has been assigned to a sales order"
msgstr ""
-#: stock/models.py:1324
+#: stock/models.py:1328
msgid "Stock item is installed in another item"
msgstr ""
-#: stock/models.py:1327
+#: stock/models.py:1331
msgid "Stock item contains other items"
msgstr ""
-#: stock/models.py:1330
+#: stock/models.py:1334
msgid "Stock item has been assigned to a customer"
msgstr ""
-#: stock/models.py:1333
+#: stock/models.py:1337
msgid "Stock item is currently in production"
msgstr ""
-#: stock/models.py:1336
+#: stock/models.py:1340
msgid "Serialized stock cannot be merged"
msgstr ""
-#: stock/models.py:1343 stock/serializers.py:908
+#: stock/models.py:1347 stock/serializers.py:895
msgid "Duplicate stock items"
msgstr ""
-#: stock/models.py:1347
+#: stock/models.py:1351
msgid "Stock items must refer to the same part"
msgstr ""
-#: stock/models.py:1351
+#: stock/models.py:1355
msgid "Stock items must refer to the same supplier part"
msgstr ""
-#: stock/models.py:1355
+#: stock/models.py:1359
msgid "Stock status codes must match"
msgstr ""
-#: stock/models.py:1524
+#: stock/models.py:1528
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:1986
+#: stock/models.py:1990
msgid "Entry notes"
msgstr ""
-#: stock/models.py:2044
+#: stock/models.py:2048
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:2050
+#: stock/models.py:2054
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:2069
+#: stock/models.py:2073
msgid "Test name"
msgstr ""
-#: stock/models.py:2075
+#: stock/models.py:2079
msgid "Test result"
msgstr ""
-#: stock/models.py:2081
+#: stock/models.py:2085
msgid "Test output value"
msgstr ""
-#: stock/models.py:2088
+#: stock/models.py:2092
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:2094
+#: stock/models.py:2098
msgid "Test notes"
msgstr ""
@@ -6064,7 +6054,7 @@ msgstr ""
msgid "Enter serial numbers for new items"
msgstr ""
-#: stock/serializers.py:309 stock/serializers.py:865 stock/serializers.py:1098
+#: stock/serializers.py:309 stock/serializers.py:852 stock/serializers.py:1085
msgid "Destination stock location"
msgstr ""
@@ -6104,63 +6094,63 @@ msgstr ""
msgid "Destination location for returned item"
msgstr ""
-#: stock/serializers.py:720
+#: stock/serializers.py:707
msgid "Part must be salable"
msgstr ""
-#: stock/serializers.py:724
+#: stock/serializers.py:711
msgid "Item is allocated to a sales order"
msgstr ""
-#: stock/serializers.py:728
+#: stock/serializers.py:715
msgid "Item is allocated to a build order"
msgstr ""
-#: stock/serializers.py:759
+#: stock/serializers.py:746
msgid "Customer to assign stock items"
msgstr ""
-#: stock/serializers.py:765
+#: stock/serializers.py:752
msgid "Selected company is not a customer"
msgstr "Выбранная компания не является покупателем"
-#: stock/serializers.py:773
+#: stock/serializers.py:760
msgid "Stock assignment notes"
msgstr ""
-#: stock/serializers.py:783 stock/serializers.py:1014
+#: stock/serializers.py:770 stock/serializers.py:1001
msgid "A list of stock items must be provided"
msgstr ""
-#: stock/serializers.py:872
+#: stock/serializers.py:859
msgid "Stock merging notes"
msgstr ""
-#: stock/serializers.py:877
+#: stock/serializers.py:864
msgid "Allow mismatched suppliers"
msgstr ""
-#: stock/serializers.py:878
+#: stock/serializers.py:865
msgid "Allow stock items with different supplier parts to be merged"
msgstr ""
-#: stock/serializers.py:883
+#: stock/serializers.py:870
msgid "Allow mismatched status"
msgstr ""
-#: stock/serializers.py:884
+#: stock/serializers.py:871
msgid "Allow stock items with different status codes to be merged"
msgstr ""
-#: stock/serializers.py:894
+#: stock/serializers.py:881
msgid "At least two stock items must be provided"
msgstr ""
-#: stock/serializers.py:976
+#: stock/serializers.py:963
msgid "StockItem primary key value"
msgstr ""
-#: stock/serializers.py:1004
+#: stock/serializers.py:991
msgid "Stock transaction notes"
msgstr ""
@@ -6185,7 +6175,7 @@ msgstr ""
msgid "Test Report"
msgstr ""
-#: stock/templates/stock/item.html:94
+#: stock/templates/stock/item.html:94 stock/templates/stock/item.html:298
msgid "Delete Test Data"
msgstr ""
@@ -6197,11 +6187,15 @@ msgstr ""
msgid "Installed Stock Items"
msgstr "Установленные единицы хранения"
-#: stock/templates/stock/item.html:151 templates/js/translated/stock.js:2733
+#: stock/templates/stock/item.html:151 templates/js/translated/stock.js:2743
msgid "Install Stock Item"
msgstr "Установить единицу хранения"
-#: stock/templates/stock/item.html:292 templates/js/translated/stock.js:1455
+#: stock/templates/stock/item.html:290
+msgid "Delete all test results for this stock item"
+msgstr ""
+
+#: stock/templates/stock/item.html:323 templates/js/translated/stock.js:1465
msgid "Add Test Result"
msgstr ""
@@ -6388,7 +6382,7 @@ msgid "Stale"
msgstr ""
#: stock/templates/stock/item_base.html:442
-#: templates/js/translated/stock.js:1832
+#: templates/js/translated/stock.js:1842
msgid "Last Updated"
msgstr ""
@@ -6529,7 +6523,7 @@ msgstr "Места хранения"
msgid "Child Items"
msgstr ""
-#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:182
+#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:144
msgid "Convert Stock Item"
msgstr ""
@@ -6550,31 +6544,19 @@ msgstr "Предупреждение"
msgid "This action cannot be easily undone"
msgstr ""
-#: stock/views.py:113
+#: stock/views.py:111
msgid "Stock Location QR code"
msgstr ""
-#: stock/views.py:131
-msgid "Delete All Test Data"
-msgstr ""
-
-#: stock/views.py:149
-msgid "Confirm test data deletion"
-msgstr ""
-
-#: stock/views.py:150
-msgid "Check the confirmation box"
-msgstr ""
-
-#: stock/views.py:165
+#: stock/views.py:127
msgid "Stock Item QR Code"
msgstr ""
-#: stock/views.py:216
+#: stock/views.py:178
msgid "Delete Stock Location"
msgstr ""
-#: stock/views.py:229
+#: stock/views.py:191
msgid "Delete Stock Item"
msgstr ""
@@ -7317,8 +7299,8 @@ msgstr ""
#: templates/about.html:11 templates/about.html:105
#: templates/js/translated/bom.js:133 templates/js/translated/bom.js:621
-#: templates/js/translated/modals.js:56 templates/js/translated/modals.js:595
-#: templates/js/translated/modals.js:689 templates/js/translated/modals.js:997
+#: templates/js/translated/modals.js:56 templates/js/translated/modals.js:601
+#: templates/js/translated/modals.js:695 templates/js/translated/modals.js:1003
#: templates/js/translated/order.js:928 templates/modals.html:15
#: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50
msgid "Close"
@@ -7390,6 +7372,10 @@ msgstr "Подтверждение адреса электронной почт
msgid "Please confirm that %(email)s is an email address for user %(user_display)s."
msgstr "Пожалуйста, подтвердите, что %(email)s является адресом электронной почты пользователя %(user_display)s."
+#: templates/account/email_confirm.html:20 templates/js/translated/forms.js:630
+msgid "Confirm"
+msgstr "Подтвердить"
+
#: templates/account/email_confirm.html:27
#, python-format
msgid "This email confirmation link expired or is invalid. Please issue a new email confirmation request."
@@ -7562,7 +7548,7 @@ msgstr ""
msgid "Delete selected attachments"
msgstr ""
-#: templates/attachment_table.html:12 templates/js/translated/attachment.js:110
+#: templates/attachment_table.html:12 templates/js/translated/attachment.js:112
msgid "Delete Attachments"
msgstr ""
@@ -7596,15 +7582,15 @@ msgid "The following parts are low on required stock"
msgstr ""
#: templates/email/build_order_required_stock.html:18
-#: templates/js/translated/bom.js:1425
+#: templates/js/translated/bom.js:1419
msgid "Required Quantity"
msgstr ""
#: templates/email/build_order_required_stock.html:19
#: templates/email/low_stock_notification.html:18
-#: templates/js/translated/bom.js:890 templates/js/translated/build.js:1787
-#: templates/js/translated/build.js:2650 templates/js/translated/part.js:527
-#: templates/js/translated/part.js:530
+#: templates/js/translated/bom.js:884 templates/js/translated/build.js:1787
+#: templates/js/translated/build.js:2650 templates/js/translated/part.js:571
+#: templates/js/translated/part.js:574
#: templates/js/translated/table_filters.js:178
msgid "Available"
msgstr ""
@@ -7622,6 +7608,13 @@ msgstr ""
msgid "Minimum Quantity"
msgstr "Минимальное количество"
+#: templates/email/new_order_assigned.html:9
+#: templates/email/overdue_build_order.html:9
+#: templates/email/overdue_purchase_order.html:9
+#: templates/email/overdue_sales_order.html:9
+msgid "Click on the following link to view this order"
+msgstr ""
+
#: templates/image_download.html:8
msgid "Specify URL for downloading image"
msgstr ""
@@ -7638,91 +7631,91 @@ msgstr "Удалённый сервер должен быть доступен"
msgid "Remote image must not exceed maximum allowable file size"
msgstr ""
-#: templates/js/translated/api.js:235 templates/js/translated/modals.js:1067
+#: templates/js/translated/api.js:195 templates/js/translated/modals.js:1073
msgid "No Response"
msgstr ""
-#: templates/js/translated/api.js:236 templates/js/translated/modals.js:1068
+#: templates/js/translated/api.js:196 templates/js/translated/modals.js:1074
msgid "No response from the InvenTree server"
msgstr ""
-#: templates/js/translated/api.js:242
+#: templates/js/translated/api.js:202
msgid "Error 400: Bad request"
msgstr "Ошибка 400: Некорректный запрос"
-#: templates/js/translated/api.js:243
+#: templates/js/translated/api.js:203
msgid "API request returned error code 400"
msgstr "API-запрос вернул код ошибки 400"
-#: templates/js/translated/api.js:247 templates/js/translated/modals.js:1077
+#: templates/js/translated/api.js:207 templates/js/translated/modals.js:1083
msgid "Error 401: Not Authenticated"
msgstr "Ошибка 401: Авторизация не выполнена"
-#: templates/js/translated/api.js:248 templates/js/translated/modals.js:1078
+#: templates/js/translated/api.js:208 templates/js/translated/modals.js:1084
msgid "Authentication credentials not supplied"
msgstr ""
-#: templates/js/translated/api.js:252 templates/js/translated/modals.js:1082
+#: templates/js/translated/api.js:212 templates/js/translated/modals.js:1088
msgid "Error 403: Permission Denied"
msgstr "Ошибка 403: Доступ запрещён"
-#: templates/js/translated/api.js:253 templates/js/translated/modals.js:1083
+#: templates/js/translated/api.js:213 templates/js/translated/modals.js:1089
msgid "You do not have the required permissions to access this function"
msgstr "У вас нет прав доступа к этой функции"
-#: templates/js/translated/api.js:257 templates/js/translated/modals.js:1087
+#: templates/js/translated/api.js:217 templates/js/translated/modals.js:1093
msgid "Error 404: Resource Not Found"
msgstr "Ошибка 404: Ресурс не найден"
-#: templates/js/translated/api.js:258 templates/js/translated/modals.js:1088
+#: templates/js/translated/api.js:218 templates/js/translated/modals.js:1094
msgid "The requested resource could not be located on the server"
msgstr ""
-#: templates/js/translated/api.js:262
+#: templates/js/translated/api.js:222
msgid "Error 405: Method Not Allowed"
msgstr "Ошибка 405: Метод не разрешён"
-#: templates/js/translated/api.js:263
+#: templates/js/translated/api.js:223
msgid "HTTP method not allowed at URL"
msgstr ""
-#: templates/js/translated/api.js:267 templates/js/translated/modals.js:1092
+#: templates/js/translated/api.js:227 templates/js/translated/modals.js:1098
msgid "Error 408: Timeout"
msgstr "Ошибка 408: Таймаут"
-#: templates/js/translated/api.js:268 templates/js/translated/modals.js:1093
+#: templates/js/translated/api.js:228 templates/js/translated/modals.js:1099
msgid "Connection timeout while requesting data from server"
msgstr ""
-#: templates/js/translated/api.js:271
+#: templates/js/translated/api.js:231
msgid "Unhandled Error Code"
msgstr "Необработанная ошибка"
-#: templates/js/translated/api.js:272
+#: templates/js/translated/api.js:232
msgid "Error code"
msgstr "Код ошибки"
-#: templates/js/translated/attachment.js:96
+#: templates/js/translated/attachment.js:98
msgid "All selected attachments will be deleted"
msgstr ""
-#: templates/js/translated/attachment.js:156
+#: templates/js/translated/attachment.js:152
msgid "No attachments found"
msgstr "Вложение не найдено"
-#: templates/js/translated/attachment.js:180
+#: templates/js/translated/attachment.js:176
msgid "Edit Attachment"
msgstr ""
-#: templates/js/translated/attachment.js:246
+#: templates/js/translated/attachment.js:242
msgid "Upload Date"
msgstr ""
-#: templates/js/translated/attachment.js:262
+#: templates/js/translated/attachment.js:264
msgid "Edit attachment"
msgstr ""
-#: templates/js/translated/attachment.js:269
+#: templates/js/translated/attachment.js:271
msgid "Delete attachment"
msgstr ""
@@ -7755,7 +7748,7 @@ msgid "Unknown response from server"
msgstr ""
#: templates/js/translated/barcode.js:182
-#: templates/js/translated/modals.js:1057
+#: templates/js/translated/modals.js:1063
msgid "Invalid server response"
msgstr ""
@@ -7783,7 +7776,7 @@ msgstr ""
msgid "Unlink"
msgstr ""
-#: templates/js/translated/barcode.js:456 templates/js/translated/stock.js:999
+#: templates/js/translated/barcode.js:456 templates/js/translated/stock.js:998
msgid "Remove stock item"
msgstr ""
@@ -7918,89 +7911,89 @@ msgstr ""
msgid "Edit BOM Item Substitutes"
msgstr ""
-#: templates/js/translated/bom.js:682
+#: templates/js/translated/bom.js:684
msgid "All selected BOM items will be deleted"
msgstr ""
-#: templates/js/translated/bom.js:697
+#: templates/js/translated/bom.js:699
msgid "Delete selected BOM items?"
msgstr ""
-#: templates/js/translated/bom.js:824
+#: templates/js/translated/bom.js:818
msgid "Load BOM for subassembly"
msgstr ""
-#: templates/js/translated/bom.js:834
+#: templates/js/translated/bom.js:828
msgid "Substitutes Available"
msgstr ""
-#: templates/js/translated/bom.js:838 templates/js/translated/build.js:1769
+#: templates/js/translated/bom.js:832 templates/js/translated/build.js:1769
msgid "Variant stock allowed"
msgstr ""
-#: templates/js/translated/bom.js:906 templates/js/translated/build.js:1814
+#: templates/js/translated/bom.js:900 templates/js/translated/build.js:1814
#: templates/js/translated/order.js:3562
msgid "No Stock Available"
msgstr ""
-#: templates/js/translated/bom.js:910 templates/js/translated/build.js:1818
+#: templates/js/translated/bom.js:904 templates/js/translated/build.js:1818
msgid "Includes variant and substitute stock"
msgstr ""
-#: templates/js/translated/bom.js:912 templates/js/translated/build.js:1820
-#: templates/js/translated/part.js:690
+#: templates/js/translated/bom.js:906 templates/js/translated/build.js:1820
+#: templates/js/translated/part.js:734
msgid "Includes variant stock"
msgstr ""
-#: templates/js/translated/bom.js:914 templates/js/translated/build.js:1822
+#: templates/js/translated/bom.js:908 templates/js/translated/build.js:1822
msgid "Includes substitute stock"
msgstr ""
-#: templates/js/translated/bom.js:928
+#: templates/js/translated/bom.js:922
msgid "Substitutes"
msgstr ""
-#: templates/js/translated/bom.js:943
+#: templates/js/translated/bom.js:937
msgid "Purchase Price Range"
msgstr ""
-#: templates/js/translated/bom.js:950
+#: templates/js/translated/bom.js:944
msgid "Purchase Price Average"
msgstr ""
-#: templates/js/translated/bom.js:999 templates/js/translated/bom.js:1090
+#: templates/js/translated/bom.js:993 templates/js/translated/bom.js:1084
msgid "View BOM"
msgstr ""
-#: templates/js/translated/bom.js:1061
+#: templates/js/translated/bom.js:1055
msgid "Validate BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:1063
+#: templates/js/translated/bom.js:1057
msgid "This line has been validated"
msgstr ""
-#: templates/js/translated/bom.js:1065
+#: templates/js/translated/bom.js:1059
msgid "Edit substitute parts"
msgstr ""
-#: templates/js/translated/bom.js:1067 templates/js/translated/bom.js:1228
+#: templates/js/translated/bom.js:1061 templates/js/translated/bom.js:1222
msgid "Edit BOM Item"
msgstr "Редактировать элемент BOM"
-#: templates/js/translated/bom.js:1069
+#: templates/js/translated/bom.js:1063
msgid "Delete BOM Item"
msgstr "Удалить элемент BOM"
-#: templates/js/translated/bom.js:1164 templates/js/translated/build.js:1615
+#: templates/js/translated/bom.js:1158 templates/js/translated/build.js:1615
msgid "No BOM items found"
msgstr "Элементы BOM не найдены"
-#: templates/js/translated/bom.js:1408 templates/js/translated/build.js:1753
+#: templates/js/translated/bom.js:1402 templates/js/translated/build.js:1753
msgid "Required Part"
msgstr ""
-#: templates/js/translated/bom.js:1430
+#: templates/js/translated/bom.js:1424
msgid "Inherited from parent BOM"
msgstr "Унаследовано от родительского BOM"
@@ -8040,13 +8033,13 @@ msgstr ""
msgid "Complete Build Order"
msgstr ""
-#: templates/js/translated/build.js:259 templates/js/translated/stock.js:91
-#: templates/js/translated/stock.js:181
+#: templates/js/translated/build.js:259 templates/js/translated/stock.js:90
+#: templates/js/translated/stock.js:180
msgid "Next available serial number"
msgstr ""
-#: templates/js/translated/build.js:261 templates/js/translated/stock.js:93
-#: templates/js/translated/stock.js:183
+#: templates/js/translated/build.js:261 templates/js/translated/stock.js:92
+#: templates/js/translated/stock.js:182
msgid "Latest serial number"
msgstr ""
@@ -8259,9 +8252,9 @@ msgstr ""
msgid "No builds matching query"
msgstr ""
-#: templates/js/translated/build.js:2448 templates/js/translated/part.js:1314
-#: templates/js/translated/part.js:1729 templates/js/translated/stock.js:1619
-#: templates/js/translated/stock.js:2277
+#: templates/js/translated/build.js:2448 templates/js/translated/part.js:1358
+#: templates/js/translated/part.js:1825 templates/js/translated/stock.js:1629
+#: templates/js/translated/stock.js:2287
msgid "Select"
msgstr ""
@@ -8273,7 +8266,7 @@ msgstr ""
msgid "Progress"
msgstr ""
-#: templates/js/translated/build.js:2532 templates/js/translated/stock.js:2519
+#: templates/js/translated/build.js:2532 templates/js/translated/stock.js:2529
msgid "No user information"
msgstr ""
@@ -8285,107 +8278,107 @@ msgstr ""
msgid "No parts allocated for"
msgstr ""
-#: templates/js/translated/company.js:66
+#: templates/js/translated/company.js:65
msgid "Add Manufacturer"
msgstr "Добавить производителя"
-#: templates/js/translated/company.js:79 templates/js/translated/company.js:169
+#: templates/js/translated/company.js:78 templates/js/translated/company.js:168
msgid "Add Manufacturer Part"
msgstr "Добавить деталь производителя"
-#: templates/js/translated/company.js:100
+#: templates/js/translated/company.js:99
msgid "Edit Manufacturer Part"
msgstr "Редактировать деталь производителя"
-#: templates/js/translated/company.js:157 templates/js/translated/order.js:506
+#: templates/js/translated/company.js:156 templates/js/translated/order.js:506
msgid "Add Supplier"
msgstr "Добавить поставщика"
-#: templates/js/translated/company.js:185
+#: templates/js/translated/company.js:184
msgid "Add Supplier Part"
msgstr "Добавить деталь поставщика"
-#: templates/js/translated/company.js:200
+#: templates/js/translated/company.js:199
msgid "Edit Supplier Part"
msgstr "Редактировать деталь поставщика"
-#: templates/js/translated/company.js:248
+#: templates/js/translated/company.js:249
msgid "All selected supplier parts will be deleted"
msgstr "Все выбранные детали поставщика будут удалены"
-#: templates/js/translated/company.js:263
+#: templates/js/translated/company.js:264
msgid "Delete Supplier Parts"
msgstr ""
-#: templates/js/translated/company.js:342
+#: templates/js/translated/company.js:336
msgid "Add new Company"
msgstr "Добавить новую компанию"
-#: templates/js/translated/company.js:419
+#: templates/js/translated/company.js:413
msgid "Parts Supplied"
msgstr ""
-#: templates/js/translated/company.js:428
+#: templates/js/translated/company.js:422
msgid "Parts Manufactured"
msgstr ""
-#: templates/js/translated/company.js:443
+#: templates/js/translated/company.js:437
msgid "No company information found"
msgstr "Информация о компании не найдена"
-#: templates/js/translated/company.js:482
+#: templates/js/translated/company.js:478
msgid "All selected manufacturer parts will be deleted"
msgstr ""
-#: templates/js/translated/company.js:496
+#: templates/js/translated/company.js:492
msgid "Delete Manufacturer Parts"
msgstr ""
-#: templates/js/translated/company.js:535
+#: templates/js/translated/company.js:526
msgid "All selected parameters will be deleted"
msgstr ""
-#: templates/js/translated/company.js:548
+#: templates/js/translated/company.js:539
msgid "Delete Parameters"
msgstr "Удалить параметры"
-#: templates/js/translated/company.js:595
+#: templates/js/translated/company.js:580
msgid "No manufacturer parts found"
msgstr "Информация о детали производителя не найдена"
-#: templates/js/translated/company.js:615
-#: templates/js/translated/company.js:874 templates/js/translated/part.js:565
-#: templates/js/translated/part.js:650
+#: templates/js/translated/company.js:600
+#: templates/js/translated/company.js:859 templates/js/translated/part.js:609
+#: templates/js/translated/part.js:694
msgid "Template part"
msgstr "Деталь-шаблон"
-#: templates/js/translated/company.js:619
-#: templates/js/translated/company.js:878 templates/js/translated/part.js:569
-#: templates/js/translated/part.js:654
+#: templates/js/translated/company.js:604
+#: templates/js/translated/company.js:863 templates/js/translated/part.js:613
+#: templates/js/translated/part.js:698
msgid "Assembled part"
msgstr ""
-#: templates/js/translated/company.js:747 templates/js/translated/part.js:757
+#: templates/js/translated/company.js:732 templates/js/translated/part.js:801
msgid "No parameters found"
msgstr "Параметры не найдены"
-#: templates/js/translated/company.js:784 templates/js/translated/part.js:799
+#: templates/js/translated/company.js:769 templates/js/translated/part.js:843
msgid "Edit parameter"
msgstr "Редактировать параметр"
-#: templates/js/translated/company.js:785 templates/js/translated/part.js:800
+#: templates/js/translated/company.js:770 templates/js/translated/part.js:844
msgid "Delete parameter"
msgstr "Удалить параметр"
-#: templates/js/translated/company.js:804 templates/js/translated/part.js:817
+#: templates/js/translated/company.js:789 templates/js/translated/part.js:861
msgid "Edit Parameter"
msgstr "Редактировать параметр"
-#: templates/js/translated/company.js:815 templates/js/translated/part.js:829
+#: templates/js/translated/company.js:800 templates/js/translated/part.js:873
msgid "Delete Parameter"
msgstr "Удалить параметр"
-#: templates/js/translated/company.js:854
+#: templates/js/translated/company.js:839
msgid "No supplier parts found"
msgstr "Информация о детали поставщика не найдена"
@@ -8448,36 +8441,36 @@ msgstr "Операция просмотра не разрешена"
msgid "Keep this form open"
msgstr ""
-#: templates/js/translated/forms.js:756
+#: templates/js/translated/forms.js:757
msgid "Enter a valid number"
msgstr ""
-#: templates/js/translated/forms.js:1248 templates/modals.html:19
+#: templates/js/translated/forms.js:1249 templates/modals.html:19
#: templates/modals.html:43
msgid "Form errors exist"
msgstr "Форма содержит ошибки"
-#: templates/js/translated/forms.js:1681
+#: templates/js/translated/forms.js:1682
msgid "No results found"
msgstr "Не найдено"
-#: templates/js/translated/forms.js:1896 templates/search.html:29
+#: templates/js/translated/forms.js:1897 templates/search.html:29
msgid "Searching"
msgstr ""
-#: templates/js/translated/forms.js:2149
+#: templates/js/translated/forms.js:2150
msgid "Clear input"
msgstr ""
-#: templates/js/translated/forms.js:2615
+#: templates/js/translated/forms.js:2616
msgid "File Column"
msgstr ""
-#: templates/js/translated/forms.js:2615
+#: templates/js/translated/forms.js:2616
msgid "Field Name"
msgstr ""
-#: templates/js/translated/forms.js:2627
+#: templates/js/translated/forms.js:2628
msgid "Select Columns"
msgstr ""
@@ -8498,7 +8491,7 @@ msgid "Labels sent to printer"
msgstr ""
#: templates/js/translated/label.js:60 templates/js/translated/report.js:118
-#: templates/js/translated/stock.js:1023
+#: templates/js/translated/stock.js:1022
msgid "Select Stock Items"
msgstr ""
@@ -8552,12 +8545,12 @@ msgid "Select Label Template"
msgstr ""
#: templates/js/translated/modals.js:82 templates/js/translated/modals.js:142
-#: templates/js/translated/modals.js:621
+#: templates/js/translated/modals.js:627
msgid "Cancel"
msgstr "Отменить"
#: templates/js/translated/modals.js:83 templates/js/translated/modals.js:141
-#: templates/js/translated/modals.js:688 templates/js/translated/modals.js:996
+#: templates/js/translated/modals.js:694 templates/js/translated/modals.js:1002
#: templates/modals.html:28 templates/modals.html:51
msgid "Submit"
msgstr "Подтвердить"
@@ -8566,47 +8559,47 @@ msgstr "Подтвердить"
msgid "Form Title"
msgstr ""
-#: templates/js/translated/modals.js:403
+#: templates/js/translated/modals.js:421
msgid "Waiting for server..."
msgstr ""
-#: templates/js/translated/modals.js:562
+#: templates/js/translated/modals.js:568
msgid "Show Error Information"
msgstr ""
-#: templates/js/translated/modals.js:620
+#: templates/js/translated/modals.js:626
msgid "Accept"
msgstr ""
-#: templates/js/translated/modals.js:677
+#: templates/js/translated/modals.js:683
msgid "Loading Data"
msgstr ""
-#: templates/js/translated/modals.js:948
+#: templates/js/translated/modals.js:954
msgid "Invalid response from server"
msgstr ""
-#: templates/js/translated/modals.js:948
+#: templates/js/translated/modals.js:954
msgid "Form data missing from server response"
msgstr ""
-#: templates/js/translated/modals.js:960
+#: templates/js/translated/modals.js:966
msgid "Error posting form data"
msgstr "Ошибка отправки данных формы"
-#: templates/js/translated/modals.js:1057
+#: templates/js/translated/modals.js:1063
msgid "JSON response missing form data"
msgstr ""
-#: templates/js/translated/modals.js:1072
+#: templates/js/translated/modals.js:1078
msgid "Error 400: Bad Request"
msgstr "Ошибка 400: Некорректный запрос"
-#: templates/js/translated/modals.js:1073
+#: templates/js/translated/modals.js:1079
msgid "Server returned error code 400"
msgstr "Сервер вернул код ошибки 400"
-#: templates/js/translated/modals.js:1096
+#: templates/js/translated/modals.js:1102
msgid "Error requesting form data"
msgstr "Ошибка запроса данных формы"
@@ -8656,11 +8649,11 @@ msgstr ""
msgid "Mark as read"
msgstr ""
-#: templates/js/translated/notification.js:259
+#: templates/js/translated/notification.js:260
msgid "No unread notifications"
msgstr ""
-#: templates/js/translated/notification.js:300 templates/notifications.html:10
+#: templates/js/translated/notification.js:302 templates/notifications.html:10
msgid "Notifications will load here"
msgstr ""
@@ -8804,7 +8797,7 @@ msgstr ""
msgid "Quantity to receive"
msgstr ""
-#: templates/js/translated/order.js:1225 templates/js/translated/stock.js:2080
+#: templates/js/translated/order.js:1225 templates/js/translated/stock.js:2090
msgid "Stock Status"
msgstr ""
@@ -8828,7 +8821,7 @@ msgstr ""
msgid "Receive Purchase Order Items"
msgstr ""
-#: templates/js/translated/order.js:1602 templates/js/translated/part.js:870
+#: templates/js/translated/order.js:1602 templates/js/translated/part.js:914
msgid "No purchase orders found"
msgstr "Заказов на закупку не найдено"
@@ -8863,7 +8856,7 @@ msgstr ""
#: templates/js/translated/order.js:1937 templates/js/translated/order.js:2139
#: templates/js/translated/order.js:3467 templates/js/translated/order.js:3978
-#: templates/js/translated/part.js:1948 templates/js/translated/part.js:2301
+#: templates/js/translated/part.js:2044 templates/js/translated/part.js:2397
msgid "Unit Price"
msgstr ""
@@ -8873,11 +8866,11 @@ msgid "Total Price"
msgstr "Общая стоимость"
#: templates/js/translated/order.js:1993 templates/js/translated/order.js:3525
-#: templates/js/translated/part.js:979
+#: templates/js/translated/part.js:1023
msgid "This line item is overdue"
msgstr ""
-#: templates/js/translated/order.js:2052 templates/js/translated/part.js:1025
+#: templates/js/translated/order.js:2052 templates/js/translated/part.js:1069
msgid "Receive line item"
msgstr ""
@@ -8998,7 +8991,7 @@ msgid "Delete Stock Allocation"
msgstr ""
#: templates/js/translated/order.js:3243 templates/js/translated/order.js:3332
-#: templates/js/translated/stock.js:1535
+#: templates/js/translated/stock.js:1545
msgid "Shipped to customer"
msgstr ""
@@ -9138,165 +9131,209 @@ msgstr ""
msgid "Create Part Variant"
msgstr "Создать разновидность детали"
+#: templates/js/translated/part.js:405
+msgid "Active Part"
+msgstr ""
+
+#: templates/js/translated/part.js:406
+msgid "Part cannot be deleted as it is currently active"
+msgstr ""
+
+#: templates/js/translated/part.js:420
+msgid "Deleting this part cannot be reversed"
+msgstr ""
+
+#: templates/js/translated/part.js:422
+msgid "Any stock items for this part will be deleted"
+msgstr ""
+
#: templates/js/translated/part.js:423
+msgid "This part will be removed from any Bills of Material"
+msgstr ""
+
+#: templates/js/translated/part.js:424
+msgid "All manufacturer and supplier information for this part will be deleted"
+msgstr ""
+
+#: templates/js/translated/part.js:431
+msgid "Delete Part"
+msgstr ""
+
+#: templates/js/translated/part.js:467
msgid "You are subscribed to notifications for this item"
msgstr "Вы подписаны на уведомления для данного элемента"
-#: templates/js/translated/part.js:425
+#: templates/js/translated/part.js:469
msgid "You have subscribed to notifications for this item"
msgstr "Вы подписались на уведомления для данного элемента"
-#: templates/js/translated/part.js:430
+#: templates/js/translated/part.js:474
msgid "Subscribe to notifications for this item"
msgstr "Включить уведомления для данного элемента"
-#: templates/js/translated/part.js:432
+#: templates/js/translated/part.js:476
msgid "You have unsubscribed to notifications for this item"
msgstr "Вы отписались от уведомлений для данного элемента"
-#: templates/js/translated/part.js:449
+#: templates/js/translated/part.js:493
msgid "Validating the BOM will mark each line item as valid"
msgstr ""
-#: templates/js/translated/part.js:459
+#: templates/js/translated/part.js:503
msgid "Validate Bill of Materials"
msgstr ""
-#: templates/js/translated/part.js:462
+#: templates/js/translated/part.js:506
msgid "Validated Bill of Materials"
msgstr ""
-#: templates/js/translated/part.js:487
+#: templates/js/translated/part.js:531
msgid "Copy Bill of Materials"
msgstr ""
-#: templates/js/translated/part.js:513 templates/js/translated/part.js:1397
+#: templates/js/translated/part.js:557 templates/js/translated/part.js:1441
#: templates/js/translated/table_filters.js:452
msgid "Low stock"
msgstr ""
-#: templates/js/translated/part.js:523 templates/js/translated/part.js:1409
+#: templates/js/translated/part.js:567 templates/js/translated/part.js:1453
msgid "No stock available"
msgstr ""
-#: templates/js/translated/part.js:557 templates/js/translated/part.js:642
+#: templates/js/translated/part.js:601 templates/js/translated/part.js:686
msgid "Trackable part"
msgstr "Отслеживаемая деталь"
-#: templates/js/translated/part.js:561 templates/js/translated/part.js:646
+#: templates/js/translated/part.js:605 templates/js/translated/part.js:690
msgid "Virtual part"
msgstr ""
-#: templates/js/translated/part.js:573
+#: templates/js/translated/part.js:617
msgid "Subscribed part"
msgstr ""
-#: templates/js/translated/part.js:577
+#: templates/js/translated/part.js:621
msgid "Salable part"
msgstr ""
-#: templates/js/translated/part.js:705
+#: templates/js/translated/part.js:749
msgid "No variants found"
msgstr "Разновидности не найдены"
-#: templates/js/translated/part.js:1095
+#: templates/js/translated/part.js:1139
msgid "Delete part relationship"
msgstr ""
-#: templates/js/translated/part.js:1119
+#: templates/js/translated/part.js:1163
msgid "Delete Part Relationship"
msgstr ""
-#: templates/js/translated/part.js:1184 templates/js/translated/part.js:1480
+#: templates/js/translated/part.js:1228 templates/js/translated/part.js:1524
msgid "No parts found"
msgstr "Детали не найдены"
-#: templates/js/translated/part.js:1223
+#: templates/js/translated/part.js:1267
msgid "Not available"
msgstr ""
-#: templates/js/translated/part.js:1374
+#: templates/js/translated/part.js:1418
msgid "No category"
msgstr "Нет категории"
-#: templates/js/translated/part.js:1504 templates/js/translated/part.js:1664
-#: templates/js/translated/stock.js:2238
+#: templates/js/translated/part.js:1548 templates/js/translated/part.js:1760
+#: templates/js/translated/stock.js:2248
msgid "Display as list"
msgstr "Список"
-#: templates/js/translated/part.js:1520
+#: templates/js/translated/part.js:1564
msgid "Display as grid"
msgstr "Таблица"
-#: templates/js/translated/part.js:1683 templates/js/translated/stock.js:2257
+#: templates/js/translated/part.js:1630
+msgid "Set the part category for the selected parts"
+msgstr ""
+
+#: templates/js/translated/part.js:1635
+msgid "Set Part Category"
+msgstr "Укажите категорию"
+
+#: templates/js/translated/part.js:1640
+msgid "Select Part Category"
+msgstr ""
+
+#: templates/js/translated/part.js:1653
+msgid "Category is required"
+msgstr ""
+
+#: templates/js/translated/part.js:1779 templates/js/translated/stock.js:2267
msgid "Display as tree"
msgstr "Дерево"
-#: templates/js/translated/part.js:1747
+#: templates/js/translated/part.js:1843
msgid "Subscribed category"
msgstr ""
-#: templates/js/translated/part.js:1761 templates/js/translated/stock.js:2301
+#: templates/js/translated/part.js:1857 templates/js/translated/stock.js:2311
msgid "Path"
msgstr "Путь"
-#: templates/js/translated/part.js:1805
+#: templates/js/translated/part.js:1901
msgid "No test templates matching query"
msgstr ""
-#: templates/js/translated/part.js:1856 templates/js/translated/stock.js:1233
+#: templates/js/translated/part.js:1952 templates/js/translated/stock.js:1243
msgid "Edit test result"
msgstr ""
-#: templates/js/translated/part.js:1857 templates/js/translated/stock.js:1234
-#: templates/js/translated/stock.js:1493
+#: templates/js/translated/part.js:1953 templates/js/translated/stock.js:1244
+#: templates/js/translated/stock.js:1503
msgid "Delete test result"
msgstr ""
-#: templates/js/translated/part.js:1863
+#: templates/js/translated/part.js:1959
msgid "This test is defined for a parent part"
msgstr ""
-#: templates/js/translated/part.js:1885
+#: templates/js/translated/part.js:1981
msgid "Edit Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:1899
+#: templates/js/translated/part.js:1995
msgid "Delete Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:1924
+#: templates/js/translated/part.js:2020
#, python-brace-format
msgid "No ${human_name} information found"
msgstr ""
-#: templates/js/translated/part.js:1981
+#: templates/js/translated/part.js:2077
#, python-brace-format
msgid "Edit ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:1982
+#: templates/js/translated/part.js:2078
#, python-brace-format
msgid "Delete ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:2096
+#: templates/js/translated/part.js:2192
msgid "Current Stock"
msgstr ""
-#: templates/js/translated/part.js:2129
+#: templates/js/translated/part.js:2225
msgid "No scheduling information available for this part"
msgstr ""
-#: templates/js/translated/part.js:2155
+#: templates/js/translated/part.js:2251
msgid "Scheduled Stock Quantities"
msgstr ""
-#: templates/js/translated/part.js:2225
+#: templates/js/translated/part.js:2321
msgid "Single Price"
msgstr ""
-#: templates/js/translated/part.js:2244
+#: templates/js/translated/part.js:2340
msgid "Single Price Difference"
msgstr ""
@@ -9378,360 +9415,360 @@ msgstr ""
msgid "Remove results"
msgstr ""
-#: templates/js/translated/stock.js:73
+#: templates/js/translated/stock.js:72
msgid "Serialize Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:101
+#: templates/js/translated/stock.js:100
msgid "Confirm Stock Serialization"
msgstr ""
-#: templates/js/translated/stock.js:110
+#: templates/js/translated/stock.js:109
msgid "Parent stock location"
msgstr ""
-#: templates/js/translated/stock.js:139
+#: templates/js/translated/stock.js:138
msgid "Edit Stock Location"
msgstr ""
-#: templates/js/translated/stock.js:154
+#: templates/js/translated/stock.js:153
msgid "New Stock Location"
msgstr ""
-#: templates/js/translated/stock.js:194
+#: templates/js/translated/stock.js:193
msgid "This part cannot be serialized"
msgstr ""
-#: templates/js/translated/stock.js:233
+#: templates/js/translated/stock.js:232
msgid "Enter initial quantity for this stock item"
msgstr ""
-#: templates/js/translated/stock.js:239
+#: templates/js/translated/stock.js:238
msgid "Enter serial numbers for new stock (or leave blank)"
msgstr ""
-#: templates/js/translated/stock.js:304
+#: templates/js/translated/stock.js:303
msgid "Stock item duplicated"
msgstr ""
-#: templates/js/translated/stock.js:324
+#: templates/js/translated/stock.js:323
msgid "Duplicate Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:344
+#: templates/js/translated/stock.js:343
msgid "Edit Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:394
+#: templates/js/translated/stock.js:393
msgid "Created new stock item"
msgstr ""
-#: templates/js/translated/stock.js:407
+#: templates/js/translated/stock.js:406
msgid "Created multiple stock items"
msgstr "Создано несколько единиц хранения"
-#: templates/js/translated/stock.js:432
+#: templates/js/translated/stock.js:431
msgid "Find Serial Number"
msgstr ""
-#: templates/js/translated/stock.js:436 templates/js/translated/stock.js:437
+#: templates/js/translated/stock.js:435 templates/js/translated/stock.js:436
msgid "Enter serial number"
msgstr ""
-#: templates/js/translated/stock.js:453
+#: templates/js/translated/stock.js:452
msgid "Enter a serial number"
msgstr ""
-#: templates/js/translated/stock.js:473
+#: templates/js/translated/stock.js:472
msgid "No matching serial number"
msgstr ""
-#: templates/js/translated/stock.js:482
+#: templates/js/translated/stock.js:481
msgid "More than one matching result found"
msgstr ""
-#: templates/js/translated/stock.js:605
+#: templates/js/translated/stock.js:604
msgid "Confirm stock assignment"
msgstr ""
-#: templates/js/translated/stock.js:606
+#: templates/js/translated/stock.js:605
msgid "Assign Stock to Customer"
msgstr ""
-#: templates/js/translated/stock.js:683
+#: templates/js/translated/stock.js:682
msgid "Warning: Merge operation cannot be reversed"
msgstr "Предупреждение: Операция объединения не может быть отменена"
-#: templates/js/translated/stock.js:684
+#: templates/js/translated/stock.js:683
msgid "Some information will be lost when merging stock items"
msgstr "Следующие данные будут потеряны в процессе объединения"
-#: templates/js/translated/stock.js:686
+#: templates/js/translated/stock.js:685
msgid "Stock transaction history will be deleted for merged items"
msgstr "История складских перемещений будет удалена для объединённых элементов"
-#: templates/js/translated/stock.js:687
+#: templates/js/translated/stock.js:686
msgid "Supplier part information will be deleted for merged items"
msgstr "Информация о деталях поставщика будет удалена для объединённых элементов"
-#: templates/js/translated/stock.js:773
+#: templates/js/translated/stock.js:772
msgid "Confirm stock item merge"
msgstr ""
-#: templates/js/translated/stock.js:774
+#: templates/js/translated/stock.js:773
msgid "Merge Stock Items"
msgstr ""
-#: templates/js/translated/stock.js:869
+#: templates/js/translated/stock.js:868
msgid "Transfer Stock"
msgstr ""
-#: templates/js/translated/stock.js:870
+#: templates/js/translated/stock.js:869
msgid "Move"
msgstr ""
-#: templates/js/translated/stock.js:876
+#: templates/js/translated/stock.js:875
msgid "Count Stock"
msgstr ""
-#: templates/js/translated/stock.js:877
+#: templates/js/translated/stock.js:876
msgid "Count"
msgstr ""
-#: templates/js/translated/stock.js:881
+#: templates/js/translated/stock.js:880
msgid "Remove Stock"
msgstr ""
-#: templates/js/translated/stock.js:882
+#: templates/js/translated/stock.js:881
msgid "Take"
msgstr ""
-#: templates/js/translated/stock.js:886
+#: templates/js/translated/stock.js:885
msgid "Add Stock"
msgstr ""
-#: templates/js/translated/stock.js:887 users/models.py:215
+#: templates/js/translated/stock.js:886 users/models.py:215
msgid "Add"
msgstr ""
-#: templates/js/translated/stock.js:891
+#: templates/js/translated/stock.js:890
msgid "Delete Stock"
msgstr ""
-#: templates/js/translated/stock.js:984
+#: templates/js/translated/stock.js:983
msgid "Quantity cannot be adjusted for serialized stock"
msgstr ""
-#: templates/js/translated/stock.js:984
+#: templates/js/translated/stock.js:983
msgid "Specify stock quantity"
msgstr ""
-#: templates/js/translated/stock.js:1024
+#: templates/js/translated/stock.js:1023
msgid "You must select at least one available stock item"
msgstr ""
-#: templates/js/translated/stock.js:1047
+#: templates/js/translated/stock.js:1046
msgid "Confirm stock adjustment"
msgstr ""
-#: templates/js/translated/stock.js:1172
+#: templates/js/translated/stock.js:1182
msgid "PASS"
msgstr ""
-#: templates/js/translated/stock.js:1174
+#: templates/js/translated/stock.js:1184
msgid "FAIL"
msgstr ""
-#: templates/js/translated/stock.js:1179
+#: templates/js/translated/stock.js:1189
msgid "NO RESULT"
msgstr ""
-#: templates/js/translated/stock.js:1226
+#: templates/js/translated/stock.js:1236
msgid "Pass test"
msgstr ""
-#: templates/js/translated/stock.js:1229
+#: templates/js/translated/stock.js:1239
msgid "Add test result"
msgstr ""
-#: templates/js/translated/stock.js:1255
+#: templates/js/translated/stock.js:1265
msgid "No test results found"
msgstr ""
-#: templates/js/translated/stock.js:1311
+#: templates/js/translated/stock.js:1321
msgid "Test Date"
msgstr ""
-#: templates/js/translated/stock.js:1476
+#: templates/js/translated/stock.js:1486
msgid "Edit Test Result"
msgstr ""
-#: templates/js/translated/stock.js:1498
+#: templates/js/translated/stock.js:1508
msgid "Delete Test Result"
msgstr ""
-#: templates/js/translated/stock.js:1527
+#: templates/js/translated/stock.js:1537
msgid "In production"
msgstr ""
-#: templates/js/translated/stock.js:1531
+#: templates/js/translated/stock.js:1541
msgid "Installed in Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:1539
+#: templates/js/translated/stock.js:1549
msgid "Assigned to Sales Order"
msgstr ""
-#: templates/js/translated/stock.js:1545
+#: templates/js/translated/stock.js:1555
msgid "No stock location set"
msgstr ""
-#: templates/js/translated/stock.js:1712
+#: templates/js/translated/stock.js:1722
msgid "Stock item is in production"
msgstr ""
-#: templates/js/translated/stock.js:1717
+#: templates/js/translated/stock.js:1727
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:1720
+#: templates/js/translated/stock.js:1730
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:1723
+#: templates/js/translated/stock.js:1733
msgid "Serialized stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:1725
+#: templates/js/translated/stock.js:1735
msgid "Stock item has been fully allocated"
msgstr ""
-#: templates/js/translated/stock.js:1727
+#: templates/js/translated/stock.js:1737
msgid "Stock item has been partially allocated"
msgstr ""
-#: templates/js/translated/stock.js:1730
+#: templates/js/translated/stock.js:1740
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:1734
+#: templates/js/translated/stock.js:1744
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:1736
+#: templates/js/translated/stock.js:1746
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:1743
+#: templates/js/translated/stock.js:1753
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:1745
+#: templates/js/translated/stock.js:1755
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:1747
+#: templates/js/translated/stock.js:1757
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:1751
+#: templates/js/translated/stock.js:1761
#: templates/js/translated/table_filters.js:188
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:1802
+#: templates/js/translated/stock.js:1812
msgid "Stocktake"
msgstr ""
-#: templates/js/translated/stock.js:1884
+#: templates/js/translated/stock.js:1894
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:1922
+#: templates/js/translated/stock.js:1932
msgid "No stock items matching query"
msgstr ""
-#: templates/js/translated/stock.js:2095
+#: templates/js/translated/stock.js:2105
msgid "Set Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:2109
+#: templates/js/translated/stock.js:2119
msgid "Select Status Code"
msgstr ""
-#: templates/js/translated/stock.js:2110
+#: templates/js/translated/stock.js:2120
msgid "Status code must be selected"
msgstr ""
-#: templates/js/translated/stock.js:2365
+#: templates/js/translated/stock.js:2375
msgid "Details"
msgstr ""
-#: templates/js/translated/stock.js:2381
+#: templates/js/translated/stock.js:2391
msgid "Part information unavailable"
msgstr ""
-#: templates/js/translated/stock.js:2403
+#: templates/js/translated/stock.js:2413
msgid "Location no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2422
+#: templates/js/translated/stock.js:2432
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2441
+#: templates/js/translated/stock.js:2451
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2459
+#: templates/js/translated/stock.js:2469
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2482
+#: templates/js/translated/stock.js:2492
msgid "Added"
msgstr ""
-#: templates/js/translated/stock.js:2490
+#: templates/js/translated/stock.js:2500
msgid "Removed"
msgstr ""
-#: templates/js/translated/stock.js:2566
+#: templates/js/translated/stock.js:2576
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:2617 templates/js/translated/stock.js:2653
+#: templates/js/translated/stock.js:2627 templates/js/translated/stock.js:2663
msgid "Uninstall Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:2666
+#: templates/js/translated/stock.js:2676
msgid "Select stock item to uninstall"
msgstr ""
-#: templates/js/translated/stock.js:2687
+#: templates/js/translated/stock.js:2697
msgid "Install another stock item into this item"
msgstr ""
-#: templates/js/translated/stock.js:2688
+#: templates/js/translated/stock.js:2698
msgid "Stock items can only be installed if they meet the following criteria"
msgstr ""
-#: templates/js/translated/stock.js:2690
+#: templates/js/translated/stock.js:2700
msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:2691
+#: templates/js/translated/stock.js:2701
msgid "The Stock Item is currently available in stock"
msgstr ""
-#: templates/js/translated/stock.js:2692
+#: templates/js/translated/stock.js:2702
msgid "The Stock Item is not already installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:2693
+#: templates/js/translated/stock.js:2703
msgid "The Stock Item is tracked by either a batch code or serial number"
msgstr ""
-#: templates/js/translated/stock.js:2706
+#: templates/js/translated/stock.js:2716
msgid "Select part to install"
msgstr ""
diff --git a/InvenTree/locale/sv/LC_MESSAGES/django.po b/InvenTree/locale/sv/LC_MESSAGES/django.po
index 38d1df2ae3..31497f4913 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: 2022-06-05 14:26+0000\n"
-"PO-Revision-Date: 2022-06-05 14:34\n"
+"POT-Creation-Date: 2022-06-06 22:59+0000\n"
+"PO-Revision-Date: 2022-06-07 14:34\n"
"Last-Translator: \n"
"Language-Team: Swedish\n"
"Language: sv_SE\n"
@@ -17,7 +17,7 @@ msgstr ""
"X-Crowdin-File: /[inventree.InvenTree] l10/InvenTree/locale/en/LC_MESSAGES/django.po\n"
"X-Crowdin-File-ID: 154\n"
-#: InvenTree/api.py:46
+#: InvenTree/api.py:49
msgid "API endpoint not found"
msgstr "API-slutpunkt hittades inte"
@@ -29,275 +29,273 @@ msgstr ""
msgid "Enter date"
msgstr "Ange datum"
-#: InvenTree/forms.py:117 templates/account/email_confirm.html:20
-#: templates/js/translated/forms.js:630
-msgid "Confirm"
-msgstr "Bekräfta"
-
-#: InvenTree/forms.py:134
+#: InvenTree/forms.py:117
msgid "Confirm delete"
msgstr "Bekräfta borttagning"
-#: InvenTree/forms.py:135
+#: InvenTree/forms.py:118
msgid "Confirm item deletion"
msgstr "Bekräfta borttagning av artikel"
-#: InvenTree/forms.py:167
+#: InvenTree/forms.py:150
msgid "Enter password"
msgstr "Ange lösenord"
-#: InvenTree/forms.py:168
+#: InvenTree/forms.py:151
msgid "Enter new password"
msgstr "Ange nytt lösenord"
-#: InvenTree/forms.py:175
+#: InvenTree/forms.py:158
msgid "Confirm password"
msgstr "Bekräfta lösenord"
-#: InvenTree/forms.py:176
+#: InvenTree/forms.py:159
msgid "Confirm new password"
msgstr "Bekräfta nytt lösenord"
-#: InvenTree/forms.py:213
-msgid "Select Category"
-msgstr "Välj Kategori"
-
-#: InvenTree/forms.py:234
+#: InvenTree/forms.py:184
msgid "Email (again)"
msgstr ""
-#: InvenTree/forms.py:238
+#: InvenTree/forms.py:188
msgid "Email address confirmation"
msgstr ""
-#: InvenTree/forms.py:259
+#: InvenTree/forms.py:209
msgid "You must type the same email each time."
msgstr ""
-#: InvenTree/helpers.py:402
+#: InvenTree/helpers.py:404
#, python-brace-format
msgid "Duplicate serial: {sn}"
msgstr ""
-#: InvenTree/helpers.py:409 order/models.py:365 order/models.py:517
+#: InvenTree/helpers.py:411 order/models.py:370 order/models.py:522
msgid "Invalid quantity provided"
msgstr "Ogiltigt antal angivet"
-#: InvenTree/helpers.py:412
+#: InvenTree/helpers.py:414
msgid "Empty serial number string"
msgstr "Tom serienummersträng"
-#: InvenTree/helpers.py:444
+#: InvenTree/helpers.py:446
#, python-brace-format
msgid "Invalid group range: {g}"
msgstr ""
-#: InvenTree/helpers.py:447
+#: InvenTree/helpers.py:449
#, python-brace-format
msgid "Invalid group: {g}"
msgstr "Ogiltig grupp: {g}"
-#: InvenTree/helpers.py:475
+#: InvenTree/helpers.py:477
#, python-brace-format
msgid "Invalid group sequence: {g}"
msgstr ""
-#: InvenTree/helpers.py:483
+#: InvenTree/helpers.py:485
#, python-brace-format
msgid "Invalid/no group {group}"
msgstr ""
-#: InvenTree/helpers.py:489
+#: InvenTree/helpers.py:491
msgid "No serial numbers found"
msgstr "Inga serienummer hittades"
-#: InvenTree/helpers.py:493
+#: InvenTree/helpers.py:495
#, python-brace-format
msgid "Number of unique serial numbers ({s}) must match quantity ({q})"
msgstr ""
-#: InvenTree/models.py:174
+#: InvenTree/models.py:178
msgid "Missing file"
msgstr ""
-#: InvenTree/models.py:175
+#: InvenTree/models.py:179
msgid "Missing external link"
msgstr ""
-#: InvenTree/models.py:187 stock/models.py:2087
-#: templates/js/translated/attachment.js:101
-#: templates/js/translated/attachment.js:198
+#: InvenTree/models.py:191 stock/models.py:2091
+#: templates/js/translated/attachment.js:103
+#: templates/js/translated/attachment.js:194
msgid "Attachment"
msgstr "Bilaga"
-#: InvenTree/models.py:188
+#: InvenTree/models.py:192
msgid "Select file to attach"
msgstr "Välj fil att bifoga"
-#: InvenTree/models.py:194 company/models.py:123 company/models.py:272
-#: company/models.py:506 order/models.py:135 order/models.py:1235
+#: InvenTree/models.py:198 company/models.py:123 company/models.py:272
+#: company/models.py:506 order/models.py:136 order/models.py:1251
#: part/models.py:795
#: report/templates/report/inventree_build_order_base.html:165
-#: templates/js/translated/company.js:655
-#: templates/js/translated/company.js:946 templates/js/translated/order.js:2676
-#: templates/js/translated/part.js:1441
+#: templates/js/translated/company.js:640
+#: templates/js/translated/company.js:931 templates/js/translated/order.js:2676
+#: templates/js/translated/part.js:1485
msgid "Link"
msgstr ""
-#: InvenTree/models.py:195 build/models.py:320 part/models.py:796
+#: InvenTree/models.py:199 build/models.py:320 part/models.py:796
#: stock/models.py:642
msgid "Link to external URL"
msgstr ""
-#: InvenTree/models.py:198 templates/js/translated/attachment.js:102
-#: templates/js/translated/attachment.js:242
+#: InvenTree/models.py:202 templates/js/translated/attachment.js:104
+#: templates/js/translated/attachment.js:238
msgid "Comment"
msgstr "Kommentar"
-#: InvenTree/models.py:198
+#: InvenTree/models.py:202
msgid "File comment"
msgstr "Fil kommentar"
-#: InvenTree/models.py:204 InvenTree/models.py:205 common/models.py:1499
-#: common/models.py:1500 common/models.py:1728 common/models.py:1729
-#: common/models.py:1991 common/models.py:1992 part/models.py:2153
-#: part/models.py:2173 plugin/models.py:238 plugin/models.py:239
+#: InvenTree/models.py:208 InvenTree/models.py:209 common/models.py:1506
+#: common/models.py:1507 common/models.py:1735 common/models.py:1736
+#: common/models.py:1998 common/models.py:1999 part/models.py:2141
+#: part/models.py:2161 plugin/models.py:238 plugin/models.py:239
#: report/templates/report/inventree_test_report_base.html:96
-#: templates/js/translated/stock.js:2513
+#: templates/js/translated/stock.js:2523
msgid "User"
msgstr "Användare"
-#: InvenTree/models.py:208
+#: InvenTree/models.py:212
msgid "upload date"
msgstr "uppladdningsdatum"
-#: InvenTree/models.py:230
+#: InvenTree/models.py:234
msgid "Filename must not be empty"
msgstr "Filnamnet får inte vara tomt"
-#: InvenTree/models.py:253
+#: InvenTree/models.py:257
msgid "Invalid attachment directory"
msgstr "Ogiltig katalog för bilaga"
-#: InvenTree/models.py:263
+#: InvenTree/models.py:267
#, python-brace-format
msgid "Filename contains illegal character '{c}'"
msgstr "Filnamnet innehåller ogiltiga tecken '{c}'"
-#: InvenTree/models.py:266
+#: InvenTree/models.py:270
msgid "Filename missing extension"
msgstr "Filnamn saknar ändelse"
-#: InvenTree/models.py:273
+#: InvenTree/models.py:277
msgid "Attachment with this filename already exists"
msgstr "Det finns redan en bilaga med detta filnamn"
-#: InvenTree/models.py:280
+#: InvenTree/models.py:284
msgid "Error renaming file"
msgstr "Fel vid namnbyte av fil"
-#: InvenTree/models.py:314
+#: InvenTree/models.py:318
msgid "Invalid choice"
msgstr "Ogiltigt val"
-#: InvenTree/models.py:333 InvenTree/models.py:334 common/models.py:1714
+#: InvenTree/models.py:337 InvenTree/models.py:338 common/models.py:1721
#: company/models.py:354 label/models.py:101 part/models.py:739
-#: part/models.py:2331 plugin/models.py:93 report/models.py:151
+#: part/models.py:2319 plugin/models.py:93 report/models.py:151
#: templates/InvenTree/notifications/notifications.html:84
#: templates/InvenTree/settings/mixins/urls.html:13
#: templates/InvenTree/settings/plugin.html:49
#: templates/InvenTree/settings/plugin.html:132
#: templates/InvenTree/settings/plugin_settings.html:23
#: templates/InvenTree/settings/settings.html:346
-#: templates/js/translated/company.js:539
-#: templates/js/translated/company.js:757 templates/js/translated/part.js:615
-#: templates/js/translated/part.js:767 templates/js/translated/part.js:1736
-#: templates/js/translated/stock.js:2283
+#: templates/js/translated/company.js:530
+#: templates/js/translated/company.js:742 templates/js/translated/part.js:659
+#: templates/js/translated/part.js:811 templates/js/translated/part.js:1832
+#: templates/js/translated/stock.js:2293
msgid "Name"
msgstr "Namn"
-#: InvenTree/models.py:340 build/models.py:197
+#: InvenTree/models.py:344 build/models.py:197
#: build/templates/build/detail.html:24 company/models.py:278
#: company/models.py:512 company/templates/company/company_base.html:71
#: company/templates/company/manufacturer_part.html:75
#: company/templates/company/supplier_part.html:73 label/models.py:108
-#: order/models.py:133 part/models.py:762 part/templates/part/category.html:74
-#: part/templates/part/part_base.html:167
-#: part/templates/part/set_category.html:14 report/models.py:164
+#: order/models.py:134 part/models.py:762 part/templates/part/category.html:74
+#: part/templates/part/part_base.html:167 report/models.py:164
#: report/models.py:509 report/models.py:550
#: report/templates/report/inventree_build_order_base.html:118
#: stock/templates/stock/location.html:103
#: templates/InvenTree/settings/plugin_settings.html:33
-#: templates/js/translated/bom.js:553 templates/js/translated/bom.js:851
-#: templates/js/translated/build.js:2476 templates/js/translated/company.js:401
-#: templates/js/translated/company.js:666
-#: templates/js/translated/company.js:957 templates/js/translated/order.js:1656
+#: templates/js/translated/bom.js:553 templates/js/translated/bom.js:845
+#: templates/js/translated/build.js:2476 templates/js/translated/company.js:395
+#: templates/js/translated/company.js:651
+#: templates/js/translated/company.js:942 templates/js/translated/order.js:1656
#: templates/js/translated/order.js:1888 templates/js/translated/order.js:2476
-#: templates/js/translated/part.js:674 templates/js/translated/part.js:1082
-#: templates/js/translated/part.js:1355 templates/js/translated/part.js:1755
-#: templates/js/translated/part.js:1824 templates/js/translated/stock.js:1676
-#: templates/js/translated/stock.js:2295 templates/js/translated/stock.js:2350
+#: templates/js/translated/part.js:718 templates/js/translated/part.js:1126
+#: templates/js/translated/part.js:1399 templates/js/translated/part.js:1851
+#: templates/js/translated/part.js:1920 templates/js/translated/stock.js:1686
+#: templates/js/translated/stock.js:2305 templates/js/translated/stock.js:2360
msgid "Description"
msgstr "Beskrivning"
-#: InvenTree/models.py:341
+#: InvenTree/models.py:345
msgid "Description (optional)"
msgstr "Beskrivning (valfritt)"
-#: InvenTree/models.py:349
+#: InvenTree/models.py:353
msgid "parent"
msgstr "överordnad"
-#: InvenTree/serializers.py:52 part/models.py:2652
+#: InvenTree/models.py:466
+msgid "Server Error"
+msgstr ""
+
+#: InvenTree/models.py:467
+msgid "An error has been logged by the server."
+msgstr ""
+
+#: InvenTree/serializers.py:52 part/models.py:2640
msgid "Must be a valid number"
msgstr "Måste vara ett giltigt nummer"
-#: InvenTree/serializers.py:271
+#: InvenTree/serializers.py:263
msgid "Filename"
msgstr "Filnamn"
-#: InvenTree/serializers.py:306
+#: InvenTree/serializers.py:298
msgid "Invalid value"
msgstr ""
-#: InvenTree/serializers.py:328
+#: InvenTree/serializers.py:320
msgid "Data File"
msgstr ""
-#: InvenTree/serializers.py:329
+#: InvenTree/serializers.py:321
msgid "Select data file for upload"
msgstr ""
-#: InvenTree/serializers.py:350
+#: InvenTree/serializers.py:342
msgid "Unsupported file type"
msgstr ""
-#: InvenTree/serializers.py:356
+#: InvenTree/serializers.py:348
msgid "File is too large"
msgstr ""
-#: InvenTree/serializers.py:377
+#: InvenTree/serializers.py:369
msgid "No columns found in file"
msgstr ""
-#: InvenTree/serializers.py:380
+#: InvenTree/serializers.py:372
msgid "No data rows found in file"
msgstr ""
-#: InvenTree/serializers.py:503
+#: InvenTree/serializers.py:495
msgid "No data rows provided"
msgstr ""
-#: InvenTree/serializers.py:506
+#: InvenTree/serializers.py:498
msgid "No data columns supplied"
msgstr ""
-#: InvenTree/serializers.py:583
+#: InvenTree/serializers.py:575
#, python-brace-format
msgid "Missing required column: '{name}'"
msgstr ""
-#: InvenTree/serializers.py:592
+#: InvenTree/serializers.py:584
#, python-brace-format
msgid "Duplicate column: '{col}'"
msgstr ""
@@ -440,7 +438,7 @@ msgstr "Förlorad"
msgid "Returned"
msgstr "Återlämnad"
-#: InvenTree/status_codes.py:141 order/models.py:1114
+#: InvenTree/status_codes.py:141 order/models.py:1130
#: templates/js/translated/order.js:3264 templates/js/translated/order.js:3607
msgid "Shipped"
msgstr "Skickad"
@@ -525,7 +523,7 @@ msgstr ""
msgid "Split child item"
msgstr ""
-#: InvenTree/status_codes.py:281 templates/js/translated/stock.js:2020
+#: InvenTree/status_codes.py:281 templates/js/translated/stock.js:2030
msgid "Merged stock items"
msgstr ""
@@ -597,27 +595,27 @@ msgstr ""
msgid "Invalid value for overage"
msgstr ""
-#: InvenTree/views.py:522
+#: InvenTree/views.py:521
msgid "Delete Item"
msgstr ""
-#: InvenTree/views.py:571
+#: InvenTree/views.py:570
msgid "Check box to confirm item deletion"
msgstr ""
-#: InvenTree/views.py:586 templates/InvenTree/settings/user.html:22
+#: InvenTree/views.py:585 templates/InvenTree/settings/user.html:22
msgid "Edit User Information"
msgstr ""
-#: InvenTree/views.py:598 templates/InvenTree/settings/user.html:19
+#: InvenTree/views.py:597 templates/InvenTree/settings/user.html:19
msgid "Set Password"
msgstr ""
-#: InvenTree/views.py:618
+#: InvenTree/views.py:617
msgid "Password fields must match"
msgstr ""
-#: InvenTree/views.py:842 templates/navbar.html:152
+#: InvenTree/views.py:807 templates/navbar.html:152
msgid "System Information"
msgstr ""
@@ -628,6 +626,7 @@ msgstr ""
#: build/models.py:131 build/templates/build/build_base.html:9
#: build/templates/build/build_base.html:27
#: report/templates/report/inventree_build_order_base.html:106
+#: templates/email/overdue_build_order.html:15
#: templates/js/translated/build.js:727
msgid "Build Order"
msgstr ""
@@ -646,12 +645,12 @@ msgstr ""
msgid "Build Order Reference"
msgstr ""
-#: build/models.py:189 order/models.py:288 order/models.py:638
-#: order/models.py:916 part/models.py:2570
+#: build/models.py:189 order/models.py:293 order/models.py:654
+#: order/models.py:932 part/models.py:2558
#: part/templates/part/upload_bom.html:54
#: report/templates/report/inventree_po_report.html:91
#: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:688 templates/js/translated/bom.js:858
+#: templates/js/translated/bom.js:690 templates/js/translated/bom.js:852
#: templates/js/translated/build.js:1777 templates/js/translated/order.js:1919
#: templates/js/translated/order.js:2120 templates/js/translated/order.js:3448
#: templates/js/translated/order.js:3959
@@ -673,13 +672,12 @@ msgstr ""
#: build/models.py:215 build/templates/build/build_base.html:77
#: build/templates/build/detail.html:29 company/models.py:647
-#: order/models.py:1012 order/models.py:1103 part/models.py:336
-#: part/models.py:2099 part/models.py:2114 part/models.py:2133
-#: part/models.py:2151 part/models.py:2250 part/models.py:2370
-#: part/models.py:2460 part/models.py:2545 part/models.py:2821
-#: part/serializers.py:793 part/templates/part/part_app_base.html:8
+#: order/models.py:1028 order/models.py:1119 part/models.py:336
+#: part/models.py:2087 part/models.py:2102 part/models.py:2121
+#: part/models.py:2139 part/models.py:2238 part/models.py:2358
+#: part/models.py:2448 part/models.py:2533 part/models.py:2809
+#: part/serializers.py:795 part/templates/part/part_app_base.html:8
#: part/templates/part/part_pricing.html:12
-#: part/templates/part/set_category.html:13
#: part/templates/part/upload_bom.html:52
#: report/templates/report/inventree_build_order_base.html:110
#: report/templates/report/inventree_po_report.html:89
@@ -687,22 +685,23 @@ msgstr ""
#: templates/InvenTree/search.html:80
#: templates/email/build_order_required_stock.html:17
#: templates/email/low_stock_notification.html:16
+#: templates/email/overdue_build_order.html:16
#: templates/js/translated/barcode.js:435 templates/js/translated/bom.js:552
-#: templates/js/translated/bom.js:687 templates/js/translated/bom.js:805
+#: templates/js/translated/bom.js:689 templates/js/translated/bom.js:799
#: templates/js/translated/build.js:1153 templates/js/translated/build.js:1647
#: templates/js/translated/build.js:2083 templates/js/translated/build.js:2481
-#: templates/js/translated/company.js:252
-#: templates/js/translated/company.js:486
-#: templates/js/translated/company.js:607
-#: templates/js/translated/company.js:866 templates/js/translated/order.js:100
+#: templates/js/translated/company.js:253
+#: templates/js/translated/company.js:482
+#: templates/js/translated/company.js:592
+#: templates/js/translated/company.js:851 templates/js/translated/order.js:100
#: templates/js/translated/order.js:883 templates/js/translated/order.js:1315
#: templates/js/translated/order.js:1873 templates/js/translated/order.js:2819
#: templates/js/translated/order.js:3217 templates/js/translated/order.js:3432
-#: templates/js/translated/part.js:1067 templates/js/translated/part.js:1137
-#: templates/js/translated/part.js:1333 templates/js/translated/stock.js:531
-#: templates/js/translated/stock.js:696 templates/js/translated/stock.js:903
-#: templates/js/translated/stock.js:1633 templates/js/translated/stock.js:2376
-#: templates/js/translated/stock.js:2571 templates/js/translated/stock.js:2705
+#: templates/js/translated/part.js:1111 templates/js/translated/part.js:1181
+#: templates/js/translated/part.js:1377 templates/js/translated/stock.js:530
+#: templates/js/translated/stock.js:695 templates/js/translated/stock.js:902
+#: templates/js/translated/stock.js:1643 templates/js/translated/stock.js:2386
+#: templates/js/translated/stock.js:2581 templates/js/translated/stock.js:2715
msgid "Part"
msgstr ""
@@ -768,12 +767,12 @@ msgstr ""
msgid "Batch code for this build output"
msgstr ""
-#: build/models.py:282 order/models.py:137 part/models.py:932
+#: build/models.py:282 order/models.py:138 part/models.py:932
#: part/templates/part/part_base.html:305 templates/js/translated/order.js:2489
msgid "Creation Date"
msgstr ""
-#: build/models.py:286 order/models.py:660
+#: build/models.py:286 order/models.py:676
msgid "Target completion date"
msgstr ""
@@ -781,7 +780,7 @@ msgstr ""
msgid "Target date for build completion. Build will be overdue after this date."
msgstr ""
-#: build/models.py:290 order/models.py:331
+#: build/models.py:290 order/models.py:336
#: templates/js/translated/build.js:2558
msgid "Completion Date"
msgstr ""
@@ -799,7 +798,7 @@ msgid "User who issued this build order"
msgstr ""
#: build/models.py:313 build/templates/build/build_base.html:190
-#: build/templates/build/detail.html:115 order/models.py:151
+#: build/templates/build/detail.html:115 order/models.py:152
#: order/templates/order/order_base.html:176
#: order/templates/order/sales_order_base.html:183 part/models.py:936
#: report/templates/report/inventree_build_order_base.html:159
@@ -822,20 +821,20 @@ msgstr ""
#: build/models.py:324 build/serializers.py:374
#: build/templates/build/sidebar.html:21 company/models.py:134
#: company/models.py:519 company/templates/company/sidebar.html:25
-#: order/models.py:155 order/models.py:918 order/models.py:1213
+#: order/models.py:156 order/models.py:934 order/models.py:1229
#: order/templates/order/po_sidebar.html:11
#: order/templates/order/so_sidebar.html:17 part/models.py:921
#: part/templates/part/part_sidebar.html:59
#: report/templates/report/inventree_build_order_base.html:173
-#: stock/models.py:713 stock/models.py:1985 stock/models.py:2093
+#: stock/models.py:713 stock/models.py:1989 stock/models.py:2097
#: stock/serializers.py:315 stock/serializers.py:444 stock/serializers.py:486
-#: stock/serializers.py:772 stock/serializers.py:871 stock/serializers.py:1003
+#: stock/serializers.py:759 stock/serializers.py:858 stock/serializers.py:990
#: stock/templates/stock/stock_sidebar.html:25
-#: templates/js/translated/barcode.js:100 templates/js/translated/bom.js:1044
-#: templates/js/translated/company.js:962 templates/js/translated/order.js:2040
+#: templates/js/translated/barcode.js:100 templates/js/translated/bom.js:1038
+#: templates/js/translated/company.js:947 templates/js/translated/order.js:2040
#: templates/js/translated/order.js:2191 templates/js/translated/order.js:2687
#: templates/js/translated/order.js:3632 templates/js/translated/order.js:4030
-#: templates/js/translated/stock.js:1307 templates/js/translated/stock.js:1916
+#: templates/js/translated/stock.js:1317 templates/js/translated/stock.js:1926
msgid "Notes"
msgstr ""
@@ -855,44 +854,44 @@ msgstr ""
msgid "Build output does not match Build Order"
msgstr ""
-#: build/models.py:1108
+#: build/models.py:1111
msgid "Build item must specify a build output, as master part is marked as trackable"
msgstr ""
-#: build/models.py:1117
+#: build/models.py:1120
#, python-brace-format
msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})"
msgstr ""
-#: build/models.py:1127
+#: build/models.py:1130
msgid "Stock item is over-allocated"
msgstr ""
-#: build/models.py:1133 order/models.py:1372
+#: build/models.py:1136 order/models.py:1388
msgid "Allocation quantity must be greater than zero"
msgstr ""
-#: build/models.py:1139
+#: build/models.py:1142
msgid "Quantity must be 1 for serialized stock"
msgstr ""
-#: build/models.py:1196
+#: build/models.py:1199
msgid "Selected stock item not found in BOM"
msgstr ""
-#: build/models.py:1265 stock/templates/stock/item_base.html:177
+#: build/models.py:1268 stock/templates/stock/item_base.html:177
#: templates/InvenTree/search.html:137 templates/js/translated/build.js:2454
#: templates/navbar.html:38
msgid "Build"
msgstr ""
-#: build/models.py:1266
+#: build/models.py:1269
msgid "Build to allocate parts"
msgstr ""
-#: build/models.py:1282 build/serializers.py:603 order/serializers.py:994
-#: order/serializers.py:1015 stock/serializers.py:382 stock/serializers.py:703
-#: stock/serializers.py:829 stock/templates/stock/item_base.html:10
+#: build/models.py:1285 build/serializers.py:603 order/serializers.py:996
+#: order/serializers.py:1017 stock/serializers.py:382 stock/serializers.py:690
+#: stock/serializers.py:816 stock/templates/stock/item_base.html:10
#: stock/templates/stock/item_base.html:23
#: stock/templates/stock/item_base.html:199
#: templates/js/translated/build.js:738 templates/js/translated/build.js:743
@@ -900,22 +899,22 @@ msgstr ""
#: templates/js/translated/order.js:101 templates/js/translated/order.js:2820
#: templates/js/translated/order.js:3124 templates/js/translated/order.js:3129
#: templates/js/translated/order.js:3224 templates/js/translated/order.js:3314
-#: templates/js/translated/stock.js:532 templates/js/translated/stock.js:697
-#: templates/js/translated/stock.js:2449
+#: templates/js/translated/stock.js:531 templates/js/translated/stock.js:696
+#: templates/js/translated/stock.js:2459
msgid "Stock Item"
msgstr ""
-#: build/models.py:1283
+#: build/models.py:1286
msgid "Source stock item"
msgstr ""
-#: build/models.py:1295 build/serializers.py:183
+#: build/models.py:1298 build/serializers.py:183
#: build/templates/build/build_base.html:82
-#: build/templates/build/detail.html:34 common/models.py:1536
+#: build/templates/build/detail.html:34 common/models.py:1543
#: company/forms.py:36 company/templates/company/supplier_part.html:258
-#: order/models.py:909 order/models.py:1412 order/serializers.py:1134
-#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:68
-#: part/forms.py:83 part/forms.py:98 part/models.py:2561
+#: order/models.py:925 order/models.py:1428 order/serializers.py:1136
+#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:59
+#: part/forms.py:74 part/forms.py:89 part/models.py:2549
#: part/templates/part/detail.html:935 part/templates/part/detail.html:1021
#: part/templates/part/part_pricing.html:16
#: part/templates/part/upload_bom.html:53
@@ -926,8 +925,8 @@ msgstr ""
#: report/templates/report/inventree_test_report_base.html:139
#: stock/serializers.py:279 stock/templates/stock/item_base.html:292
#: stock/templates/stock/item_base.html:300
-#: templates/js/translated/barcode.js:437 templates/js/translated/bom.js:689
-#: templates/js/translated/bom.js:866 templates/js/translated/build.js:422
+#: templates/js/translated/barcode.js:437 templates/js/translated/bom.js:691
+#: templates/js/translated/bom.js:860 templates/js/translated/build.js:422
#: templates/js/translated/build.js:574 templates/js/translated/build.js:765
#: templates/js/translated/build.js:1175 templates/js/translated/build.js:1673
#: templates/js/translated/build.js:2086
@@ -937,23 +936,23 @@ msgstr ""
#: templates/js/translated/order.js:2821 templates/js/translated/order.js:3143
#: templates/js/translated/order.js:3231 templates/js/translated/order.js:3320
#: templates/js/translated/order.js:3454 templates/js/translated/order.js:3965
-#: templates/js/translated/part.js:967 templates/js/translated/part.js:1969
-#: templates/js/translated/part.js:2200 templates/js/translated/part.js:2234
-#: templates/js/translated/part.js:2312 templates/js/translated/stock.js:403
-#: templates/js/translated/stock.js:557 templates/js/translated/stock.js:727
-#: templates/js/translated/stock.js:2498 templates/js/translated/stock.js:2583
+#: templates/js/translated/part.js:1011 templates/js/translated/part.js:2065
+#: templates/js/translated/part.js:2296 templates/js/translated/part.js:2330
+#: templates/js/translated/part.js:2408 templates/js/translated/stock.js:402
+#: templates/js/translated/stock.js:556 templates/js/translated/stock.js:726
+#: templates/js/translated/stock.js:2508 templates/js/translated/stock.js:2593
msgid "Quantity"
msgstr ""
-#: build/models.py:1296
+#: build/models.py:1299
msgid "Stock quantity to allocate to build"
msgstr ""
-#: build/models.py:1304
+#: build/models.py:1307
msgid "Install into"
msgstr ""
-#: build/models.py:1305
+#: build/models.py:1308
msgid "Destination stock item"
msgstr ""
@@ -982,9 +981,9 @@ msgstr ""
msgid "Enter quantity for build output"
msgstr ""
-#: build/serializers.py:198 build/serializers.py:623 order/models.py:363
-#: order/serializers.py:280 order/serializers.py:435 part/serializers.py:512
-#: part/serializers.py:956 stock/models.py:470 stock/models.py:1239
+#: build/serializers.py:198 build/serializers.py:623 order/models.py:368
+#: order/serializers.py:280 order/serializers.py:435 part/serializers.py:514
+#: part/serializers.py:958 stock/models.py:470 stock/models.py:1239
#: stock/serializers.py:288
msgid "Quantity must be greater than zero"
msgstr ""
@@ -997,9 +996,9 @@ msgstr ""
msgid "Integer quantity required, as the bill of materials contains trackable parts"
msgstr ""
-#: build/serializers.py:222 order/serializers.py:448 order/serializers.py:1138
+#: build/serializers.py:222 order/serializers.py:448 order/serializers.py:1140
#: stock/serializers.py:297 templates/js/translated/order.js:1186
-#: templates/js/translated/stock.js:238 templates/js/translated/stock.js:404
+#: templates/js/translated/stock.js:237 templates/js/translated/stock.js:403
msgid "Serial Numbers"
msgstr ""
@@ -1015,7 +1014,7 @@ msgstr ""
msgid "Automatically allocate required items with matching serial numbers"
msgstr ""
-#: build/serializers.py:268 stock/api.py:552
+#: build/serializers.py:268 stock/api.py:553
msgid "The following serial numbers already exist"
msgstr ""
@@ -1025,16 +1024,16 @@ msgstr ""
#: build/serializers.py:356 order/serializers.py:421 order/serializers.py:525
#: stock/serializers.py:308 stock/serializers.py:439 stock/serializers.py:481
-#: stock/serializers.py:864 stock/serializers.py:1097
+#: stock/serializers.py:851 stock/serializers.py:1084
#: stock/templates/stock/item_base.html:390
#: templates/js/translated/barcode.js:436
#: templates/js/translated/barcode.js:618 templates/js/translated/build.js:750
#: templates/js/translated/build.js:1685 templates/js/translated/order.js:1213
#: templates/js/translated/order.js:3136 templates/js/translated/order.js:3239
#: templates/js/translated/order.js:3247 templates/js/translated/order.js:3328
-#: templates/js/translated/part.js:180 templates/js/translated/stock.js:533
-#: templates/js/translated/stock.js:698 templates/js/translated/stock.js:905
-#: templates/js/translated/stock.js:1787 templates/js/translated/stock.js:2390
+#: templates/js/translated/part.js:180 templates/js/translated/stock.js:532
+#: templates/js/translated/stock.js:697 templates/js/translated/stock.js:904
+#: templates/js/translated/stock.js:1797 templates/js/translated/stock.js:2400
msgid "Location"
msgstr ""
@@ -1043,12 +1042,12 @@ msgid "Location for completed build outputs"
msgstr ""
#: build/serializers.py:363 build/templates/build/build_base.html:142
-#: build/templates/build/detail.html:62 order/models.py:654
+#: build/templates/build/detail.html:62 order/models.py:670
#: order/serializers.py:458 stock/templates/stock/item_base.html:423
#: templates/js/translated/barcode.js:182 templates/js/translated/build.js:2510
#: templates/js/translated/order.js:1320 templates/js/translated/order.js:1660
-#: templates/js/translated/order.js:2481 templates/js/translated/stock.js:1762
-#: templates/js/translated/stock.js:2467 templates/js/translated/stock.js:2599
+#: templates/js/translated/order.js:2481 templates/js/translated/stock.js:1772
+#: templates/js/translated/stock.js:2477 templates/js/translated/stock.js:2609
msgid "Status"
msgstr ""
@@ -1108,8 +1107,8 @@ msgstr ""
msgid "No build outputs have been created for this build order"
msgstr ""
-#: build/serializers.py:535 build/serializers.py:580 part/models.py:2679
-#: part/models.py:2813
+#: build/serializers.py:535 build/serializers.py:580 part/models.py:2667
+#: part/models.py:2801
msgid "BOM Item"
msgstr ""
@@ -1125,11 +1124,11 @@ msgstr ""
msgid "bom_item.part must point to the same part as the build order"
msgstr ""
-#: build/serializers.py:609 stock/serializers.py:716
+#: build/serializers.py:609 stock/serializers.py:703
msgid "Item must be in stock"
msgstr ""
-#: build/serializers.py:667 order/serializers.py:1052
+#: build/serializers.py:667 order/serializers.py:1054
#, python-brace-format
msgid "Available quantity ({q}) exceeded"
msgstr ""
@@ -1146,7 +1145,7 @@ msgstr ""
msgid "This stock item has already been allocated to this build output"
msgstr ""
-#: build/serializers.py:708 order/serializers.py:1298
+#: build/serializers.py:708 order/serializers.py:1300
msgid "Allocation items must be provided"
msgstr ""
@@ -1178,10 +1177,19 @@ msgstr ""
msgid "Allow allocation of substitute parts"
msgstr ""
-#: build/tasks.py:96
+#: build/tasks.py:100
msgid "Stock required for build order"
msgstr ""
+#: build/tasks.py:118
+msgid "Overdue Build Order"
+msgstr ""
+
+#: build/tasks.py:123
+#, python-brace-format
+msgid "Build order {bo} is now overdue"
+msgstr ""
+
#: build/templates/build/build_base.html:39
#: order/templates/order/order_base.html:28
#: order/templates/order/sales_order_base.html:38
@@ -1244,13 +1252,13 @@ msgid "Stock has not been fully allocated to this Build Order"
msgstr ""
#: build/templates/build/build_base.html:151
-#: build/templates/build/detail.html:131 order/models.py:922
+#: build/templates/build/detail.html:131 order/models.py:938
#: order/templates/order/order_base.html:162
#: order/templates/order/sales_order_base.html:164
#: report/templates/report/inventree_build_order_base.html:126
#: templates/js/translated/build.js:2550 templates/js/translated/order.js:1677
#: templates/js/translated/order.js:1987 templates/js/translated/order.js:2497
-#: templates/js/translated/order.js:3517 templates/js/translated/part.js:971
+#: templates/js/translated/order.js:3517 templates/js/translated/part.js:1015
msgid "Target Date"
msgstr ""
@@ -1277,13 +1285,14 @@ msgid "Completed"
msgstr ""
#: build/templates/build/build_base.html:176
-#: build/templates/build/detail.html:94 order/models.py:1100
-#: order/models.py:1185 order/models.py:1320
+#: build/templates/build/detail.html:94 order/models.py:1116
+#: order/models.py:1201 order/models.py:1336
#: order/templates/order/sales_order_base.html:9
#: order/templates/order/sales_order_base.html:28
#: report/templates/report/inventree_build_order_base.html:136
#: report/templates/report/inventree_so_report.html:77
#: stock/templates/stock/item_base.html:370
+#: templates/email/overdue_sales_order.html:15
#: templates/js/translated/order.js:2436
msgid "Sales Order"
msgstr ""
@@ -1319,7 +1328,7 @@ msgstr ""
msgid "Stock can be taken from any available location."
msgstr ""
-#: build/templates/build/detail.html:49 order/models.py:1034
+#: build/templates/build/detail.html:49 order/models.py:1050
#: templates/js/translated/order.js:1321 templates/js/translated/order.js:2029
msgid "Destination"
msgstr ""
@@ -1336,8 +1345,8 @@ msgstr ""
#: stock/templates/stock/item_base.html:170
#: templates/js/translated/build.js:1179
#: templates/js/translated/model_renderers.js:112
-#: templates/js/translated/stock.js:971 templates/js/translated/stock.js:1776
-#: templates/js/translated/stock.js:2606
+#: templates/js/translated/stock.js:970 templates/js/translated/stock.js:1786
+#: templates/js/translated/stock.js:2616
#: templates/js/translated/table_filters.js:151
#: templates/js/translated/table_filters.js:242
msgid "Batch"
@@ -1716,7 +1725,7 @@ msgstr ""
msgid "Copy category parameter templates when creating a part"
msgstr ""
-#: common/models.py:820 part/models.py:2372 report/models.py:157
+#: common/models.py:820 part/models.py:2360 report/models.py:157
#: templates/js/translated/table_filters.js:38
#: templates/js/translated/table_filters.js:444
msgid "Template"
@@ -1726,7 +1735,7 @@ msgstr ""
msgid "Parts are templates by default"
msgstr ""
-#: common/models.py:827 part/models.py:884 templates/js/translated/bom.js:1390
+#: common/models.py:827 part/models.py:884 templates/js/translated/bom.js:1384
#: templates/js/translated/table_filters.js:168
#: templates/js/translated/table_filters.js:460
msgid "Assembly"
@@ -1880,7 +1889,7 @@ msgid "Default page size for PDF reports"
msgstr ""
#: common/models.py:968
-msgid "Test Reports"
+msgid "Enable Test Reports"
msgstr ""
#: common/models.py:969
@@ -1888,568 +1897,576 @@ msgid "Enable generation of test reports"
msgstr ""
#: common/models.py:975
-msgid "Batch Code Template"
+msgid "Attach Test Reports"
msgstr ""
#: common/models.py:976
-msgid "Template for generating default batch codes for stock items"
-msgstr ""
-
-#: common/models.py:981
-msgid "Stock Expiry"
+msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item"
msgstr ""
#: common/models.py:982
-msgid "Enable stock expiry functionality"
+msgid "Batch Code Template"
+msgstr ""
+
+#: common/models.py:983
+msgid "Template for generating default batch codes for stock items"
msgstr ""
#: common/models.py:988
-msgid "Sell Expired Stock"
+msgid "Stock Expiry"
msgstr ""
#: common/models.py:989
-msgid "Allow sale of expired stock"
+msgid "Enable stock expiry functionality"
msgstr ""
#: common/models.py:995
-msgid "Stock Stale Time"
+msgid "Sell Expired Stock"
msgstr ""
#: common/models.py:996
-msgid "Number of days stock items are considered stale before expiring"
+msgid "Allow sale of expired stock"
msgstr ""
-#: common/models.py:998
-msgid "days"
+#: common/models.py:1002
+msgid "Stock Stale Time"
msgstr ""
#: common/models.py:1003
-msgid "Build Expired Stock"
+msgid "Number of days stock items are considered stale before expiring"
msgstr ""
-#: common/models.py:1004
-msgid "Allow building with expired stock"
+#: common/models.py:1005
+msgid "days"
msgstr ""
#: common/models.py:1010
-msgid "Stock Ownership Control"
+msgid "Build Expired Stock"
msgstr ""
#: common/models.py:1011
-msgid "Enable ownership control over stock locations and items"
+msgid "Allow building with expired stock"
msgstr ""
#: common/models.py:1017
-msgid "Build Order Reference Prefix"
+msgid "Stock Ownership Control"
msgstr ""
#: common/models.py:1018
-msgid "Prefix value for build order reference"
-msgstr ""
-
-#: common/models.py:1023
-msgid "Build Order Reference Regex"
+msgid "Enable ownership control over stock locations and items"
msgstr ""
#: common/models.py:1024
+msgid "Build Order Reference Prefix"
+msgstr ""
+
+#: common/models.py:1025
+msgid "Prefix value for build order reference"
+msgstr ""
+
+#: common/models.py:1030
+msgid "Build Order Reference Regex"
+msgstr ""
+
+#: common/models.py:1031
msgid "Regular expression pattern for matching build order reference"
msgstr ""
-#: common/models.py:1028
+#: common/models.py:1035
msgid "Sales Order Reference Prefix"
msgstr ""
-#: common/models.py:1029
+#: common/models.py:1036
msgid "Prefix value for sales order reference"
msgstr ""
-#: common/models.py:1034
+#: common/models.py:1041
msgid "Sales Order Default Shipment"
msgstr ""
-#: common/models.py:1035
+#: common/models.py:1042
msgid "Enable creation of default shipment with sales orders"
msgstr ""
-#: common/models.py:1041
+#: common/models.py:1048
msgid "Purchase Order Reference Prefix"
msgstr ""
-#: common/models.py:1042
+#: common/models.py:1049
msgid "Prefix value for purchase order reference"
msgstr ""
-#: common/models.py:1048
+#: common/models.py:1055
msgid "Enable password forgot"
msgstr ""
-#: common/models.py:1049
+#: common/models.py:1056
msgid "Enable password forgot function on the login pages"
msgstr ""
-#: common/models.py:1055
+#: common/models.py:1062
msgid "Enable registration"
msgstr ""
-#: common/models.py:1056
+#: common/models.py:1063
msgid "Enable self-registration for users on the login pages"
msgstr ""
-#: common/models.py:1062
+#: common/models.py:1069
msgid "Enable SSO"
msgstr ""
-#: common/models.py:1063
+#: common/models.py:1070
msgid "Enable SSO on the login pages"
msgstr ""
-#: common/models.py:1069
+#: common/models.py:1076
msgid "Email required"
msgstr ""
-#: common/models.py:1070
+#: common/models.py:1077
msgid "Require user to supply mail on signup"
msgstr ""
-#: common/models.py:1076
+#: common/models.py:1083
msgid "Auto-fill SSO users"
msgstr ""
-#: common/models.py:1077
+#: common/models.py:1084
msgid "Automatically fill out user-details from SSO account-data"
msgstr ""
-#: common/models.py:1083
+#: common/models.py:1090
msgid "Mail twice"
msgstr ""
-#: common/models.py:1084
+#: common/models.py:1091
msgid "On signup ask users twice for their mail"
msgstr ""
-#: common/models.py:1090
+#: common/models.py:1097
msgid "Password twice"
msgstr ""
-#: common/models.py:1091
+#: common/models.py:1098
msgid "On signup ask users twice for their password"
msgstr ""
-#: common/models.py:1097
+#: common/models.py:1104
msgid "Group on signup"
msgstr ""
-#: common/models.py:1098
+#: common/models.py:1105
msgid "Group to which new users are assigned on registration"
msgstr ""
-#: common/models.py:1104
+#: common/models.py:1111
msgid "Enforce MFA"
msgstr ""
-#: common/models.py:1105
+#: common/models.py:1112
msgid "Users must use multifactor security."
msgstr ""
-#: common/models.py:1111
+#: common/models.py:1118
msgid "Check plugins on startup"
msgstr ""
-#: common/models.py:1112
+#: common/models.py:1119
msgid "Check that all plugins are installed on startup - enable in container enviroments"
msgstr ""
-#: common/models.py:1120
+#: common/models.py:1127
msgid "Enable URL integration"
msgstr ""
-#: common/models.py:1121
+#: common/models.py:1128
msgid "Enable plugins to add URL routes"
msgstr ""
-#: common/models.py:1128
+#: common/models.py:1135
msgid "Enable navigation integration"
msgstr ""
-#: common/models.py:1129
+#: common/models.py:1136
msgid "Enable plugins to integrate into navigation"
msgstr ""
-#: common/models.py:1136
+#: common/models.py:1143
msgid "Enable app integration"
msgstr ""
-#: common/models.py:1137
+#: common/models.py:1144
msgid "Enable plugins to add apps"
msgstr ""
-#: common/models.py:1144
+#: common/models.py:1151
msgid "Enable schedule integration"
msgstr ""
-#: common/models.py:1145
+#: common/models.py:1152
msgid "Enable plugins to run scheduled tasks"
msgstr ""
-#: common/models.py:1152
+#: common/models.py:1159
msgid "Enable event integration"
msgstr ""
-#: common/models.py:1153
+#: common/models.py:1160
msgid "Enable plugins to respond to internal events"
msgstr ""
-#: common/models.py:1170 common/models.py:1492
+#: common/models.py:1177 common/models.py:1499
msgid "Settings key (must be unique - case insensitive"
msgstr ""
-#: common/models.py:1192
+#: common/models.py:1199
msgid "Show subscribed parts"
msgstr ""
-#: common/models.py:1193
+#: common/models.py:1200
msgid "Show subscribed parts on the homepage"
msgstr ""
-#: common/models.py:1199
+#: common/models.py:1206
msgid "Show subscribed categories"
msgstr ""
-#: common/models.py:1200
+#: common/models.py:1207
msgid "Show subscribed part categories on the homepage"
msgstr ""
-#: common/models.py:1206
+#: common/models.py:1213
msgid "Show latest parts"
msgstr ""
-#: common/models.py:1207
+#: common/models.py:1214
msgid "Show latest parts on the homepage"
msgstr ""
-#: common/models.py:1213
+#: common/models.py:1220
msgid "Recent Part Count"
msgstr ""
-#: common/models.py:1214
+#: common/models.py:1221
msgid "Number of recent parts to display on index page"
msgstr ""
-#: common/models.py:1220
+#: common/models.py:1227
msgid "Show unvalidated BOMs"
msgstr ""
-#: common/models.py:1221
+#: common/models.py:1228
msgid "Show BOMs that await validation on the homepage"
msgstr ""
-#: common/models.py:1227
+#: common/models.py:1234
msgid "Show recent stock changes"
msgstr ""
-#: common/models.py:1228
+#: common/models.py:1235
msgid "Show recently changed stock items on the homepage"
msgstr ""
-#: common/models.py:1234
+#: common/models.py:1241
msgid "Recent Stock Count"
msgstr ""
-#: common/models.py:1235
+#: common/models.py:1242
msgid "Number of recent stock items to display on index page"
msgstr ""
-#: common/models.py:1241
+#: common/models.py:1248
msgid "Show low stock"
msgstr ""
-#: common/models.py:1242
+#: common/models.py:1249
msgid "Show low stock items on the homepage"
msgstr ""
-#: common/models.py:1248
+#: common/models.py:1255
msgid "Show depleted stock"
msgstr ""
-#: common/models.py:1249
+#: common/models.py:1256
msgid "Show depleted stock items on the homepage"
msgstr ""
-#: common/models.py:1255
+#: common/models.py:1262
msgid "Show needed stock"
msgstr ""
-#: common/models.py:1256
+#: common/models.py:1263
msgid "Show stock items needed for builds on the homepage"
msgstr ""
-#: common/models.py:1262
+#: common/models.py:1269
msgid "Show expired stock"
msgstr ""
-#: common/models.py:1263
+#: common/models.py:1270
msgid "Show expired stock items on the homepage"
msgstr ""
-#: common/models.py:1269
+#: common/models.py:1276
msgid "Show stale stock"
msgstr ""
-#: common/models.py:1270
+#: common/models.py:1277
msgid "Show stale stock items on the homepage"
msgstr ""
-#: common/models.py:1276
+#: common/models.py:1283
msgid "Show pending builds"
msgstr ""
-#: common/models.py:1277
+#: common/models.py:1284
msgid "Show pending builds on the homepage"
msgstr ""
-#: common/models.py:1283
+#: common/models.py:1290
msgid "Show overdue builds"
msgstr ""
-#: common/models.py:1284
+#: common/models.py:1291
msgid "Show overdue builds on the homepage"
msgstr ""
-#: common/models.py:1290
+#: common/models.py:1297
msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:1291
+#: common/models.py:1298
msgid "Show outstanding POs on the homepage"
msgstr ""
-#: common/models.py:1297
+#: common/models.py:1304
msgid "Show overdue POs"
msgstr ""
-#: common/models.py:1298
+#: common/models.py:1305
msgid "Show overdue POs on the homepage"
msgstr ""
-#: common/models.py:1304
+#: common/models.py:1311
msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:1305
+#: common/models.py:1312
msgid "Show outstanding SOs on the homepage"
msgstr ""
-#: common/models.py:1311
+#: common/models.py:1318
msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:1312
+#: common/models.py:1319
msgid "Show overdue SOs on the homepage"
msgstr ""
-#: common/models.py:1317
+#: common/models.py:1324
msgid "Enable label printing"
msgstr ""
-#: common/models.py:1318
+#: common/models.py:1325
msgid "Enable label printing from the web interface"
msgstr ""
-#: common/models.py:1324
+#: common/models.py:1331
msgid "Inline label display"
msgstr ""
-#: common/models.py:1325
+#: common/models.py:1332
msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:1331
+#: common/models.py:1338
msgid "Inline report display"
msgstr ""
-#: common/models.py:1332
+#: common/models.py:1339
msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:1338
+#: common/models.py:1345
msgid "Search Parts"
msgstr ""
-#: common/models.py:1339
+#: common/models.py:1346
msgid "Display parts in search preview window"
msgstr ""
-#: common/models.py:1345
+#: common/models.py:1352
msgid "Seach Supplier Parts"
msgstr ""
-#: common/models.py:1346
+#: common/models.py:1353
msgid "Display supplier parts in search preview window"
msgstr ""
-#: common/models.py:1352
+#: common/models.py:1359
msgid "Search Manufacturer Parts"
msgstr ""
-#: common/models.py:1353
+#: common/models.py:1360
msgid "Display manufacturer parts in search preview window"
msgstr ""
-#: common/models.py:1359
+#: common/models.py:1366
msgid "Hide Inactive Parts"
msgstr ""
-#: common/models.py:1360
+#: common/models.py:1367
msgid "Excluded inactive parts from search preview window"
msgstr ""
-#: common/models.py:1366
+#: common/models.py:1373
msgid "Search Categories"
msgstr ""
-#: common/models.py:1367
+#: common/models.py:1374
msgid "Display part categories in search preview window"
msgstr ""
-#: common/models.py:1373
+#: common/models.py:1380
msgid "Search Stock"
msgstr ""
-#: common/models.py:1374
+#: common/models.py:1381
msgid "Display stock items in search preview window"
msgstr ""
-#: common/models.py:1380
+#: common/models.py:1387
msgid "Hide Unavailable Stock Items"
msgstr ""
-#: common/models.py:1381
+#: common/models.py:1388
msgid "Exclude stock items which are not available from the search preview window"
msgstr ""
-#: common/models.py:1387
+#: common/models.py:1394
msgid "Search Locations"
msgstr ""
-#: common/models.py:1388
+#: common/models.py:1395
msgid "Display stock locations in search preview window"
msgstr ""
-#: common/models.py:1394
+#: common/models.py:1401
msgid "Search Companies"
msgstr ""
-#: common/models.py:1395
+#: common/models.py:1402
msgid "Display companies in search preview window"
msgstr ""
-#: common/models.py:1401
+#: common/models.py:1408
msgid "Search Purchase Orders"
msgstr ""
-#: common/models.py:1402
+#: common/models.py:1409
msgid "Display purchase orders in search preview window"
msgstr ""
-#: common/models.py:1408
+#: common/models.py:1415
msgid "Exclude Inactive Purchase Orders"
msgstr ""
-#: common/models.py:1409
+#: common/models.py:1416
msgid "Exclude inactive purchase orders from search preview window"
msgstr ""
-#: common/models.py:1415
+#: common/models.py:1422
msgid "Search Sales Orders"
msgstr ""
-#: common/models.py:1416
+#: common/models.py:1423
msgid "Display sales orders in search preview window"
msgstr ""
-#: common/models.py:1422
+#: common/models.py:1429
msgid "Exclude Inactive Sales Orders"
msgstr ""
-#: common/models.py:1423
+#: common/models.py:1430
msgid "Exclude inactive sales orders from search preview window"
msgstr ""
-#: common/models.py:1429
+#: common/models.py:1436
msgid "Search Preview Results"
msgstr ""
-#: common/models.py:1430
+#: common/models.py:1437
msgid "Number of results to show in each section of the search preview window"
msgstr ""
-#: common/models.py:1436
+#: common/models.py:1443
msgid "Show Quantity in Forms"
msgstr ""
-#: common/models.py:1437
+#: common/models.py:1444
msgid "Display available part quantity in some forms"
msgstr ""
-#: common/models.py:1443
+#: common/models.py:1450
msgid "Escape Key Closes Forms"
msgstr ""
-#: common/models.py:1444
+#: common/models.py:1451
msgid "Use the escape key to close modal forms"
msgstr ""
-#: common/models.py:1450
+#: common/models.py:1457
msgid "Fixed Navbar"
msgstr ""
-#: common/models.py:1451
+#: common/models.py:1458
msgid "The navbar position is fixed to the top of the screen"
msgstr ""
-#: common/models.py:1457
+#: common/models.py:1464
msgid "Date Format"
msgstr ""
-#: common/models.py:1458
+#: common/models.py:1465
msgid "Preferred format for displaying dates"
msgstr ""
-#: common/models.py:1472 part/templates/part/detail.html:39
+#: common/models.py:1479 part/templates/part/detail.html:39
msgid "Part Scheduling"
msgstr ""
-#: common/models.py:1473
+#: common/models.py:1480
msgid "Display part scheduling information"
msgstr ""
-#: common/models.py:1537 company/forms.py:37
+#: common/models.py:1544 company/forms.py:37
msgid "Price break quantity"
msgstr ""
-#: common/models.py:1544 company/serializers.py:288
-#: company/templates/company/supplier_part.html:263 order/models.py:949
-#: templates/js/translated/part.js:998 templates/js/translated/part.js:1974
+#: common/models.py:1551 company/serializers.py:290
+#: company/templates/company/supplier_part.html:263 order/models.py:965
+#: templates/js/translated/part.js:1042 templates/js/translated/part.js:2070
msgid "Price"
msgstr ""
-#: common/models.py:1545
+#: common/models.py:1552
msgid "Unit price at specified quantity"
msgstr ""
-#: common/models.py:1705 common/models.py:1883
+#: common/models.py:1712 common/models.py:1890
msgid "Endpoint"
msgstr ""
-#: common/models.py:1706
+#: common/models.py:1713
msgid "Endpoint at which this webhook is received"
msgstr ""
-#: common/models.py:1715
+#: common/models.py:1722
msgid "Name for this webhook"
msgstr ""
-#: common/models.py:1720 part/models.py:911 plugin/models.py:99
+#: common/models.py:1727 part/models.py:911 plugin/models.py:99
#: templates/js/translated/table_filters.js:34
#: templates/js/translated/table_filters.js:96
#: templates/js/translated/table_filters.js:308
@@ -2457,79 +2474,89 @@ msgstr ""
msgid "Active"
msgstr ""
-#: common/models.py:1721
+#: common/models.py:1728
msgid "Is this webhook active"
msgstr ""
-#: common/models.py:1735
+#: common/models.py:1742
msgid "Token"
msgstr ""
-#: common/models.py:1736
+#: common/models.py:1743
msgid "Token for access"
msgstr ""
-#: common/models.py:1743
+#: common/models.py:1750
msgid "Secret"
msgstr ""
-#: common/models.py:1744
+#: common/models.py:1751
msgid "Shared secret for HMAC"
msgstr ""
-#: common/models.py:1850
+#: common/models.py:1857
msgid "Message ID"
msgstr ""
-#: common/models.py:1851
+#: common/models.py:1858
msgid "Unique identifier for this message"
msgstr ""
-#: common/models.py:1859
+#: common/models.py:1866
msgid "Host"
msgstr ""
-#: common/models.py:1860
+#: common/models.py:1867
msgid "Host from which this message was received"
msgstr ""
-#: common/models.py:1867
+#: common/models.py:1874
msgid "Header"
msgstr ""
-#: common/models.py:1868
+#: common/models.py:1875
msgid "Header of this message"
msgstr ""
-#: common/models.py:1874
+#: common/models.py:1881
msgid "Body"
msgstr ""
-#: common/models.py:1875
+#: common/models.py:1882
msgid "Body of this message"
msgstr ""
-#: common/models.py:1884
+#: common/models.py:1891
msgid "Endpoint on which this message was received"
msgstr ""
-#: common/models.py:1889
+#: common/models.py:1896
msgid "Worked on"
msgstr ""
-#: common/models.py:1890
+#: common/models.py:1897
msgid "Was the work on this message finished?"
msgstr ""
+#: common/notifications.py:292
+#, python-brace-format
+msgid "New {verbose_name}"
+msgstr ""
+
+#: common/notifications.py:294
+#, python-brace-format
+msgid "A new {verbose_name} has been created and ,assigned to you"
+msgstr ""
+
#: common/views.py:87 order/templates/order/purchase_order_detail.html:23
-#: order/views.py:102 part/views.py:191
+#: order/views.py:102 part/views.py:116
#: templates/patterns/wizard/upload.html:37
msgid "Upload File"
msgstr ""
#: common/views.py:88 order/views.py:103
#: part/templates/part/import_wizard/ajax_match_fields.html:45
-#: part/views.py:192 templates/patterns/wizard/match_fields.html:51
+#: part/views.py:117 templates/patterns/wizard/match_fields.html:51
msgid "Match Fields"
msgstr ""
@@ -2545,19 +2572,19 @@ msgstr ""
msgid "Parts imported"
msgstr ""
-#: common/views.py:507 order/templates/order/order_wizard/match_parts.html:19
+#: common/views.py:511 order/templates/order/order_wizard/match_parts.html:19
#: part/templates/part/import_wizard/match_references.html:19
#: templates/patterns/wizard/match_fields.html:26
#: templates/patterns/wizard/upload.html:35
msgid "Previous Step"
msgstr ""
-#: company/forms.py:16 part/forms.py:21
+#: company/forms.py:16 part/forms.py:18
#: templates/InvenTree/settings/mixins/urls.html:14
msgid "URL"
msgstr ""
-#: company/forms.py:17 part/forms.py:22
+#: company/forms.py:17 part/forms.py:19
msgid "Image URL"
msgstr ""
@@ -2571,7 +2598,7 @@ msgstr ""
#: company/models.py:104 company/templates/company/company_base.html:100
#: templates/InvenTree/settings/plugin_settings.html:55
-#: templates/js/translated/company.js:405
+#: templates/js/translated/company.js:399
msgid "Website"
msgstr ""
@@ -2644,9 +2671,9 @@ msgstr ""
msgid "Does this company manufacture parts?"
msgstr ""
-#: company/models.py:144 company/serializers.py:294
-#: company/templates/company/company_base.html:106 part/serializers.py:137
-#: part/serializers.py:168 stock/serializers.py:162
+#: company/models.py:144 company/serializers.py:296
+#: company/templates/company/company_base.html:106 part/serializers.py:139
+#: part/serializers.py:170 stock/serializers.py:162
msgid "Currency"
msgstr ""
@@ -2667,10 +2694,10 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:90
#: company/templates/company/supplier_part.html:103
#: stock/templates/stock/item_base.html:212
-#: templates/js/translated/company.js:389
-#: templates/js/translated/company.js:488
-#: templates/js/translated/company.js:632
-#: templates/js/translated/company.js:917 templates/js/translated/part.js:235
+#: templates/js/translated/company.js:383
+#: templates/js/translated/company.js:484
+#: templates/js/translated/company.js:617
+#: templates/js/translated/company.js:902 templates/js/translated/part.js:235
#: templates/js/translated/table_filters.js:411
msgid "Manufacturer"
msgstr ""
@@ -2681,11 +2708,11 @@ msgstr ""
#: company/models.py:266 company/templates/company/manufacturer_part.html:101
#: company/templates/company/supplier_part.html:111
-#: templates/js/translated/company.js:255
-#: templates/js/translated/company.js:487
-#: templates/js/translated/company.js:648
-#: templates/js/translated/company.js:935 templates/js/translated/order.js:1907
-#: templates/js/translated/part.js:246 templates/js/translated/part.js:956
+#: templates/js/translated/company.js:256
+#: templates/js/translated/company.js:483
+#: templates/js/translated/company.js:633
+#: templates/js/translated/company.js:920 templates/js/translated/order.js:1907
+#: templates/js/translated/part.js:246 templates/js/translated/part.js:1000
msgid "MPN"
msgstr ""
@@ -2714,9 +2741,9 @@ msgstr ""
#: company/models.py:361
#: report/templates/report/inventree_test_report_base.html:95
-#: stock/models.py:2080 templates/js/translated/company.js:540
-#: templates/js/translated/company.js:763 templates/js/translated/part.js:776
-#: templates/js/translated/stock.js:1294
+#: stock/models.py:2084 templates/js/translated/company.js:531
+#: templates/js/translated/company.js:748 templates/js/translated/part.js:820
+#: templates/js/translated/stock.js:1304
msgid "Value"
msgstr ""
@@ -2724,10 +2751,10 @@ msgstr ""
msgid "Parameter value"
msgstr ""
-#: company/models.py:368 part/models.py:878 part/models.py:2339
+#: company/models.py:368 part/models.py:878 part/models.py:2327
#: part/templates/part/part_base.html:280
#: templates/InvenTree/settings/settings.html:351
-#: templates/js/translated/company.js:769 templates/js/translated/part.js:782
+#: templates/js/translated/company.js:754 templates/js/translated/part.js:826
msgid "Units"
msgstr ""
@@ -2740,13 +2767,14 @@ msgid "Linked manufacturer part must reference the same base part"
msgstr ""
#: company/models.py:487 company/templates/company/company_base.html:81
-#: company/templates/company/supplier_part.html:87 order/models.py:303
+#: company/templates/company/supplier_part.html:87 order/models.py:308
#: order/templates/order/order_base.html:112 part/bom.py:237 part/bom.py:265
#: stock/templates/stock/item_base.html:229
-#: templates/js/translated/company.js:254
-#: templates/js/translated/company.js:393
-#: templates/js/translated/company.js:891 templates/js/translated/order.js:1643
-#: templates/js/translated/part.js:216 templates/js/translated/part.js:924
+#: templates/email/overdue_purchase_order.html:16
+#: templates/js/translated/company.js:255
+#: templates/js/translated/company.js:387
+#: templates/js/translated/company.js:876 templates/js/translated/order.js:1643
+#: templates/js/translated/part.js:216 templates/js/translated/part.js:968
#: templates/js/translated/table_filters.js:415
msgid "Supplier"
msgstr ""
@@ -2756,9 +2784,9 @@ msgid "Select supplier"
msgstr ""
#: company/models.py:493 company/templates/company/supplier_part.html:97
-#: part/bom.py:238 part/bom.py:266 templates/js/translated/company.js:253
+#: part/bom.py:238 part/bom.py:266 templates/js/translated/company.js:254
#: templates/js/translated/order.js:1894 templates/js/translated/part.js:227
-#: templates/js/translated/part.js:942
+#: templates/js/translated/part.js:986
msgid "SKU"
msgstr ""
@@ -2779,23 +2807,23 @@ msgid "Supplier part description"
msgstr ""
#: company/models.py:518 company/templates/company/supplier_part.html:125
-#: part/models.py:2573 part/templates/part/upload_bom.html:59
+#: part/models.py:2561 part/templates/part/upload_bom.html:59
#: report/templates/report/inventree_po_report.html:92
#: report/templates/report/inventree_so_report.html:93 stock/serializers.py:387
msgid "Note"
msgstr ""
-#: company/models.py:522 part/models.py:1688
+#: company/models.py:522 part/models.py:1683
msgid "base cost"
msgstr ""
-#: company/models.py:522 part/models.py:1688
+#: company/models.py:522 part/models.py:1683
msgid "Minimum charge (e.g. stocking fee)"
msgstr ""
#: company/models.py:524 company/templates/company/supplier_part.html:118
#: stock/models.py:608 stock/templates/stock/item_base.html:245
-#: templates/js/translated/company.js:967 templates/js/translated/stock.js:1912
+#: templates/js/translated/company.js:952 templates/js/translated/stock.js:1922
msgid "Packaging"
msgstr ""
@@ -2803,7 +2831,7 @@ msgstr ""
msgid "Part packaging"
msgstr ""
-#: company/models.py:526 part/models.py:1690
+#: company/models.py:526 part/models.py:1685
msgid "multiple"
msgstr ""
@@ -2825,7 +2853,7 @@ msgstr ""
#: company/templates/company/company_base.html:8
#: company/templates/company/company_base.html:12
-#: templates/InvenTree/search.html:177 templates/js/translated/company.js:378
+#: templates/InvenTree/search.html:177 templates/js/translated/company.js:372
msgid "Company"
msgstr ""
@@ -2843,7 +2871,7 @@ msgid "Edit company information"
msgstr ""
#: company/templates/company/company_base.html:34
-#: templates/js/translated/company.js:321
+#: templates/js/translated/company.js:315
msgid "Edit Company"
msgstr ""
@@ -2866,12 +2894,13 @@ msgstr ""
msgid "Download image from URL"
msgstr ""
-#: company/templates/company/company_base.html:86 order/models.py:649
+#: company/templates/company/company_base.html:86 order/models.py:665
#: order/templates/order/sales_order_base.html:116 stock/models.py:627
-#: stock/models.py:628 stock/serializers.py:758
+#: stock/models.py:628 stock/serializers.py:745
#: stock/templates/stock/item_base.html:401
-#: templates/js/translated/company.js:385 templates/js/translated/order.js:2458
-#: templates/js/translated/stock.js:2431
+#: templates/email/overdue_sales_order.html:16
+#: templates/js/translated/company.js:379 templates/js/translated/order.js:2458
+#: templates/js/translated/stock.js:2441
#: templates/js/translated/table_filters.js:419
msgid "Customer"
msgstr ""
@@ -2999,7 +3028,7 @@ msgid "Supplier List"
msgstr ""
#: company/templates/company/manufacturer_part.html:15 company/views.py:45
-#: part/templates/part/prices.html:170 templates/InvenTree/search.html:179
+#: part/templates/part/prices.html:172 templates/InvenTree/search.html:179
#: templates/navbar.html:49
msgid "Manufacturers"
msgstr ""
@@ -3012,12 +3041,12 @@ msgid "Order part"
msgstr ""
#: company/templates/company/manufacturer_part.html:39
-#: templates/js/translated/company.js:680
+#: templates/js/translated/company.js:665
msgid "Edit manufacturer part"
msgstr ""
#: company/templates/company/manufacturer_part.html:43
-#: templates/js/translated/company.js:681
+#: templates/js/translated/company.js:666
msgid "Delete manufacturer part"
msgstr ""
@@ -3032,7 +3061,7 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:119
#: company/templates/company/supplier_part.html:15 company/views.py:39
-#: part/templates/part/part_sidebar.html:35 part/templates/part/prices.html:166
+#: part/templates/part/part_sidebar.html:35 part/templates/part/prices.html:168
#: templates/InvenTree/search.html:189 templates/navbar.html:48
msgid "Suppliers"
msgstr ""
@@ -3092,18 +3121,18 @@ msgstr ""
#: company/templates/company/supplier_part.html:7
#: company/templates/company/supplier_part.html:24 stock/models.py:592
#: stock/templates/stock/item_base.html:238
-#: templates/js/translated/company.js:907 templates/js/translated/order.js:884
-#: templates/js/translated/stock.js:1869
+#: templates/js/translated/company.js:892 templates/js/translated/order.js:884
+#: templates/js/translated/stock.js:1879
msgid "Supplier Part"
msgstr ""
#: company/templates/company/supplier_part.html:38
-#: templates/js/translated/company.js:980
+#: templates/js/translated/company.js:965
msgid "Edit supplier part"
msgstr ""
#: company/templates/company/supplier_part.html:42
-#: templates/js/translated/company.js:981
+#: templates/js/translated/company.js:966
msgid "Delete supplier part"
msgstr ""
@@ -3123,7 +3152,7 @@ msgstr ""
#: company/templates/company/supplier_part.html:148
#: part/templates/part/detail.html:24 stock/templates/stock/location.html:177
-#: templates/js/translated/stock.js:380
+#: templates/js/translated/stock.js:379
msgid "New Stock Item"
msgstr ""
@@ -3144,7 +3173,7 @@ msgstr ""
#: company/templates/company/supplier_part.html:191
#: company/templates/company/supplier_part.html:305
-#: part/templates/part/prices.html:274 templates/js/translated/part.js:2046
+#: part/templates/part/prices.html:276 templates/js/translated/part.js:2142
msgid "Add Price Break"
msgstr ""
@@ -3153,12 +3182,12 @@ msgid "No price break information found"
msgstr ""
#: company/templates/company/supplier_part.html:231
-#: templates/js/translated/part.js:2056
+#: templates/js/translated/part.js:2152
msgid "Delete Price Break"
msgstr ""
#: company/templates/company/supplier_part.html:245
-#: templates/js/translated/part.js:2070
+#: templates/js/translated/part.js:2166
msgid "Edit Price Break"
msgstr ""
@@ -3180,9 +3209,9 @@ msgstr ""
#: stock/templates/stock/stock_app_base.html:10
#: templates/InvenTree/search.html:151
#: templates/InvenTree/settings/sidebar.html:43
-#: templates/js/translated/bom.js:554 templates/js/translated/part.js:678
-#: templates/js/translated/part.js:1226 templates/js/translated/part.js:1387
-#: templates/js/translated/stock.js:904 templates/js/translated/stock.js:1687
+#: templates/js/translated/bom.js:554 templates/js/translated/part.js:722
+#: templates/js/translated/part.js:1270 templates/js/translated/part.js:1431
+#: templates/js/translated/stock.js:903 templates/js/translated/stock.js:1697
#: templates/navbar.html:31
msgid "Stock"
msgstr ""
@@ -3209,7 +3238,7 @@ msgstr ""
#: stock/templates/stock/location.html:173
#: stock/templates/stock/location_sidebar.html:7
#: templates/InvenTree/search.html:153 templates/js/translated/search.js:223
-#: templates/js/translated/stock.js:2307 users/models.py:39
+#: templates/js/translated/stock.js:2317 users/models.py:39
msgid "Stock Items"
msgstr ""
@@ -3238,20 +3267,20 @@ msgstr ""
msgid "New Company"
msgstr ""
-#: company/views.py:112 part/views.py:576
+#: company/views.py:112 part/views.py:501
msgid "Download Image"
msgstr ""
-#: company/views.py:139 part/views.py:606
+#: company/views.py:139 part/views.py:531
msgid "Image size exceeds maximum allowable size for download"
msgstr ""
-#: company/views.py:146 part/views.py:613
+#: company/views.py:146 part/views.py:538
#, python-brace-format
msgid "Invalid response: {code}"
msgstr ""
-#: company/views.py:155 part/views.py:622
+#: company/views.py:155 part/views.py:547
msgid "Supplied URL is not a valid image file"
msgstr ""
@@ -3320,313 +3349,314 @@ msgstr ""
msgid "Part query filters (comma-separated value of key=value pairs)"
msgstr ""
-#: order/models.py:133
+#: order/models.py:134
msgid "Order description"
msgstr ""
-#: order/models.py:135 order/models.py:1236
+#: order/models.py:136 order/models.py:1252
msgid "Link to external page"
msgstr ""
-#: order/models.py:143
+#: order/models.py:144
msgid "Created By"
msgstr ""
-#: order/models.py:150
+#: order/models.py:151
msgid "User or group responsible for this order"
msgstr ""
-#: order/models.py:155
+#: order/models.py:156
msgid "Order notes"
msgstr ""
-#: order/models.py:289 order/models.py:639
+#: order/models.py:294 order/models.py:655
msgid "Order reference"
msgstr ""
-#: order/models.py:294 order/models.py:654
+#: order/models.py:299 order/models.py:670
msgid "Purchase order status"
msgstr ""
-#: order/models.py:304
+#: order/models.py:309
msgid "Company from which the items are being ordered"
msgstr ""
-#: order/models.py:307 order/templates/order/order_base.html:124
+#: order/models.py:312 order/templates/order/order_base.html:124
#: templates/js/translated/order.js:1652
msgid "Supplier Reference"
msgstr ""
-#: order/models.py:307
+#: order/models.py:312
msgid "Supplier order reference code"
msgstr ""
-#: order/models.py:314
+#: order/models.py:319
msgid "received by"
msgstr ""
-#: order/models.py:319
+#: order/models.py:324
msgid "Issue Date"
msgstr ""
-#: order/models.py:320
+#: order/models.py:325
msgid "Date order was issued"
msgstr ""
-#: order/models.py:325
+#: order/models.py:330
msgid "Target Delivery Date"
msgstr ""
-#: order/models.py:326
+#: order/models.py:331
msgid "Expected date for order delivery. Order will be overdue after this date."
msgstr ""
-#: order/models.py:332
+#: order/models.py:337
msgid "Date order was completed"
msgstr ""
-#: order/models.py:368
+#: order/models.py:373
msgid "Part supplier must match PO supplier"
msgstr ""
-#: order/models.py:512
+#: order/models.py:517
msgid "Quantity must be a positive number"
msgstr ""
-#: order/models.py:650
+#: order/models.py:666
msgid "Company to which the items are being sold"
msgstr ""
-#: order/models.py:656
+#: order/models.py:672
msgid "Customer Reference "
msgstr ""
-#: order/models.py:656
+#: order/models.py:672
msgid "Customer order reference code"
msgstr ""
-#: order/models.py:661
+#: order/models.py:677
msgid "Target date for order completion. Order will be overdue after this date."
msgstr ""
-#: order/models.py:664 order/models.py:1190
+#: order/models.py:680 order/models.py:1206
#: templates/js/translated/order.js:2505 templates/js/translated/order.js:2656
msgid "Shipment Date"
msgstr ""
-#: order/models.py:671
+#: order/models.py:687
msgid "shipped by"
msgstr ""
-#: order/models.py:726
+#: order/models.py:742
msgid "Order cannot be completed as no parts have been assigned"
msgstr ""
-#: order/models.py:730
+#: order/models.py:746
msgid "Only a pending order can be marked as complete"
msgstr ""
-#: order/models.py:733
+#: order/models.py:749
msgid "Order cannot be completed as there are incomplete shipments"
msgstr ""
-#: order/models.py:736
+#: order/models.py:752
msgid "Order cannot be completed as there are incomplete line items"
msgstr ""
-#: order/models.py:910
+#: order/models.py:926
msgid "Item quantity"
msgstr ""
-#: order/models.py:916
+#: order/models.py:932
msgid "Line item reference"
msgstr ""
-#: order/models.py:918
+#: order/models.py:934
msgid "Line item notes"
msgstr ""
-#: order/models.py:923
+#: order/models.py:939
msgid "Target shipping date for this line item"
msgstr ""
-#: order/models.py:941
+#: order/models.py:957
msgid "Context"
msgstr ""
-#: order/models.py:942
+#: order/models.py:958
msgid "Additional context for this line"
msgstr ""
-#: order/models.py:950
+#: order/models.py:966
msgid "Unit price"
msgstr ""
-#: order/models.py:980
+#: order/models.py:996
msgid "Supplier part must match supplier"
msgstr ""
-#: order/models.py:988
+#: order/models.py:1004
msgid "deleted"
msgstr ""
-#: order/models.py:994 order/models.py:1074 order/models.py:1099
-#: order/models.py:1184 order/models.py:1320
+#: order/models.py:1010 order/models.py:1090 order/models.py:1115
+#: order/models.py:1200 order/models.py:1336
#: templates/js/translated/order.js:3112
msgid "Order"
msgstr ""
-#: order/models.py:995 order/models.py:1074
+#: order/models.py:1011 order/models.py:1090
#: order/templates/order/order_base.html:9
#: order/templates/order/order_base.html:18
#: report/templates/report/inventree_po_report.html:76
#: stock/templates/stock/item_base.html:184
+#: templates/email/overdue_purchase_order.html:15
#: templates/js/translated/order.js:885 templates/js/translated/order.js:1621
-#: templates/js/translated/part.js:899 templates/js/translated/stock.js:1846
-#: templates/js/translated/stock.js:2412
+#: templates/js/translated/part.js:943 templates/js/translated/stock.js:1856
+#: templates/js/translated/stock.js:2422
msgid "Purchase Order"
msgstr ""
-#: order/models.py:1013
+#: order/models.py:1029
msgid "Supplier part"
msgstr ""
-#: order/models.py:1020 order/templates/order/order_base.html:169
+#: order/models.py:1036 order/templates/order/order_base.html:169
#: templates/js/translated/order.js:1318 templates/js/translated/order.js:2009
-#: templates/js/translated/part.js:993 templates/js/translated/part.js:1020
+#: templates/js/translated/part.js:1037 templates/js/translated/part.js:1064
#: templates/js/translated/table_filters.js:330
msgid "Received"
msgstr ""
-#: order/models.py:1021
+#: order/models.py:1037
msgid "Number of items received"
msgstr ""
-#: order/models.py:1028 part/templates/part/prices.html:179 stock/models.py:722
+#: order/models.py:1044 part/templates/part/prices.html:181 stock/models.py:722
#: stock/serializers.py:153 stock/templates/stock/item_base.html:191
-#: templates/js/translated/stock.js:1900
+#: templates/js/translated/stock.js:1910
msgid "Purchase Price"
msgstr ""
-#: order/models.py:1029
+#: order/models.py:1045
msgid "Unit purchase price"
msgstr ""
-#: order/models.py:1037
+#: order/models.py:1053
msgid "Where does the Purchaser want this item to be stored?"
msgstr ""
-#: order/models.py:1109 part/templates/part/part_pricing.html:112
-#: part/templates/part/prices.html:119 part/templates/part/prices.html:288
+#: order/models.py:1125 part/templates/part/part_pricing.html:115
+#: part/templates/part/prices.html:121 part/templates/part/prices.html:290
msgid "Sale Price"
msgstr ""
-#: order/models.py:1110
+#: order/models.py:1126
msgid "Unit sale price"
msgstr ""
-#: order/models.py:1115
+#: order/models.py:1131
msgid "Shipped quantity"
msgstr ""
-#: order/models.py:1191
+#: order/models.py:1207
msgid "Date of shipment"
msgstr ""
-#: order/models.py:1198
+#: order/models.py:1214
msgid "Checked By"
msgstr ""
-#: order/models.py:1199
+#: order/models.py:1215
msgid "User who checked this shipment"
msgstr ""
-#: order/models.py:1207
+#: order/models.py:1223
msgid "Shipment number"
msgstr ""
-#: order/models.py:1214
+#: order/models.py:1230
msgid "Shipment notes"
msgstr ""
-#: order/models.py:1221
+#: order/models.py:1237
msgid "Tracking Number"
msgstr ""
-#: order/models.py:1222
+#: order/models.py:1238
msgid "Shipment tracking information"
msgstr ""
-#: order/models.py:1229
+#: order/models.py:1245
msgid "Invoice Number"
msgstr ""
-#: order/models.py:1230
+#: order/models.py:1246
msgid "Reference number for associated invoice"
msgstr ""
-#: order/models.py:1248
+#: order/models.py:1264
msgid "Shipment has already been sent"
msgstr ""
-#: order/models.py:1251
+#: order/models.py:1267
msgid "Shipment has no allocated stock items"
msgstr ""
-#: order/models.py:1354 order/models.py:1356
+#: order/models.py:1370 order/models.py:1372
msgid "Stock item has not been assigned"
msgstr ""
-#: order/models.py:1360
+#: order/models.py:1376
msgid "Cannot allocate stock item to a line with a different part"
msgstr ""
-#: order/models.py:1362
+#: order/models.py:1378
msgid "Cannot allocate stock to a line without a part"
msgstr ""
-#: order/models.py:1365
+#: order/models.py:1381
msgid "Allocation quantity cannot exceed stock quantity"
msgstr ""
-#: order/models.py:1369
+#: order/models.py:1385
msgid "StockItem is over-allocated"
msgstr ""
-#: order/models.py:1375 order/serializers.py:1045
+#: order/models.py:1391 order/serializers.py:1047
msgid "Quantity must be 1 for serialized stock item"
msgstr ""
-#: order/models.py:1378
+#: order/models.py:1394
msgid "Sales order does not match shipment"
msgstr ""
-#: order/models.py:1379
+#: order/models.py:1395
msgid "Shipment does not match sales order"
msgstr ""
-#: order/models.py:1387
+#: order/models.py:1403
msgid "Line"
msgstr ""
-#: order/models.py:1395 order/serializers.py:1149 order/serializers.py:1273
+#: order/models.py:1411 order/serializers.py:1151 order/serializers.py:1275
#: templates/js/translated/model_renderers.js:301
msgid "Shipment"
msgstr ""
-#: order/models.py:1396
+#: order/models.py:1412
msgid "Sales order shipment reference"
msgstr ""
-#: order/models.py:1408 templates/InvenTree/notifications/notifications.html:70
+#: order/models.py:1424 templates/InvenTree/notifications/notifications.html:70
msgid "Item"
msgstr ""
-#: order/models.py:1409
+#: order/models.py:1425
msgid "Select stock item to allocate"
msgstr ""
-#: order/models.py:1412
+#: order/models.py:1428
msgid "Enter stock allocation quantity"
msgstr ""
@@ -3662,7 +3692,7 @@ msgstr ""
msgid "Purchase order must match supplier"
msgstr ""
-#: order/serializers.py:406 order/serializers.py:1117
+#: order/serializers.py:406 order/serializers.py:1119
msgid "Line Item"
msgstr ""
@@ -3710,42 +3740,60 @@ msgstr ""
msgid "Supplied barcode values must be unique"
msgstr ""
-#: order/serializers.py:866
+#: order/serializers.py:868
msgid "Sale price currency"
msgstr ""
-#: order/serializers.py:947
+#: order/serializers.py:949
msgid "No shipment details provided"
msgstr ""
-#: order/serializers.py:1006 order/serializers.py:1126
+#: order/serializers.py:1008 order/serializers.py:1128
msgid "Line item is not associated with this order"
msgstr ""
-#: order/serializers.py:1028
+#: order/serializers.py:1030
msgid "Quantity must be positive"
msgstr ""
-#: order/serializers.py:1139
+#: order/serializers.py:1141
msgid "Enter serial numbers to allocate"
msgstr ""
-#: order/serializers.py:1161 order/serializers.py:1281
+#: order/serializers.py:1163 order/serializers.py:1283
msgid "Shipment has already been shipped"
msgstr ""
-#: order/serializers.py:1164 order/serializers.py:1284
+#: order/serializers.py:1166 order/serializers.py:1286
msgid "Shipment is not associated with this order"
msgstr ""
-#: order/serializers.py:1214
+#: order/serializers.py:1216
msgid "No match found for the following serial numbers"
msgstr ""
-#: order/serializers.py:1224
+#: order/serializers.py:1226
msgid "The following serial numbers are already allocated"
msgstr ""
+#: order/tasks.py:26
+msgid "Overdue Purchase Order"
+msgstr ""
+
+#: order/tasks.py:31
+#, python-brace-format
+msgid "Purchase order {po} is now overdue"
+msgstr ""
+
+#: order/tasks.py:88
+msgid "Overdue Sales Order"
+msgstr ""
+
+#: order/tasks.py:93
+#, python-brace-format
+msgid "Sales order {so} is now overdue"
+msgstr ""
+
#: order/templates/order/order_base.html:33
msgid "Print purchase order report"
msgstr ""
@@ -3870,8 +3918,8 @@ msgstr ""
#: templates/js/translated/bom.js:77 templates/js/translated/build.js:427
#: templates/js/translated/build.js:579 templates/js/translated/build.js:1972
#: templates/js/translated/order.js:833 templates/js/translated/order.js:1265
-#: templates/js/translated/order.js:2731 templates/js/translated/stock.js:570
-#: templates/js/translated/stock.js:738
+#: templates/js/translated/order.js:2731 templates/js/translated/stock.js:569
+#: templates/js/translated/stock.js:737
#: templates/patterns/wizard/match_fields.html:70
msgid "Remove row"
msgstr ""
@@ -3990,7 +4038,7 @@ msgid "Pending Shipments"
msgstr ""
#: order/templates/order/sales_order_detail.html:70
-#: templates/attachment_table.html:6 templates/js/translated/bom.js:1053
+#: templates/attachment_table.html:6 templates/js/translated/bom.js:1047
#: templates/js/translated/build.js:1880
msgid "Actions"
msgstr ""
@@ -4021,47 +4069,47 @@ msgstr ""
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr ""
-#: part/api.py:481
+#: part/api.py:482
msgid "Incoming Purchase Order"
msgstr ""
-#: part/api.py:501
+#: part/api.py:502
msgid "Outgoing Sales Order"
msgstr ""
-#: part/api.py:519
+#: part/api.py:520
msgid "Stock produced by Build Order"
msgstr ""
-#: part/api.py:551
+#: part/api.py:552
msgid "Stock required for Build Order"
msgstr ""
-#: part/api.py:637
+#: part/api.py:638
msgid "Valid"
msgstr ""
-#: part/api.py:638
+#: part/api.py:639
msgid "Validate entire Bill of Materials"
msgstr ""
-#: part/api.py:644
+#: part/api.py:645
msgid "This option must be selected"
msgstr ""
-#: part/api.py:1010
+#: part/api.py:1011
msgid "Must be greater than zero"
msgstr ""
-#: part/api.py:1014
+#: part/api.py:1015
msgid "Must be a valid quantity"
msgstr ""
-#: part/api.py:1029
+#: part/api.py:1030
msgid "Specify location for initial part stock"
msgstr ""
-#: part/api.py:1060 part/api.py:1064 part/api.py:1079 part/api.py:1083
+#: part/api.py:1061 part/api.py:1065 part/api.py:1080 part/api.py:1084
msgid "This field is required"
msgstr ""
@@ -4080,17 +4128,13 @@ msgid "Available Stock"
msgstr ""
#: part/bom.py:130 part/templates/part/part_base.html:207
-#: templates/js/translated/part.js:517 templates/js/translated/part.js:537
-#: templates/js/translated/part.js:1229 templates/js/translated/part.js:1401
-#: templates/js/translated/part.js:1417
+#: templates/js/translated/part.js:561 templates/js/translated/part.js:581
+#: templates/js/translated/part.js:1273 templates/js/translated/part.js:1445
+#: templates/js/translated/part.js:1461
msgid "On Order"
msgstr ""
-#: part/forms.py:59
-msgid "Select part category"
-msgstr ""
-
-#: part/forms.py:69
+#: part/forms.py:60
msgid "Input quantity for price calculation"
msgstr ""
@@ -4106,7 +4150,7 @@ msgstr ""
msgid "Default keywords for parts in this category"
msgstr ""
-#: part/models.py:115 part/models.py:2415 part/templates/part/category.html:15
+#: part/models.py:115 part/models.py:2403 part/templates/part/category.html:15
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr ""
@@ -4123,7 +4167,7 @@ msgstr ""
#: part/templates/part/category_sidebar.html:9
#: templates/InvenTree/index.html:85 templates/InvenTree/search.html:82
#: templates/InvenTree/settings/sidebar.html:39
-#: templates/js/translated/part.js:1768 templates/js/translated/search.js:144
+#: templates/js/translated/part.js:1864 templates/js/translated/search.js:144
#: templates/navbar.html:24 users/models.py:37
msgid "Parts"
msgstr ""
@@ -4153,7 +4197,7 @@ msgstr ""
msgid "Duplicate IPN not allowed in part settings"
msgstr ""
-#: part/models.py:738 part/models.py:2469
+#: part/models.py:738 part/models.py:2457
msgid "Part name"
msgstr ""
@@ -4186,12 +4230,11 @@ msgstr ""
msgid "Part keywords to improve visibility in search results"
msgstr ""
-#: part/models.py:776 part/models.py:2171 part/models.py:2414
+#: part/models.py:776 part/models.py:2159 part/models.py:2402
#: part/templates/part/part_base.html:257
-#: part/templates/part/set_category.html:15
#: templates/InvenTree/notifications/notifications.html:65
#: templates/InvenTree/settings/settings.html:231
-#: templates/js/translated/part.js:1369
+#: templates/js/translated/part.js:1413 templates/js/translated/part.js:1639
msgid "Category"
msgstr ""
@@ -4200,8 +4243,8 @@ msgid "Part category"
msgstr ""
#: part/models.py:782 part/templates/part/part_base.html:266
-#: templates/js/translated/part.js:666 templates/js/translated/part.js:1322
-#: templates/js/translated/stock.js:1659
+#: templates/js/translated/part.js:710 templates/js/translated/part.js:1366
+#: templates/js/translated/stock.js:1669
msgid "IPN"
msgstr ""
@@ -4214,7 +4257,7 @@ msgid "Part revision or version number"
msgstr ""
#: part/models.py:790 part/templates/part/part_base.html:273
-#: report/models.py:170 templates/js/translated/part.js:670
+#: report/models.py:170 templates/js/translated/part.js:714
msgid "Revision"
msgstr ""
@@ -4302,317 +4345,321 @@ msgstr ""
msgid "Creation User"
msgstr ""
-#: part/models.py:1690
+#: part/models.py:1685
msgid "Sell multiple"
msgstr ""
-#: part/models.py:2218
+#: part/models.py:2206
msgid "Test templates can only be created for trackable parts"
msgstr ""
-#: part/models.py:2235
+#: part/models.py:2223
msgid "Test with this name already exists for this part"
msgstr ""
-#: part/models.py:2255 templates/js/translated/part.js:1819
-#: templates/js/translated/stock.js:1274
+#: part/models.py:2243 templates/js/translated/part.js:1915
+#: templates/js/translated/stock.js:1284
msgid "Test Name"
msgstr ""
-#: part/models.py:2256
+#: part/models.py:2244
msgid "Enter a name for the test"
msgstr ""
-#: part/models.py:2261
+#: part/models.py:2249
msgid "Test Description"
msgstr ""
-#: part/models.py:2262
+#: part/models.py:2250
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:2267 templates/js/translated/part.js:1828
+#: part/models.py:2255 templates/js/translated/part.js:1924
#: templates/js/translated/table_filters.js:294
msgid "Required"
msgstr ""
-#: part/models.py:2268
+#: part/models.py:2256
msgid "Is this test required to pass?"
msgstr ""
-#: part/models.py:2273 templates/js/translated/part.js:1836
+#: part/models.py:2261 templates/js/translated/part.js:1932
msgid "Requires Value"
msgstr ""
-#: part/models.py:2274
+#: part/models.py:2262
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:2279 templates/js/translated/part.js:1843
+#: part/models.py:2267 templates/js/translated/part.js:1939
msgid "Requires Attachment"
msgstr ""
-#: part/models.py:2280
+#: part/models.py:2268
msgid "Does this test require a file attachment when adding a test result?"
msgstr ""
-#: part/models.py:2288
+#: part/models.py:2276
#, python-brace-format
msgid "Illegal character in template name ({c})"
msgstr ""
-#: part/models.py:2324
+#: part/models.py:2312
msgid "Parameter template name must be unique"
msgstr ""
-#: part/models.py:2332
+#: part/models.py:2320
msgid "Parameter Name"
msgstr ""
-#: part/models.py:2339
+#: part/models.py:2327
msgid "Parameter Units"
msgstr ""
-#: part/models.py:2370
+#: part/models.py:2358
msgid "Parent Part"
msgstr ""
-#: part/models.py:2372 part/models.py:2420 part/models.py:2421
+#: part/models.py:2360 part/models.py:2408 part/models.py:2409
#: templates/InvenTree/settings/settings.html:226
msgid "Parameter Template"
msgstr ""
-#: part/models.py:2374
+#: part/models.py:2362
msgid "Data"
msgstr ""
-#: part/models.py:2374
+#: part/models.py:2362
msgid "Parameter Value"
msgstr ""
-#: part/models.py:2425 templates/InvenTree/settings/settings.html:235
+#: part/models.py:2413 templates/InvenTree/settings/settings.html:235
msgid "Default Value"
msgstr ""
-#: part/models.py:2426
+#: part/models.py:2414
msgid "Default Parameter Value"
msgstr ""
-#: part/models.py:2461
+#: part/models.py:2449
msgid "Part ID or part name"
msgstr ""
-#: part/models.py:2464 templates/js/translated/model_renderers.js:200
+#: part/models.py:2452 templates/js/translated/model_renderers.js:200
msgid "Part ID"
msgstr ""
-#: part/models.py:2465
+#: part/models.py:2453
msgid "Unique part ID value"
msgstr ""
-#: part/models.py:2468
+#: part/models.py:2456
msgid "Part Name"
msgstr ""
-#: part/models.py:2472
+#: part/models.py:2460
msgid "Part IPN"
msgstr ""
-#: part/models.py:2473
+#: part/models.py:2461
msgid "Part IPN value"
msgstr ""
-#: part/models.py:2476
+#: part/models.py:2464
msgid "Level"
msgstr ""
-#: part/models.py:2477
+#: part/models.py:2465
msgid "BOM level"
msgstr ""
-#: part/models.py:2546
+#: part/models.py:2534
msgid "Select parent part"
msgstr ""
-#: part/models.py:2554
+#: part/models.py:2542
msgid "Sub part"
msgstr ""
-#: part/models.py:2555
+#: part/models.py:2543
msgid "Select part to be used in BOM"
msgstr ""
-#: part/models.py:2561
+#: part/models.py:2549
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:2563 part/templates/part/upload_bom.html:58
-#: templates/js/translated/bom.js:877 templates/js/translated/bom.js:971
+#: part/models.py:2551 part/templates/part/upload_bom.html:58
+#: templates/js/translated/bom.js:871 templates/js/translated/bom.js:965
#: templates/js/translated/table_filters.js:92
msgid "Optional"
msgstr ""
-#: part/models.py:2563
+#: part/models.py:2551
msgid "This BOM item is optional"
msgstr ""
-#: part/models.py:2566 part/templates/part/upload_bom.html:55
+#: part/models.py:2554 part/templates/part/upload_bom.html:55
msgid "Overage"
msgstr ""
-#: part/models.py:2567
+#: part/models.py:2555
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr ""
-#: part/models.py:2570
+#: part/models.py:2558
msgid "BOM item reference"
msgstr ""
-#: part/models.py:2573
+#: part/models.py:2561
msgid "BOM item notes"
msgstr ""
-#: part/models.py:2575
+#: part/models.py:2563
msgid "Checksum"
msgstr ""
-#: part/models.py:2575
+#: part/models.py:2563
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:2579 part/templates/part/upload_bom.html:57
-#: templates/js/translated/bom.js:988
+#: part/models.py:2567 part/templates/part/upload_bom.html:57
+#: templates/js/translated/bom.js:982
#: templates/js/translated/table_filters.js:68
#: templates/js/translated/table_filters.js:88
msgid "Inherited"
msgstr ""
-#: part/models.py:2580
+#: part/models.py:2568
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr ""
-#: part/models.py:2585 part/templates/part/upload_bom.html:56
-#: templates/js/translated/bom.js:980
+#: part/models.py:2573 part/templates/part/upload_bom.html:56
+#: templates/js/translated/bom.js:974
msgid "Allow Variants"
msgstr ""
-#: part/models.py:2586
+#: part/models.py:2574
msgid "Stock items for variant parts can be used for this BOM item"
msgstr ""
-#: part/models.py:2664 stock/models.py:460
+#: part/models.py:2652 stock/models.py:460
msgid "Quantity must be integer value for trackable parts"
msgstr ""
-#: part/models.py:2673 part/models.py:2675
+#: part/models.py:2661 part/models.py:2663
msgid "Sub part must be specified"
msgstr ""
-#: part/models.py:2780
+#: part/models.py:2768
msgid "BOM Item Substitute"
msgstr ""
-#: part/models.py:2801
+#: part/models.py:2789
msgid "Substitute part cannot be the same as the master part"
msgstr ""
-#: part/models.py:2814
+#: part/models.py:2802
msgid "Parent BOM item"
msgstr ""
-#: part/models.py:2822
+#: part/models.py:2810
msgid "Substitute part"
msgstr ""
-#: part/models.py:2833
+#: part/models.py:2825
msgid "Part 1"
msgstr ""
-#: part/models.py:2837
+#: part/models.py:2829
msgid "Part 2"
msgstr ""
-#: part/models.py:2837
+#: part/models.py:2829
msgid "Select Related Part"
msgstr ""
-#: part/models.py:2868
-msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique"
+#: part/models.py:2847
+msgid "Part relationship cannot be created between a part and itself"
msgstr ""
-#: part/serializers.py:138 part/serializers.py:169 stock/serializers.py:163
+#: part/models.py:2851
+msgid "Duplicate relationship already exists"
+msgstr ""
+
+#: part/serializers.py:140 part/serializers.py:171 stock/serializers.py:163
msgid "Purchase currency of this stock item"
msgstr ""
-#: part/serializers.py:794
+#: part/serializers.py:796
msgid "Select part to copy BOM from"
msgstr ""
-#: part/serializers.py:802
+#: part/serializers.py:804
msgid "Remove Existing Data"
msgstr ""
-#: part/serializers.py:803
+#: part/serializers.py:805
msgid "Remove existing BOM items before copying"
msgstr ""
-#: part/serializers.py:808
+#: part/serializers.py:810
msgid "Include Inherited"
msgstr ""
-#: part/serializers.py:809
+#: part/serializers.py:811
msgid "Include BOM items which are inherited from templated parts"
msgstr ""
-#: part/serializers.py:814
+#: part/serializers.py:816
msgid "Skip Invalid Rows"
msgstr ""
-#: part/serializers.py:815
+#: part/serializers.py:817
msgid "Enable this option to skip invalid rows"
msgstr ""
-#: part/serializers.py:820
+#: part/serializers.py:822
msgid "Copy Substitute Parts"
msgstr ""
-#: part/serializers.py:821
+#: part/serializers.py:823
msgid "Copy substitute parts when duplicate BOM items"
msgstr ""
-#: part/serializers.py:861
+#: part/serializers.py:863
msgid "Clear Existing BOM"
msgstr ""
-#: part/serializers.py:862
+#: part/serializers.py:864
msgid "Delete existing BOM items before uploading"
msgstr ""
-#: part/serializers.py:892
+#: part/serializers.py:894
msgid "No part column specified"
msgstr ""
-#: part/serializers.py:935
+#: part/serializers.py:937
msgid "Multiple matching parts found"
msgstr ""
-#: part/serializers.py:938
+#: part/serializers.py:940
msgid "No matching part found"
msgstr ""
-#: part/serializers.py:941
+#: part/serializers.py:943
msgid "Part is not designated as a component"
msgstr ""
-#: part/serializers.py:950
+#: part/serializers.py:952
msgid "Quantity not provided"
msgstr ""
-#: part/serializers.py:958
+#: part/serializers.py:960
msgid "Invalid quantity"
msgstr ""
-#: part/serializers.py:979
+#: part/serializers.py:981
msgid "At least one BOM item is required"
msgstr ""
@@ -5088,10 +5135,10 @@ msgid "Part is virtual (not a physical part)"
msgstr ""
#: part/templates/part/part_base.html:143
-#: templates/js/translated/company.js:623
-#: templates/js/translated/company.js:882
+#: templates/js/translated/company.js:608
+#: templates/js/translated/company.js:867
#: templates/js/translated/model_renderers.js:192
-#: templates/js/translated/part.js:581 templates/js/translated/part.js:658
+#: templates/js/translated/part.js:625 templates/js/translated/part.js:702
msgid "Inactive"
msgstr ""
@@ -5120,13 +5167,13 @@ msgstr ""
msgid "Allocated to Sales Orders"
msgstr ""
-#: part/templates/part/part_base.html:232 templates/js/translated/bom.js:1009
+#: part/templates/part/part_base.html:232 templates/js/translated/bom.js:1003
msgid "Can Build"
msgstr ""
-#: part/templates/part/part_base.html:238 templates/js/translated/part.js:520
-#: templates/js/translated/part.js:540 templates/js/translated/part.js:1233
-#: templates/js/translated/part.js:1405 templates/js/translated/part.js:1421
+#: part/templates/part/part_base.html:238 templates/js/translated/part.js:564
+#: templates/js/translated/part.js:584 templates/js/translated/part.js:1277
+#: templates/js/translated/part.js:1449 templates/js/translated/part.js:1465
msgid "Building"
msgstr ""
@@ -5143,7 +5190,7 @@ msgstr ""
msgid "Search for serial number"
msgstr ""
-#: part/templates/part/part_base.html:443 part/templates/part/prices.html:147
+#: part/templates/part/part_base.html:443 part/templates/part/prices.html:149
msgid "Calculate"
msgstr ""
@@ -5161,54 +5208,55 @@ msgstr ""
#: part/templates/part/part_pricing.html:26
#: part/templates/part/part_pricing.html:52
-#: part/templates/part/part_pricing.html:100
-#: part/templates/part/part_pricing.html:115 part/templates/part/prices.html:28
-#: part/templates/part/prices.html:55 part/templates/part/prices.html:106
-#: part/templates/part/prices.html:123
+#: part/templates/part/part_pricing.html:103
+#: part/templates/part/part_pricing.html:118 part/templates/part/prices.html:28
+#: part/templates/part/prices.html:55 part/templates/part/prices.html:108
+#: part/templates/part/prices.html:125
msgid "Unit Cost"
msgstr ""
#: part/templates/part/part_pricing.html:32
#: part/templates/part/part_pricing.html:58
-#: part/templates/part/part_pricing.html:104
-#: part/templates/part/part_pricing.html:119 part/templates/part/prices.html:35
-#: part/templates/part/prices.html:62 part/templates/part/prices.html:111
-#: part/templates/part/prices.html:128
+#: part/templates/part/part_pricing.html:107
+#: part/templates/part/part_pricing.html:122 part/templates/part/prices.html:35
+#: part/templates/part/prices.html:62 part/templates/part/prices.html:113
+#: part/templates/part/prices.html:130
msgid "Total Cost"
msgstr ""
#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:43
-#: templates/js/translated/bom.js:963
+#: templates/js/translated/bom.js:957
msgid "No supplier pricing available"
msgstr ""
#: part/templates/part/part_pricing.html:48 part/templates/part/prices.html:52
-#: part/templates/part/prices.html:246
+#: part/templates/part/prices.html:248
msgid "BOM Pricing"
msgstr ""
-#: part/templates/part/part_pricing.html:65 part/templates/part/prices.html:72
+#: part/templates/part/part_pricing.html:66 part/templates/part/prices.html:72
msgid "Unit Purchase Price"
msgstr ""
-#: part/templates/part/part_pricing.html:71 part/templates/part/prices.html:79
+#: part/templates/part/part_pricing.html:72 part/templates/part/prices.html:79
msgid "Total Purchase Price"
msgstr ""
-#: part/templates/part/part_pricing.html:81 part/templates/part/prices.html:89
+#: part/templates/part/part_pricing.html:82 part/templates/part/prices.html:89
msgid "Note: BOM pricing is incomplete for this part"
msgstr ""
-#: part/templates/part/part_pricing.html:88 part/templates/part/prices.html:96
+#: part/templates/part/part_pricing.html:91 part/templates/part/prices.html:98
msgid "No BOM pricing available"
msgstr ""
-#: part/templates/part/part_pricing.html:97 part/templates/part/prices.html:105
+#: part/templates/part/part_pricing.html:100
+#: part/templates/part/prices.html:107
msgid "Internal Price"
msgstr ""
-#: part/templates/part/part_pricing.html:128
-#: part/templates/part/prices.html:137
+#: part/templates/part/part_pricing.html:131
+#: part/templates/part/prices.html:139
msgid "No pricing information is available for this part."
msgstr ""
@@ -5232,43 +5280,6 @@ msgstr ""
msgid "Select from existing images"
msgstr ""
-#: part/templates/part/partial_delete.html:9
-#, python-format
-msgid "Part '%(full_name)s' cannot be deleted as it is still marked as active.\n"
-"
Disable the \"Active\" part attribute and re-try.\n"
-" "
-msgstr ""
-
-#: part/templates/part/partial_delete.html:17
-#, python-format
-msgid "Are you sure you want to delete part '%(full_name)s'?"
-msgstr ""
-
-#: part/templates/part/partial_delete.html:22
-#, python-format
-msgid "This part is used in BOMs for %(count)s other parts. If you delete this part, the BOMs for the following parts will be updated"
-msgstr ""
-
-#: part/templates/part/partial_delete.html:32
-#, python-format
-msgid "There are %(count)s stock entries defined for this part. If you delete this part, the following stock entries will also be deleted:"
-msgstr ""
-
-#: part/templates/part/partial_delete.html:43
-#, python-format
-msgid "There are %(count)s manufacturers defined for this part. If you delete this part, the following manufacturer parts will also be deleted:"
-msgstr ""
-
-#: part/templates/part/partial_delete.html:54
-#, python-format
-msgid "There are %(count)s suppliers defined for this part. If you delete this part, the following supplier parts will also be deleted:"
-msgstr ""
-
-#: part/templates/part/partial_delete.html:67
-#, python-format
-msgid "There are %(count)s unique parts tracked for '%(full_name)s'. Deleting this part will permanently remove this tracking information."
-msgstr ""
-
#: part/templates/part/prices.html:19
msgid "Pricing ranges"
msgstr ""
@@ -5285,66 +5296,58 @@ msgstr ""
msgid "Show BOM cost"
msgstr ""
-#: part/templates/part/prices.html:120
+#: part/templates/part/prices.html:122
msgid "Show sale cost"
msgstr ""
-#: part/templates/part/prices.html:121
+#: part/templates/part/prices.html:123
msgid "Show sale price"
msgstr ""
-#: part/templates/part/prices.html:143
+#: part/templates/part/prices.html:145
msgid "Calculation parameters"
msgstr ""
-#: part/templates/part/prices.html:158 templates/js/translated/bom.js:957
+#: part/templates/part/prices.html:160 templates/js/translated/bom.js:951
msgid "Supplier Cost"
msgstr ""
-#: part/templates/part/prices.html:159 part/templates/part/prices.html:180
-#: part/templates/part/prices.html:204 part/templates/part/prices.html:234
-#: part/templates/part/prices.html:260 part/templates/part/prices.html:289
+#: part/templates/part/prices.html:161 part/templates/part/prices.html:182
+#: part/templates/part/prices.html:206 part/templates/part/prices.html:236
+#: part/templates/part/prices.html:262 part/templates/part/prices.html:291
msgid "Jump to overview"
msgstr ""
-#: part/templates/part/prices.html:184
+#: part/templates/part/prices.html:186
msgid "Stock Pricing"
msgstr ""
-#: part/templates/part/prices.html:193
+#: part/templates/part/prices.html:195
msgid "No stock pricing history is available for this part."
msgstr ""
-#: part/templates/part/prices.html:203
+#: part/templates/part/prices.html:205
msgid "Internal Cost"
msgstr ""
-#: part/templates/part/prices.html:218
+#: part/templates/part/prices.html:220
msgid "Add Internal Price Break"
msgstr ""
-#: part/templates/part/prices.html:233
+#: part/templates/part/prices.html:235
msgid "BOM Cost"
msgstr ""
-#: part/templates/part/prices.html:259
+#: part/templates/part/prices.html:261
msgid "Sale Cost"
msgstr ""
-#: part/templates/part/prices.html:300
+#: part/templates/part/prices.html:302
msgid "No sale pice history available for this part."
msgstr ""
-#: part/templates/part/set_category.html:9
-msgid "Set category for the following parts"
-msgstr ""
-
-#: part/templates/part/set_category.html:32
-msgid "Remove part"
-msgstr ""
-
-#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:543
-#: templates/js/translated/part.js:1221 templates/js/translated/part.js:1425
+#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:587
+#: templates/js/translated/part.js:1265 templates/js/translated/part.js:1469
msgid "No Stock"
msgstr ""
@@ -5407,56 +5410,39 @@ msgstr ""
msgid "{title} v{version}"
msgstr ""
-#: part/views.py:74
-msgid "Set Part Category"
-msgstr ""
-
-#: part/views.py:122
-#, python-brace-format
-msgid "Set category for {n} parts"
-msgstr ""
-
-#: part/views.py:193
+#: part/views.py:118
msgid "Match References"
msgstr ""
-#: part/views.py:494
+#: part/views.py:419
msgid "None"
msgstr ""
-#: part/views.py:556
+#: part/views.py:481
msgid "Part QR Code"
msgstr ""
-#: part/views.py:650
+#: part/views.py:575
msgid "Select Part Image"
msgstr ""
-#: part/views.py:676
+#: part/views.py:601
msgid "Updated part image"
msgstr ""
-#: part/views.py:679
+#: part/views.py:604
msgid "Part image not found"
msgstr ""
-#: part/views.py:768
-msgid "Confirm Part Deletion"
-msgstr ""
-
-#: part/views.py:776
-msgid "Part was deleted"
-msgstr ""
-
-#: part/views.py:785
+#: part/views.py:693
msgid "Part Pricing"
msgstr ""
-#: part/views.py:976
+#: part/views.py:884
msgid "Delete Part Category"
msgstr ""
-#: part/views.py:983
+#: part/views.py:891
msgid "Part category was deleted"
msgstr ""
@@ -5516,21 +5502,21 @@ msgstr ""
msgid "Label printing failed"
msgstr ""
-#: plugin/builtin/integration/core_notifications.py:28
+#: plugin/builtin/integration/core_notifications.py:29
msgid "InvenTree contributors"
msgstr ""
-#: plugin/builtin/integration/core_notifications.py:29
+#: plugin/builtin/integration/core_notifications.py:30
msgid "Integrated outgoing notificaton methods"
msgstr ""
-#: plugin/builtin/integration/core_notifications.py:33
-#: plugin/builtin/integration/core_notifications.py:52
-msgid "Enable email notifications"
-msgstr ""
-
#: plugin/builtin/integration/core_notifications.py:34
#: plugin/builtin/integration/core_notifications.py:53
+msgid "Enable email notifications"
+msgstr ""
+
+#: plugin/builtin/integration/core_notifications.py:35
+#: plugin/builtin/integration/core_notifications.py:54
msgid "Allow sending of emails for event notifications"
msgstr ""
@@ -5646,15 +5632,19 @@ msgstr ""
msgid "Either packagename of URL must be provided"
msgstr ""
-#: report/api.py:166
+#: report/api.py:179
msgid "No valid objects provided to template"
msgstr ""
-#: report/api.py:198 report/api.py:239
+#: report/api.py:215 report/api.py:256
#, python-brace-format
msgid "Template file '{template}' is missing or does not exist"
msgstr ""
+#: report/api.py:359
+msgid "Test report"
+msgstr ""
+
#: report/models.py:152
msgid "Template name"
msgstr ""
@@ -5757,7 +5747,7 @@ msgstr ""
#: templates/js/translated/build.js:1173 templates/js/translated/build.js:1671
#: templates/js/translated/model_renderers.js:106
#: templates/js/translated/order.js:115 templates/js/translated/order.js:3229
-#: templates/js/translated/order.js:3318 templates/js/translated/stock.js:435
+#: templates/js/translated/order.js:3318 templates/js/translated/stock.js:434
msgid "Serial Number"
msgstr ""
@@ -5766,19 +5756,19 @@ msgid "Test Results"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:93
-#: stock/models.py:2068
+#: stock/models.py:2072
msgid "Test"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:94
-#: stock/models.py:2074
+#: stock/models.py:2078
msgid "Result"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:97
#: templates/InvenTree/settings/plugin.html:51
#: templates/InvenTree/settings/plugin_settings.html:38
-#: templates/js/translated/order.js:1669 templates/js/translated/stock.js:2340
+#: templates/js/translated/order.js:1669 templates/js/translated/stock.js:2350
msgid "Date"
msgstr ""
@@ -5796,20 +5786,20 @@ msgid "Installed Items"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:137
-#: templates/js/translated/stock.js:555 templates/js/translated/stock.js:725
-#: templates/js/translated/stock.js:2589
+#: templates/js/translated/stock.js:554 templates/js/translated/stock.js:724
+#: templates/js/translated/stock.js:2599
msgid "Serial"
msgstr ""
-#: stock/api.py:504
+#: stock/api.py:505
msgid "Quantity is required"
msgstr ""
-#: stock/api.py:511
+#: stock/api.py:512
msgid "Valid part must be supplied"
msgstr ""
-#: stock/api.py:536
+#: stock/api.py:537
msgid "Serial numbers cannot be supplied for a non-trackable part"
msgstr ""
@@ -5917,7 +5907,7 @@ msgid "Destination Sales Order"
msgstr ""
#: stock/models.py:690 stock/templates/stock/item_base.html:429
-#: templates/js/translated/stock.js:1816
+#: templates/js/translated/stock.js:1826
msgid "Expiry Date"
msgstr ""
@@ -5971,79 +5961,79 @@ msgstr ""
msgid "Serial numbers already exist: {exists}"
msgstr ""
-#: stock/models.py:1321
+#: stock/models.py:1325
msgid "Stock item has been assigned to a sales order"
msgstr ""
-#: stock/models.py:1324
+#: stock/models.py:1328
msgid "Stock item is installed in another item"
msgstr ""
-#: stock/models.py:1327
+#: stock/models.py:1331
msgid "Stock item contains other items"
msgstr ""
-#: stock/models.py:1330
+#: stock/models.py:1334
msgid "Stock item has been assigned to a customer"
msgstr ""
-#: stock/models.py:1333
+#: stock/models.py:1337
msgid "Stock item is currently in production"
msgstr ""
-#: stock/models.py:1336
+#: stock/models.py:1340
msgid "Serialized stock cannot be merged"
msgstr ""
-#: stock/models.py:1343 stock/serializers.py:908
+#: stock/models.py:1347 stock/serializers.py:895
msgid "Duplicate stock items"
msgstr ""
-#: stock/models.py:1347
+#: stock/models.py:1351
msgid "Stock items must refer to the same part"
msgstr ""
-#: stock/models.py:1351
+#: stock/models.py:1355
msgid "Stock items must refer to the same supplier part"
msgstr ""
-#: stock/models.py:1355
+#: stock/models.py:1359
msgid "Stock status codes must match"
msgstr ""
-#: stock/models.py:1524
+#: stock/models.py:1528
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:1986
+#: stock/models.py:1990
msgid "Entry notes"
msgstr ""
-#: stock/models.py:2044
+#: stock/models.py:2048
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:2050
+#: stock/models.py:2054
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:2069
+#: stock/models.py:2073
msgid "Test name"
msgstr ""
-#: stock/models.py:2075
+#: stock/models.py:2079
msgid "Test result"
msgstr ""
-#: stock/models.py:2081
+#: stock/models.py:2085
msgid "Test output value"
msgstr ""
-#: stock/models.py:2088
+#: stock/models.py:2092
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:2094
+#: stock/models.py:2098
msgid "Test notes"
msgstr ""
@@ -6064,7 +6054,7 @@ msgstr ""
msgid "Enter serial numbers for new items"
msgstr ""
-#: stock/serializers.py:309 stock/serializers.py:865 stock/serializers.py:1098
+#: stock/serializers.py:309 stock/serializers.py:852 stock/serializers.py:1085
msgid "Destination stock location"
msgstr ""
@@ -6104,63 +6094,63 @@ msgstr ""
msgid "Destination location for returned item"
msgstr ""
-#: stock/serializers.py:720
+#: stock/serializers.py:707
msgid "Part must be salable"
msgstr ""
-#: stock/serializers.py:724
+#: stock/serializers.py:711
msgid "Item is allocated to a sales order"
msgstr ""
-#: stock/serializers.py:728
+#: stock/serializers.py:715
msgid "Item is allocated to a build order"
msgstr ""
-#: stock/serializers.py:759
+#: stock/serializers.py:746
msgid "Customer to assign stock items"
msgstr ""
-#: stock/serializers.py:765
+#: stock/serializers.py:752
msgid "Selected company is not a customer"
msgstr ""
-#: stock/serializers.py:773
+#: stock/serializers.py:760
msgid "Stock assignment notes"
msgstr ""
-#: stock/serializers.py:783 stock/serializers.py:1014
+#: stock/serializers.py:770 stock/serializers.py:1001
msgid "A list of stock items must be provided"
msgstr ""
-#: stock/serializers.py:872
+#: stock/serializers.py:859
msgid "Stock merging notes"
msgstr ""
-#: stock/serializers.py:877
+#: stock/serializers.py:864
msgid "Allow mismatched suppliers"
msgstr ""
-#: stock/serializers.py:878
+#: stock/serializers.py:865
msgid "Allow stock items with different supplier parts to be merged"
msgstr ""
-#: stock/serializers.py:883
+#: stock/serializers.py:870
msgid "Allow mismatched status"
msgstr ""
-#: stock/serializers.py:884
+#: stock/serializers.py:871
msgid "Allow stock items with different status codes to be merged"
msgstr ""
-#: stock/serializers.py:894
+#: stock/serializers.py:881
msgid "At least two stock items must be provided"
msgstr ""
-#: stock/serializers.py:976
+#: stock/serializers.py:963
msgid "StockItem primary key value"
msgstr ""
-#: stock/serializers.py:1004
+#: stock/serializers.py:991
msgid "Stock transaction notes"
msgstr ""
@@ -6185,7 +6175,7 @@ msgstr ""
msgid "Test Report"
msgstr ""
-#: stock/templates/stock/item.html:94
+#: stock/templates/stock/item.html:94 stock/templates/stock/item.html:298
msgid "Delete Test Data"
msgstr ""
@@ -6197,11 +6187,15 @@ msgstr ""
msgid "Installed Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:151 templates/js/translated/stock.js:2733
+#: stock/templates/stock/item.html:151 templates/js/translated/stock.js:2743
msgid "Install Stock Item"
msgstr ""
-#: stock/templates/stock/item.html:292 templates/js/translated/stock.js:1455
+#: stock/templates/stock/item.html:290
+msgid "Delete all test results for this stock item"
+msgstr ""
+
+#: stock/templates/stock/item.html:323 templates/js/translated/stock.js:1465
msgid "Add Test Result"
msgstr ""
@@ -6388,7 +6382,7 @@ msgid "Stale"
msgstr ""
#: stock/templates/stock/item_base.html:442
-#: templates/js/translated/stock.js:1832
+#: templates/js/translated/stock.js:1842
msgid "Last Updated"
msgstr ""
@@ -6529,7 +6523,7 @@ msgstr ""
msgid "Child Items"
msgstr ""
-#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:182
+#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:144
msgid "Convert Stock Item"
msgstr ""
@@ -6550,31 +6544,19 @@ msgstr ""
msgid "This action cannot be easily undone"
msgstr ""
-#: stock/views.py:113
+#: stock/views.py:111
msgid "Stock Location QR code"
msgstr ""
-#: stock/views.py:131
-msgid "Delete All Test Data"
-msgstr ""
-
-#: stock/views.py:149
-msgid "Confirm test data deletion"
-msgstr ""
-
-#: stock/views.py:150
-msgid "Check the confirmation box"
-msgstr ""
-
-#: stock/views.py:165
+#: stock/views.py:127
msgid "Stock Item QR Code"
msgstr ""
-#: stock/views.py:216
+#: stock/views.py:178
msgid "Delete Stock Location"
msgstr ""
-#: stock/views.py:229
+#: stock/views.py:191
msgid "Delete Stock Item"
msgstr ""
@@ -7317,8 +7299,8 @@ msgstr ""
#: templates/about.html:11 templates/about.html:105
#: templates/js/translated/bom.js:133 templates/js/translated/bom.js:621
-#: templates/js/translated/modals.js:56 templates/js/translated/modals.js:595
-#: templates/js/translated/modals.js:689 templates/js/translated/modals.js:997
+#: templates/js/translated/modals.js:56 templates/js/translated/modals.js:601
+#: templates/js/translated/modals.js:695 templates/js/translated/modals.js:1003
#: templates/js/translated/order.js:928 templates/modals.html:15
#: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50
msgid "Close"
@@ -7390,6 +7372,10 @@ msgstr ""
msgid "Please confirm that %(email)s is an email address for user %(user_display)s."
msgstr ""
+#: templates/account/email_confirm.html:20 templates/js/translated/forms.js:630
+msgid "Confirm"
+msgstr "Bekräfta"
+
#: templates/account/email_confirm.html:27
#, python-format
msgid "This email confirmation link expired or is invalid. Please issue a new email confirmation request."
@@ -7562,7 +7548,7 @@ msgstr ""
msgid "Delete selected attachments"
msgstr ""
-#: templates/attachment_table.html:12 templates/js/translated/attachment.js:110
+#: templates/attachment_table.html:12 templates/js/translated/attachment.js:112
msgid "Delete Attachments"
msgstr ""
@@ -7596,15 +7582,15 @@ msgid "The following parts are low on required stock"
msgstr ""
#: templates/email/build_order_required_stock.html:18
-#: templates/js/translated/bom.js:1425
+#: templates/js/translated/bom.js:1419
msgid "Required Quantity"
msgstr ""
#: templates/email/build_order_required_stock.html:19
#: templates/email/low_stock_notification.html:18
-#: templates/js/translated/bom.js:890 templates/js/translated/build.js:1787
-#: templates/js/translated/build.js:2650 templates/js/translated/part.js:527
-#: templates/js/translated/part.js:530
+#: templates/js/translated/bom.js:884 templates/js/translated/build.js:1787
+#: templates/js/translated/build.js:2650 templates/js/translated/part.js:571
+#: templates/js/translated/part.js:574
#: templates/js/translated/table_filters.js:178
msgid "Available"
msgstr ""
@@ -7622,6 +7608,13 @@ msgstr ""
msgid "Minimum Quantity"
msgstr ""
+#: templates/email/new_order_assigned.html:9
+#: templates/email/overdue_build_order.html:9
+#: templates/email/overdue_purchase_order.html:9
+#: templates/email/overdue_sales_order.html:9
+msgid "Click on the following link to view this order"
+msgstr ""
+
#: templates/image_download.html:8
msgid "Specify URL for downloading image"
msgstr ""
@@ -7638,91 +7631,91 @@ msgstr ""
msgid "Remote image must not exceed maximum allowable file size"
msgstr ""
-#: templates/js/translated/api.js:235 templates/js/translated/modals.js:1067
+#: templates/js/translated/api.js:195 templates/js/translated/modals.js:1073
msgid "No Response"
msgstr ""
-#: templates/js/translated/api.js:236 templates/js/translated/modals.js:1068
+#: templates/js/translated/api.js:196 templates/js/translated/modals.js:1074
msgid "No response from the InvenTree server"
msgstr ""
-#: templates/js/translated/api.js:242
+#: templates/js/translated/api.js:202
msgid "Error 400: Bad request"
msgstr ""
-#: templates/js/translated/api.js:243
+#: templates/js/translated/api.js:203
msgid "API request returned error code 400"
msgstr ""
-#: templates/js/translated/api.js:247 templates/js/translated/modals.js:1077
+#: templates/js/translated/api.js:207 templates/js/translated/modals.js:1083
msgid "Error 401: Not Authenticated"
msgstr ""
-#: templates/js/translated/api.js:248 templates/js/translated/modals.js:1078
+#: templates/js/translated/api.js:208 templates/js/translated/modals.js:1084
msgid "Authentication credentials not supplied"
msgstr ""
-#: templates/js/translated/api.js:252 templates/js/translated/modals.js:1082
+#: templates/js/translated/api.js:212 templates/js/translated/modals.js:1088
msgid "Error 403: Permission Denied"
msgstr ""
-#: templates/js/translated/api.js:253 templates/js/translated/modals.js:1083
+#: templates/js/translated/api.js:213 templates/js/translated/modals.js:1089
msgid "You do not have the required permissions to access this function"
msgstr ""
-#: templates/js/translated/api.js:257 templates/js/translated/modals.js:1087
+#: templates/js/translated/api.js:217 templates/js/translated/modals.js:1093
msgid "Error 404: Resource Not Found"
msgstr ""
-#: templates/js/translated/api.js:258 templates/js/translated/modals.js:1088
+#: templates/js/translated/api.js:218 templates/js/translated/modals.js:1094
msgid "The requested resource could not be located on the server"
msgstr ""
-#: templates/js/translated/api.js:262
+#: templates/js/translated/api.js:222
msgid "Error 405: Method Not Allowed"
msgstr ""
-#: templates/js/translated/api.js:263
+#: templates/js/translated/api.js:223
msgid "HTTP method not allowed at URL"
msgstr ""
-#: templates/js/translated/api.js:267 templates/js/translated/modals.js:1092
+#: templates/js/translated/api.js:227 templates/js/translated/modals.js:1098
msgid "Error 408: Timeout"
msgstr ""
-#: templates/js/translated/api.js:268 templates/js/translated/modals.js:1093
+#: templates/js/translated/api.js:228 templates/js/translated/modals.js:1099
msgid "Connection timeout while requesting data from server"
msgstr ""
-#: templates/js/translated/api.js:271
+#: templates/js/translated/api.js:231
msgid "Unhandled Error Code"
msgstr ""
-#: templates/js/translated/api.js:272
+#: templates/js/translated/api.js:232
msgid "Error code"
msgstr ""
-#: templates/js/translated/attachment.js:96
+#: templates/js/translated/attachment.js:98
msgid "All selected attachments will be deleted"
msgstr ""
-#: templates/js/translated/attachment.js:156
+#: templates/js/translated/attachment.js:152
msgid "No attachments found"
msgstr ""
-#: templates/js/translated/attachment.js:180
+#: templates/js/translated/attachment.js:176
msgid "Edit Attachment"
msgstr ""
-#: templates/js/translated/attachment.js:246
+#: templates/js/translated/attachment.js:242
msgid "Upload Date"
msgstr ""
-#: templates/js/translated/attachment.js:262
+#: templates/js/translated/attachment.js:264
msgid "Edit attachment"
msgstr ""
-#: templates/js/translated/attachment.js:269
+#: templates/js/translated/attachment.js:271
msgid "Delete attachment"
msgstr ""
@@ -7755,7 +7748,7 @@ msgid "Unknown response from server"
msgstr ""
#: templates/js/translated/barcode.js:182
-#: templates/js/translated/modals.js:1057
+#: templates/js/translated/modals.js:1063
msgid "Invalid server response"
msgstr ""
@@ -7783,7 +7776,7 @@ msgstr ""
msgid "Unlink"
msgstr ""
-#: templates/js/translated/barcode.js:456 templates/js/translated/stock.js:999
+#: templates/js/translated/barcode.js:456 templates/js/translated/stock.js:998
msgid "Remove stock item"
msgstr ""
@@ -7918,89 +7911,89 @@ msgstr ""
msgid "Edit BOM Item Substitutes"
msgstr ""
-#: templates/js/translated/bom.js:682
+#: templates/js/translated/bom.js:684
msgid "All selected BOM items will be deleted"
msgstr ""
-#: templates/js/translated/bom.js:697
+#: templates/js/translated/bom.js:699
msgid "Delete selected BOM items?"
msgstr ""
-#: templates/js/translated/bom.js:824
+#: templates/js/translated/bom.js:818
msgid "Load BOM for subassembly"
msgstr ""
-#: templates/js/translated/bom.js:834
+#: templates/js/translated/bom.js:828
msgid "Substitutes Available"
msgstr ""
-#: templates/js/translated/bom.js:838 templates/js/translated/build.js:1769
+#: templates/js/translated/bom.js:832 templates/js/translated/build.js:1769
msgid "Variant stock allowed"
msgstr ""
-#: templates/js/translated/bom.js:906 templates/js/translated/build.js:1814
+#: templates/js/translated/bom.js:900 templates/js/translated/build.js:1814
#: templates/js/translated/order.js:3562
msgid "No Stock Available"
msgstr ""
-#: templates/js/translated/bom.js:910 templates/js/translated/build.js:1818
+#: templates/js/translated/bom.js:904 templates/js/translated/build.js:1818
msgid "Includes variant and substitute stock"
msgstr ""
-#: templates/js/translated/bom.js:912 templates/js/translated/build.js:1820
-#: templates/js/translated/part.js:690
+#: templates/js/translated/bom.js:906 templates/js/translated/build.js:1820
+#: templates/js/translated/part.js:734
msgid "Includes variant stock"
msgstr ""
-#: templates/js/translated/bom.js:914 templates/js/translated/build.js:1822
+#: templates/js/translated/bom.js:908 templates/js/translated/build.js:1822
msgid "Includes substitute stock"
msgstr ""
-#: templates/js/translated/bom.js:928
+#: templates/js/translated/bom.js:922
msgid "Substitutes"
msgstr ""
-#: templates/js/translated/bom.js:943
+#: templates/js/translated/bom.js:937
msgid "Purchase Price Range"
msgstr ""
-#: templates/js/translated/bom.js:950
+#: templates/js/translated/bom.js:944
msgid "Purchase Price Average"
msgstr ""
-#: templates/js/translated/bom.js:999 templates/js/translated/bom.js:1090
+#: templates/js/translated/bom.js:993 templates/js/translated/bom.js:1084
msgid "View BOM"
msgstr ""
-#: templates/js/translated/bom.js:1061
+#: templates/js/translated/bom.js:1055
msgid "Validate BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:1063
+#: templates/js/translated/bom.js:1057
msgid "This line has been validated"
msgstr ""
-#: templates/js/translated/bom.js:1065
+#: templates/js/translated/bom.js:1059
msgid "Edit substitute parts"
msgstr ""
-#: templates/js/translated/bom.js:1067 templates/js/translated/bom.js:1228
+#: templates/js/translated/bom.js:1061 templates/js/translated/bom.js:1222
msgid "Edit BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:1069
+#: templates/js/translated/bom.js:1063
msgid "Delete BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:1164 templates/js/translated/build.js:1615
+#: templates/js/translated/bom.js:1158 templates/js/translated/build.js:1615
msgid "No BOM items found"
msgstr ""
-#: templates/js/translated/bom.js:1408 templates/js/translated/build.js:1753
+#: templates/js/translated/bom.js:1402 templates/js/translated/build.js:1753
msgid "Required Part"
msgstr ""
-#: templates/js/translated/bom.js:1430
+#: templates/js/translated/bom.js:1424
msgid "Inherited from parent BOM"
msgstr ""
@@ -8040,13 +8033,13 @@ msgstr ""
msgid "Complete Build Order"
msgstr ""
-#: templates/js/translated/build.js:259 templates/js/translated/stock.js:91
-#: templates/js/translated/stock.js:181
+#: templates/js/translated/build.js:259 templates/js/translated/stock.js:90
+#: templates/js/translated/stock.js:180
msgid "Next available serial number"
msgstr ""
-#: templates/js/translated/build.js:261 templates/js/translated/stock.js:93
-#: templates/js/translated/stock.js:183
+#: templates/js/translated/build.js:261 templates/js/translated/stock.js:92
+#: templates/js/translated/stock.js:182
msgid "Latest serial number"
msgstr ""
@@ -8259,9 +8252,9 @@ msgstr ""
msgid "No builds matching query"
msgstr ""
-#: templates/js/translated/build.js:2448 templates/js/translated/part.js:1314
-#: templates/js/translated/part.js:1729 templates/js/translated/stock.js:1619
-#: templates/js/translated/stock.js:2277
+#: templates/js/translated/build.js:2448 templates/js/translated/part.js:1358
+#: templates/js/translated/part.js:1825 templates/js/translated/stock.js:1629
+#: templates/js/translated/stock.js:2287
msgid "Select"
msgstr ""
@@ -8273,7 +8266,7 @@ msgstr ""
msgid "Progress"
msgstr ""
-#: templates/js/translated/build.js:2532 templates/js/translated/stock.js:2519
+#: templates/js/translated/build.js:2532 templates/js/translated/stock.js:2529
msgid "No user information"
msgstr ""
@@ -8285,107 +8278,107 @@ msgstr ""
msgid "No parts allocated for"
msgstr ""
-#: templates/js/translated/company.js:66
+#: templates/js/translated/company.js:65
msgid "Add Manufacturer"
msgstr ""
-#: templates/js/translated/company.js:79 templates/js/translated/company.js:169
+#: templates/js/translated/company.js:78 templates/js/translated/company.js:168
msgid "Add Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:100
+#: templates/js/translated/company.js:99
msgid "Edit Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:157 templates/js/translated/order.js:506
+#: templates/js/translated/company.js:156 templates/js/translated/order.js:506
msgid "Add Supplier"
msgstr ""
-#: templates/js/translated/company.js:185
+#: templates/js/translated/company.js:184
msgid "Add Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:200
+#: templates/js/translated/company.js:199
msgid "Edit Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:248
+#: templates/js/translated/company.js:249
msgid "All selected supplier parts will be deleted"
msgstr ""
-#: templates/js/translated/company.js:263
+#: templates/js/translated/company.js:264
msgid "Delete Supplier Parts"
msgstr ""
-#: templates/js/translated/company.js:342
+#: templates/js/translated/company.js:336
msgid "Add new Company"
msgstr ""
-#: templates/js/translated/company.js:419
+#: templates/js/translated/company.js:413
msgid "Parts Supplied"
msgstr ""
-#: templates/js/translated/company.js:428
+#: templates/js/translated/company.js:422
msgid "Parts Manufactured"
msgstr ""
-#: templates/js/translated/company.js:443
+#: templates/js/translated/company.js:437
msgid "No company information found"
msgstr ""
-#: templates/js/translated/company.js:482
+#: templates/js/translated/company.js:478
msgid "All selected manufacturer parts will be deleted"
msgstr ""
-#: templates/js/translated/company.js:496
+#: templates/js/translated/company.js:492
msgid "Delete Manufacturer Parts"
msgstr ""
-#: templates/js/translated/company.js:535
+#: templates/js/translated/company.js:526
msgid "All selected parameters will be deleted"
msgstr ""
-#: templates/js/translated/company.js:548
+#: templates/js/translated/company.js:539
msgid "Delete Parameters"
msgstr ""
-#: templates/js/translated/company.js:595
+#: templates/js/translated/company.js:580
msgid "No manufacturer parts found"
msgstr ""
-#: templates/js/translated/company.js:615
-#: templates/js/translated/company.js:874 templates/js/translated/part.js:565
-#: templates/js/translated/part.js:650
+#: templates/js/translated/company.js:600
+#: templates/js/translated/company.js:859 templates/js/translated/part.js:609
+#: templates/js/translated/part.js:694
msgid "Template part"
msgstr ""
-#: templates/js/translated/company.js:619
-#: templates/js/translated/company.js:878 templates/js/translated/part.js:569
-#: templates/js/translated/part.js:654
+#: templates/js/translated/company.js:604
+#: templates/js/translated/company.js:863 templates/js/translated/part.js:613
+#: templates/js/translated/part.js:698
msgid "Assembled part"
msgstr ""
-#: templates/js/translated/company.js:747 templates/js/translated/part.js:757
+#: templates/js/translated/company.js:732 templates/js/translated/part.js:801
msgid "No parameters found"
msgstr ""
-#: templates/js/translated/company.js:784 templates/js/translated/part.js:799
+#: templates/js/translated/company.js:769 templates/js/translated/part.js:843
msgid "Edit parameter"
msgstr ""
-#: templates/js/translated/company.js:785 templates/js/translated/part.js:800
+#: templates/js/translated/company.js:770 templates/js/translated/part.js:844
msgid "Delete parameter"
msgstr ""
-#: templates/js/translated/company.js:804 templates/js/translated/part.js:817
+#: templates/js/translated/company.js:789 templates/js/translated/part.js:861
msgid "Edit Parameter"
msgstr ""
-#: templates/js/translated/company.js:815 templates/js/translated/part.js:829
+#: templates/js/translated/company.js:800 templates/js/translated/part.js:873
msgid "Delete Parameter"
msgstr ""
-#: templates/js/translated/company.js:854
+#: templates/js/translated/company.js:839
msgid "No supplier parts found"
msgstr ""
@@ -8448,36 +8441,36 @@ msgstr ""
msgid "Keep this form open"
msgstr ""
-#: templates/js/translated/forms.js:756
+#: templates/js/translated/forms.js:757
msgid "Enter a valid number"
msgstr ""
-#: templates/js/translated/forms.js:1248 templates/modals.html:19
+#: templates/js/translated/forms.js:1249 templates/modals.html:19
#: templates/modals.html:43
msgid "Form errors exist"
msgstr ""
-#: templates/js/translated/forms.js:1681
+#: templates/js/translated/forms.js:1682
msgid "No results found"
msgstr ""
-#: templates/js/translated/forms.js:1896 templates/search.html:29
+#: templates/js/translated/forms.js:1897 templates/search.html:29
msgid "Searching"
msgstr ""
-#: templates/js/translated/forms.js:2149
+#: templates/js/translated/forms.js:2150
msgid "Clear input"
msgstr ""
-#: templates/js/translated/forms.js:2615
+#: templates/js/translated/forms.js:2616
msgid "File Column"
msgstr ""
-#: templates/js/translated/forms.js:2615
+#: templates/js/translated/forms.js:2616
msgid "Field Name"
msgstr ""
-#: templates/js/translated/forms.js:2627
+#: templates/js/translated/forms.js:2628
msgid "Select Columns"
msgstr ""
@@ -8498,7 +8491,7 @@ msgid "Labels sent to printer"
msgstr ""
#: templates/js/translated/label.js:60 templates/js/translated/report.js:118
-#: templates/js/translated/stock.js:1023
+#: templates/js/translated/stock.js:1022
msgid "Select Stock Items"
msgstr ""
@@ -8552,12 +8545,12 @@ msgid "Select Label Template"
msgstr ""
#: templates/js/translated/modals.js:82 templates/js/translated/modals.js:142
-#: templates/js/translated/modals.js:621
+#: templates/js/translated/modals.js:627
msgid "Cancel"
msgstr ""
#: templates/js/translated/modals.js:83 templates/js/translated/modals.js:141
-#: templates/js/translated/modals.js:688 templates/js/translated/modals.js:996
+#: templates/js/translated/modals.js:694 templates/js/translated/modals.js:1002
#: templates/modals.html:28 templates/modals.html:51
msgid "Submit"
msgstr ""
@@ -8566,47 +8559,47 @@ msgstr ""
msgid "Form Title"
msgstr ""
-#: templates/js/translated/modals.js:403
+#: templates/js/translated/modals.js:421
msgid "Waiting for server..."
msgstr ""
-#: templates/js/translated/modals.js:562
+#: templates/js/translated/modals.js:568
msgid "Show Error Information"
msgstr ""
-#: templates/js/translated/modals.js:620
+#: templates/js/translated/modals.js:626
msgid "Accept"
msgstr ""
-#: templates/js/translated/modals.js:677
+#: templates/js/translated/modals.js:683
msgid "Loading Data"
msgstr ""
-#: templates/js/translated/modals.js:948
+#: templates/js/translated/modals.js:954
msgid "Invalid response from server"
msgstr ""
-#: templates/js/translated/modals.js:948
+#: templates/js/translated/modals.js:954
msgid "Form data missing from server response"
msgstr ""
-#: templates/js/translated/modals.js:960
+#: templates/js/translated/modals.js:966
msgid "Error posting form data"
msgstr ""
-#: templates/js/translated/modals.js:1057
+#: templates/js/translated/modals.js:1063
msgid "JSON response missing form data"
msgstr ""
-#: templates/js/translated/modals.js:1072
+#: templates/js/translated/modals.js:1078
msgid "Error 400: Bad Request"
msgstr ""
-#: templates/js/translated/modals.js:1073
+#: templates/js/translated/modals.js:1079
msgid "Server returned error code 400"
msgstr ""
-#: templates/js/translated/modals.js:1096
+#: templates/js/translated/modals.js:1102
msgid "Error requesting form data"
msgstr ""
@@ -8656,11 +8649,11 @@ msgstr ""
msgid "Mark as read"
msgstr ""
-#: templates/js/translated/notification.js:259
+#: templates/js/translated/notification.js:260
msgid "No unread notifications"
msgstr ""
-#: templates/js/translated/notification.js:300 templates/notifications.html:10
+#: templates/js/translated/notification.js:302 templates/notifications.html:10
msgid "Notifications will load here"
msgstr ""
@@ -8804,7 +8797,7 @@ msgstr ""
msgid "Quantity to receive"
msgstr ""
-#: templates/js/translated/order.js:1225 templates/js/translated/stock.js:2080
+#: templates/js/translated/order.js:1225 templates/js/translated/stock.js:2090
msgid "Stock Status"
msgstr ""
@@ -8828,7 +8821,7 @@ msgstr ""
msgid "Receive Purchase Order Items"
msgstr ""
-#: templates/js/translated/order.js:1602 templates/js/translated/part.js:870
+#: templates/js/translated/order.js:1602 templates/js/translated/part.js:914
msgid "No purchase orders found"
msgstr ""
@@ -8863,7 +8856,7 @@ msgstr ""
#: templates/js/translated/order.js:1937 templates/js/translated/order.js:2139
#: templates/js/translated/order.js:3467 templates/js/translated/order.js:3978
-#: templates/js/translated/part.js:1948 templates/js/translated/part.js:2301
+#: templates/js/translated/part.js:2044 templates/js/translated/part.js:2397
msgid "Unit Price"
msgstr ""
@@ -8873,11 +8866,11 @@ msgid "Total Price"
msgstr ""
#: templates/js/translated/order.js:1993 templates/js/translated/order.js:3525
-#: templates/js/translated/part.js:979
+#: templates/js/translated/part.js:1023
msgid "This line item is overdue"
msgstr ""
-#: templates/js/translated/order.js:2052 templates/js/translated/part.js:1025
+#: templates/js/translated/order.js:2052 templates/js/translated/part.js:1069
msgid "Receive line item"
msgstr ""
@@ -8998,7 +8991,7 @@ msgid "Delete Stock Allocation"
msgstr ""
#: templates/js/translated/order.js:3243 templates/js/translated/order.js:3332
-#: templates/js/translated/stock.js:1535
+#: templates/js/translated/stock.js:1545
msgid "Shipped to customer"
msgstr ""
@@ -9138,165 +9131,209 @@ msgstr ""
msgid "Create Part Variant"
msgstr ""
+#: templates/js/translated/part.js:405
+msgid "Active Part"
+msgstr ""
+
+#: templates/js/translated/part.js:406
+msgid "Part cannot be deleted as it is currently active"
+msgstr ""
+
+#: templates/js/translated/part.js:420
+msgid "Deleting this part cannot be reversed"
+msgstr ""
+
+#: templates/js/translated/part.js:422
+msgid "Any stock items for this part will be deleted"
+msgstr ""
+
#: templates/js/translated/part.js:423
+msgid "This part will be removed from any Bills of Material"
+msgstr ""
+
+#: templates/js/translated/part.js:424
+msgid "All manufacturer and supplier information for this part will be deleted"
+msgstr ""
+
+#: templates/js/translated/part.js:431
+msgid "Delete Part"
+msgstr ""
+
+#: templates/js/translated/part.js:467
msgid "You are subscribed to notifications for this item"
msgstr ""
-#: templates/js/translated/part.js:425
+#: templates/js/translated/part.js:469
msgid "You have subscribed to notifications for this item"
msgstr ""
-#: templates/js/translated/part.js:430
+#: templates/js/translated/part.js:474
msgid "Subscribe to notifications for this item"
msgstr ""
-#: templates/js/translated/part.js:432
+#: templates/js/translated/part.js:476
msgid "You have unsubscribed to notifications for this item"
msgstr ""
-#: templates/js/translated/part.js:449
+#: templates/js/translated/part.js:493
msgid "Validating the BOM will mark each line item as valid"
msgstr ""
-#: templates/js/translated/part.js:459
+#: templates/js/translated/part.js:503
msgid "Validate Bill of Materials"
msgstr ""
-#: templates/js/translated/part.js:462
+#: templates/js/translated/part.js:506
msgid "Validated Bill of Materials"
msgstr ""
-#: templates/js/translated/part.js:487
+#: templates/js/translated/part.js:531
msgid "Copy Bill of Materials"
msgstr ""
-#: templates/js/translated/part.js:513 templates/js/translated/part.js:1397
+#: templates/js/translated/part.js:557 templates/js/translated/part.js:1441
#: templates/js/translated/table_filters.js:452
msgid "Low stock"
msgstr ""
-#: templates/js/translated/part.js:523 templates/js/translated/part.js:1409
+#: templates/js/translated/part.js:567 templates/js/translated/part.js:1453
msgid "No stock available"
msgstr ""
-#: templates/js/translated/part.js:557 templates/js/translated/part.js:642
+#: templates/js/translated/part.js:601 templates/js/translated/part.js:686
msgid "Trackable part"
msgstr ""
-#: templates/js/translated/part.js:561 templates/js/translated/part.js:646
+#: templates/js/translated/part.js:605 templates/js/translated/part.js:690
msgid "Virtual part"
msgstr ""
-#: templates/js/translated/part.js:573
+#: templates/js/translated/part.js:617
msgid "Subscribed part"
msgstr ""
-#: templates/js/translated/part.js:577
+#: templates/js/translated/part.js:621
msgid "Salable part"
msgstr ""
-#: templates/js/translated/part.js:705
+#: templates/js/translated/part.js:749
msgid "No variants found"
msgstr ""
-#: templates/js/translated/part.js:1095
+#: templates/js/translated/part.js:1139
msgid "Delete part relationship"
msgstr ""
-#: templates/js/translated/part.js:1119
+#: templates/js/translated/part.js:1163
msgid "Delete Part Relationship"
msgstr ""
-#: templates/js/translated/part.js:1184 templates/js/translated/part.js:1480
+#: templates/js/translated/part.js:1228 templates/js/translated/part.js:1524
msgid "No parts found"
msgstr ""
-#: templates/js/translated/part.js:1223
+#: templates/js/translated/part.js:1267
msgid "Not available"
msgstr ""
-#: templates/js/translated/part.js:1374
+#: templates/js/translated/part.js:1418
msgid "No category"
msgstr ""
-#: templates/js/translated/part.js:1504 templates/js/translated/part.js:1664
-#: templates/js/translated/stock.js:2238
+#: templates/js/translated/part.js:1548 templates/js/translated/part.js:1760
+#: templates/js/translated/stock.js:2248
msgid "Display as list"
msgstr ""
-#: templates/js/translated/part.js:1520
+#: templates/js/translated/part.js:1564
msgid "Display as grid"
msgstr ""
-#: templates/js/translated/part.js:1683 templates/js/translated/stock.js:2257
+#: templates/js/translated/part.js:1630
+msgid "Set the part category for the selected parts"
+msgstr ""
+
+#: templates/js/translated/part.js:1635
+msgid "Set Part Category"
+msgstr ""
+
+#: templates/js/translated/part.js:1640
+msgid "Select Part Category"
+msgstr ""
+
+#: templates/js/translated/part.js:1653
+msgid "Category is required"
+msgstr ""
+
+#: templates/js/translated/part.js:1779 templates/js/translated/stock.js:2267
msgid "Display as tree"
msgstr ""
-#: templates/js/translated/part.js:1747
+#: templates/js/translated/part.js:1843
msgid "Subscribed category"
msgstr ""
-#: templates/js/translated/part.js:1761 templates/js/translated/stock.js:2301
+#: templates/js/translated/part.js:1857 templates/js/translated/stock.js:2311
msgid "Path"
msgstr ""
-#: templates/js/translated/part.js:1805
+#: templates/js/translated/part.js:1901
msgid "No test templates matching query"
msgstr ""
-#: templates/js/translated/part.js:1856 templates/js/translated/stock.js:1233
+#: templates/js/translated/part.js:1952 templates/js/translated/stock.js:1243
msgid "Edit test result"
msgstr ""
-#: templates/js/translated/part.js:1857 templates/js/translated/stock.js:1234
-#: templates/js/translated/stock.js:1493
+#: templates/js/translated/part.js:1953 templates/js/translated/stock.js:1244
+#: templates/js/translated/stock.js:1503
msgid "Delete test result"
msgstr ""
-#: templates/js/translated/part.js:1863
+#: templates/js/translated/part.js:1959
msgid "This test is defined for a parent part"
msgstr ""
-#: templates/js/translated/part.js:1885
+#: templates/js/translated/part.js:1981
msgid "Edit Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:1899
+#: templates/js/translated/part.js:1995
msgid "Delete Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:1924
+#: templates/js/translated/part.js:2020
#, python-brace-format
msgid "No ${human_name} information found"
msgstr ""
-#: templates/js/translated/part.js:1981
+#: templates/js/translated/part.js:2077
#, python-brace-format
msgid "Edit ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:1982
+#: templates/js/translated/part.js:2078
#, python-brace-format
msgid "Delete ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:2096
+#: templates/js/translated/part.js:2192
msgid "Current Stock"
msgstr ""
-#: templates/js/translated/part.js:2129
+#: templates/js/translated/part.js:2225
msgid "No scheduling information available for this part"
msgstr ""
-#: templates/js/translated/part.js:2155
+#: templates/js/translated/part.js:2251
msgid "Scheduled Stock Quantities"
msgstr ""
-#: templates/js/translated/part.js:2225
+#: templates/js/translated/part.js:2321
msgid "Single Price"
msgstr ""
-#: templates/js/translated/part.js:2244
+#: templates/js/translated/part.js:2340
msgid "Single Price Difference"
msgstr ""
@@ -9378,360 +9415,360 @@ msgstr ""
msgid "Remove results"
msgstr ""
-#: templates/js/translated/stock.js:73
+#: templates/js/translated/stock.js:72
msgid "Serialize Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:101
+#: templates/js/translated/stock.js:100
msgid "Confirm Stock Serialization"
msgstr ""
-#: templates/js/translated/stock.js:110
+#: templates/js/translated/stock.js:109
msgid "Parent stock location"
msgstr ""
-#: templates/js/translated/stock.js:139
+#: templates/js/translated/stock.js:138
msgid "Edit Stock Location"
msgstr ""
-#: templates/js/translated/stock.js:154
+#: templates/js/translated/stock.js:153
msgid "New Stock Location"
msgstr ""
-#: templates/js/translated/stock.js:194
+#: templates/js/translated/stock.js:193
msgid "This part cannot be serialized"
msgstr ""
-#: templates/js/translated/stock.js:233
+#: templates/js/translated/stock.js:232
msgid "Enter initial quantity for this stock item"
msgstr ""
-#: templates/js/translated/stock.js:239
+#: templates/js/translated/stock.js:238
msgid "Enter serial numbers for new stock (or leave blank)"
msgstr ""
-#: templates/js/translated/stock.js:304
+#: templates/js/translated/stock.js:303
msgid "Stock item duplicated"
msgstr ""
-#: templates/js/translated/stock.js:324
+#: templates/js/translated/stock.js:323
msgid "Duplicate Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:344
+#: templates/js/translated/stock.js:343
msgid "Edit Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:394
+#: templates/js/translated/stock.js:393
msgid "Created new stock item"
msgstr ""
-#: templates/js/translated/stock.js:407
+#: templates/js/translated/stock.js:406
msgid "Created multiple stock items"
msgstr ""
-#: templates/js/translated/stock.js:432
+#: templates/js/translated/stock.js:431
msgid "Find Serial Number"
msgstr ""
-#: templates/js/translated/stock.js:436 templates/js/translated/stock.js:437
+#: templates/js/translated/stock.js:435 templates/js/translated/stock.js:436
msgid "Enter serial number"
msgstr ""
-#: templates/js/translated/stock.js:453
+#: templates/js/translated/stock.js:452
msgid "Enter a serial number"
msgstr ""
-#: templates/js/translated/stock.js:473
+#: templates/js/translated/stock.js:472
msgid "No matching serial number"
msgstr ""
-#: templates/js/translated/stock.js:482
+#: templates/js/translated/stock.js:481
msgid "More than one matching result found"
msgstr ""
-#: templates/js/translated/stock.js:605
+#: templates/js/translated/stock.js:604
msgid "Confirm stock assignment"
msgstr ""
-#: templates/js/translated/stock.js:606
+#: templates/js/translated/stock.js:605
msgid "Assign Stock to Customer"
msgstr ""
-#: templates/js/translated/stock.js:683
+#: templates/js/translated/stock.js:682
msgid "Warning: Merge operation cannot be reversed"
msgstr ""
-#: templates/js/translated/stock.js:684
+#: templates/js/translated/stock.js:683
msgid "Some information will be lost when merging stock items"
msgstr ""
-#: templates/js/translated/stock.js:686
+#: templates/js/translated/stock.js:685
msgid "Stock transaction history will be deleted for merged items"
msgstr ""
-#: templates/js/translated/stock.js:687
+#: templates/js/translated/stock.js:686
msgid "Supplier part information will be deleted for merged items"
msgstr ""
-#: templates/js/translated/stock.js:773
+#: templates/js/translated/stock.js:772
msgid "Confirm stock item merge"
msgstr ""
-#: templates/js/translated/stock.js:774
+#: templates/js/translated/stock.js:773
msgid "Merge Stock Items"
msgstr ""
-#: templates/js/translated/stock.js:869
+#: templates/js/translated/stock.js:868
msgid "Transfer Stock"
msgstr ""
-#: templates/js/translated/stock.js:870
+#: templates/js/translated/stock.js:869
msgid "Move"
msgstr ""
-#: templates/js/translated/stock.js:876
+#: templates/js/translated/stock.js:875
msgid "Count Stock"
msgstr ""
-#: templates/js/translated/stock.js:877
+#: templates/js/translated/stock.js:876
msgid "Count"
msgstr ""
-#: templates/js/translated/stock.js:881
+#: templates/js/translated/stock.js:880
msgid "Remove Stock"
msgstr ""
-#: templates/js/translated/stock.js:882
+#: templates/js/translated/stock.js:881
msgid "Take"
msgstr ""
-#: templates/js/translated/stock.js:886
+#: templates/js/translated/stock.js:885
msgid "Add Stock"
msgstr ""
-#: templates/js/translated/stock.js:887 users/models.py:215
+#: templates/js/translated/stock.js:886 users/models.py:215
msgid "Add"
msgstr ""
-#: templates/js/translated/stock.js:891
+#: templates/js/translated/stock.js:890
msgid "Delete Stock"
msgstr ""
-#: templates/js/translated/stock.js:984
+#: templates/js/translated/stock.js:983
msgid "Quantity cannot be adjusted for serialized stock"
msgstr ""
-#: templates/js/translated/stock.js:984
+#: templates/js/translated/stock.js:983
msgid "Specify stock quantity"
msgstr ""
-#: templates/js/translated/stock.js:1024
+#: templates/js/translated/stock.js:1023
msgid "You must select at least one available stock item"
msgstr ""
-#: templates/js/translated/stock.js:1047
+#: templates/js/translated/stock.js:1046
msgid "Confirm stock adjustment"
msgstr ""
-#: templates/js/translated/stock.js:1172
+#: templates/js/translated/stock.js:1182
msgid "PASS"
msgstr ""
-#: templates/js/translated/stock.js:1174
+#: templates/js/translated/stock.js:1184
msgid "FAIL"
msgstr ""
-#: templates/js/translated/stock.js:1179
+#: templates/js/translated/stock.js:1189
msgid "NO RESULT"
msgstr ""
-#: templates/js/translated/stock.js:1226
+#: templates/js/translated/stock.js:1236
msgid "Pass test"
msgstr ""
-#: templates/js/translated/stock.js:1229
+#: templates/js/translated/stock.js:1239
msgid "Add test result"
msgstr ""
-#: templates/js/translated/stock.js:1255
+#: templates/js/translated/stock.js:1265
msgid "No test results found"
msgstr ""
-#: templates/js/translated/stock.js:1311
+#: templates/js/translated/stock.js:1321
msgid "Test Date"
msgstr ""
-#: templates/js/translated/stock.js:1476
+#: templates/js/translated/stock.js:1486
msgid "Edit Test Result"
msgstr ""
-#: templates/js/translated/stock.js:1498
+#: templates/js/translated/stock.js:1508
msgid "Delete Test Result"
msgstr ""
-#: templates/js/translated/stock.js:1527
+#: templates/js/translated/stock.js:1537
msgid "In production"
msgstr ""
-#: templates/js/translated/stock.js:1531
+#: templates/js/translated/stock.js:1541
msgid "Installed in Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:1539
+#: templates/js/translated/stock.js:1549
msgid "Assigned to Sales Order"
msgstr ""
-#: templates/js/translated/stock.js:1545
+#: templates/js/translated/stock.js:1555
msgid "No stock location set"
msgstr ""
-#: templates/js/translated/stock.js:1712
+#: templates/js/translated/stock.js:1722
msgid "Stock item is in production"
msgstr ""
-#: templates/js/translated/stock.js:1717
+#: templates/js/translated/stock.js:1727
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:1720
+#: templates/js/translated/stock.js:1730
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:1723
+#: templates/js/translated/stock.js:1733
msgid "Serialized stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:1725
+#: templates/js/translated/stock.js:1735
msgid "Stock item has been fully allocated"
msgstr ""
-#: templates/js/translated/stock.js:1727
+#: templates/js/translated/stock.js:1737
msgid "Stock item has been partially allocated"
msgstr ""
-#: templates/js/translated/stock.js:1730
+#: templates/js/translated/stock.js:1740
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:1734
+#: templates/js/translated/stock.js:1744
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:1736
+#: templates/js/translated/stock.js:1746
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:1743
+#: templates/js/translated/stock.js:1753
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:1745
+#: templates/js/translated/stock.js:1755
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:1747
+#: templates/js/translated/stock.js:1757
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:1751
+#: templates/js/translated/stock.js:1761
#: templates/js/translated/table_filters.js:188
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:1802
+#: templates/js/translated/stock.js:1812
msgid "Stocktake"
msgstr ""
-#: templates/js/translated/stock.js:1884
+#: templates/js/translated/stock.js:1894
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:1922
+#: templates/js/translated/stock.js:1932
msgid "No stock items matching query"
msgstr ""
-#: templates/js/translated/stock.js:2095
+#: templates/js/translated/stock.js:2105
msgid "Set Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:2109
+#: templates/js/translated/stock.js:2119
msgid "Select Status Code"
msgstr ""
-#: templates/js/translated/stock.js:2110
+#: templates/js/translated/stock.js:2120
msgid "Status code must be selected"
msgstr ""
-#: templates/js/translated/stock.js:2365
+#: templates/js/translated/stock.js:2375
msgid "Details"
msgstr ""
-#: templates/js/translated/stock.js:2381
+#: templates/js/translated/stock.js:2391
msgid "Part information unavailable"
msgstr ""
-#: templates/js/translated/stock.js:2403
+#: templates/js/translated/stock.js:2413
msgid "Location no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2422
+#: templates/js/translated/stock.js:2432
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2441
+#: templates/js/translated/stock.js:2451
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2459
+#: templates/js/translated/stock.js:2469
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2482
+#: templates/js/translated/stock.js:2492
msgid "Added"
msgstr ""
-#: templates/js/translated/stock.js:2490
+#: templates/js/translated/stock.js:2500
msgid "Removed"
msgstr ""
-#: templates/js/translated/stock.js:2566
+#: templates/js/translated/stock.js:2576
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:2617 templates/js/translated/stock.js:2653
+#: templates/js/translated/stock.js:2627 templates/js/translated/stock.js:2663
msgid "Uninstall Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:2666
+#: templates/js/translated/stock.js:2676
msgid "Select stock item to uninstall"
msgstr ""
-#: templates/js/translated/stock.js:2687
+#: templates/js/translated/stock.js:2697
msgid "Install another stock item into this item"
msgstr ""
-#: templates/js/translated/stock.js:2688
+#: templates/js/translated/stock.js:2698
msgid "Stock items can only be installed if they meet the following criteria"
msgstr ""
-#: templates/js/translated/stock.js:2690
+#: templates/js/translated/stock.js:2700
msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:2691
+#: templates/js/translated/stock.js:2701
msgid "The Stock Item is currently available in stock"
msgstr ""
-#: templates/js/translated/stock.js:2692
+#: templates/js/translated/stock.js:2702
msgid "The Stock Item is not already installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:2693
+#: templates/js/translated/stock.js:2703
msgid "The Stock Item is tracked by either a batch code or serial number"
msgstr ""
-#: templates/js/translated/stock.js:2706
+#: templates/js/translated/stock.js:2716
msgid "Select part to install"
msgstr ""
diff --git a/InvenTree/locale/th/LC_MESSAGES/django.po b/InvenTree/locale/th/LC_MESSAGES/django.po
index 8bfca57453..5c8c61fc14 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: 2022-06-05 14:26+0000\n"
-"PO-Revision-Date: 2022-06-05 14:34\n"
+"POT-Creation-Date: 2022-06-06 22:59+0000\n"
+"PO-Revision-Date: 2022-06-07 14:35\n"
"Last-Translator: \n"
"Language-Team: Thai\n"
"Language: th_TH\n"
@@ -17,7 +17,7 @@ msgstr ""
"X-Crowdin-File: /[inventree.InvenTree] l10/InvenTree/locale/en/LC_MESSAGES/django.po\n"
"X-Crowdin-File-ID: 154\n"
-#: InvenTree/api.py:46
+#: InvenTree/api.py:49
msgid "API endpoint not found"
msgstr ""
@@ -29,275 +29,273 @@ msgstr ""
msgid "Enter date"
msgstr ""
-#: InvenTree/forms.py:117 templates/account/email_confirm.html:20
-#: templates/js/translated/forms.js:630
-msgid "Confirm"
-msgstr ""
-
-#: InvenTree/forms.py:134
+#: InvenTree/forms.py:117
msgid "Confirm delete"
msgstr ""
-#: InvenTree/forms.py:135
+#: InvenTree/forms.py:118
msgid "Confirm item deletion"
msgstr ""
-#: InvenTree/forms.py:167
+#: InvenTree/forms.py:150
msgid "Enter password"
msgstr ""
-#: InvenTree/forms.py:168
+#: InvenTree/forms.py:151
msgid "Enter new password"
msgstr ""
-#: InvenTree/forms.py:175
+#: InvenTree/forms.py:158
msgid "Confirm password"
msgstr ""
-#: InvenTree/forms.py:176
+#: InvenTree/forms.py:159
msgid "Confirm new password"
msgstr ""
-#: InvenTree/forms.py:213
-msgid "Select Category"
-msgstr ""
-
-#: InvenTree/forms.py:234
+#: InvenTree/forms.py:184
msgid "Email (again)"
msgstr ""
-#: InvenTree/forms.py:238
+#: InvenTree/forms.py:188
msgid "Email address confirmation"
msgstr ""
-#: InvenTree/forms.py:259
+#: InvenTree/forms.py:209
msgid "You must type the same email each time."
msgstr ""
-#: InvenTree/helpers.py:402
+#: InvenTree/helpers.py:404
#, python-brace-format
msgid "Duplicate serial: {sn}"
msgstr ""
-#: InvenTree/helpers.py:409 order/models.py:365 order/models.py:517
+#: InvenTree/helpers.py:411 order/models.py:370 order/models.py:522
msgid "Invalid quantity provided"
msgstr ""
-#: InvenTree/helpers.py:412
+#: InvenTree/helpers.py:414
msgid "Empty serial number string"
msgstr ""
-#: InvenTree/helpers.py:444
+#: InvenTree/helpers.py:446
#, python-brace-format
msgid "Invalid group range: {g}"
msgstr ""
-#: InvenTree/helpers.py:447
+#: InvenTree/helpers.py:449
#, python-brace-format
msgid "Invalid group: {g}"
msgstr ""
-#: InvenTree/helpers.py:475
+#: InvenTree/helpers.py:477
#, python-brace-format
msgid "Invalid group sequence: {g}"
msgstr ""
-#: InvenTree/helpers.py:483
+#: InvenTree/helpers.py:485
#, python-brace-format
msgid "Invalid/no group {group}"
msgstr ""
-#: InvenTree/helpers.py:489
+#: InvenTree/helpers.py:491
msgid "No serial numbers found"
msgstr ""
-#: InvenTree/helpers.py:493
+#: InvenTree/helpers.py:495
#, python-brace-format
msgid "Number of unique serial numbers ({s}) must match quantity ({q})"
msgstr ""
-#: InvenTree/models.py:174
+#: InvenTree/models.py:178
msgid "Missing file"
msgstr ""
-#: InvenTree/models.py:175
+#: InvenTree/models.py:179
msgid "Missing external link"
msgstr ""
-#: InvenTree/models.py:187 stock/models.py:2087
-#: templates/js/translated/attachment.js:101
-#: templates/js/translated/attachment.js:198
+#: InvenTree/models.py:191 stock/models.py:2091
+#: templates/js/translated/attachment.js:103
+#: templates/js/translated/attachment.js:194
msgid "Attachment"
msgstr ""
-#: InvenTree/models.py:188
+#: InvenTree/models.py:192
msgid "Select file to attach"
msgstr ""
-#: InvenTree/models.py:194 company/models.py:123 company/models.py:272
-#: company/models.py:506 order/models.py:135 order/models.py:1235
+#: InvenTree/models.py:198 company/models.py:123 company/models.py:272
+#: company/models.py:506 order/models.py:136 order/models.py:1251
#: part/models.py:795
#: report/templates/report/inventree_build_order_base.html:165
-#: templates/js/translated/company.js:655
-#: templates/js/translated/company.js:946 templates/js/translated/order.js:2676
-#: templates/js/translated/part.js:1441
+#: templates/js/translated/company.js:640
+#: templates/js/translated/company.js:931 templates/js/translated/order.js:2676
+#: templates/js/translated/part.js:1485
msgid "Link"
msgstr ""
-#: InvenTree/models.py:195 build/models.py:320 part/models.py:796
+#: InvenTree/models.py:199 build/models.py:320 part/models.py:796
#: stock/models.py:642
msgid "Link to external URL"
msgstr ""
-#: InvenTree/models.py:198 templates/js/translated/attachment.js:102
-#: templates/js/translated/attachment.js:242
+#: InvenTree/models.py:202 templates/js/translated/attachment.js:104
+#: templates/js/translated/attachment.js:238
msgid "Comment"
msgstr ""
-#: InvenTree/models.py:198
+#: InvenTree/models.py:202
msgid "File comment"
msgstr ""
-#: InvenTree/models.py:204 InvenTree/models.py:205 common/models.py:1499
-#: common/models.py:1500 common/models.py:1728 common/models.py:1729
-#: common/models.py:1991 common/models.py:1992 part/models.py:2153
-#: part/models.py:2173 plugin/models.py:238 plugin/models.py:239
+#: InvenTree/models.py:208 InvenTree/models.py:209 common/models.py:1506
+#: common/models.py:1507 common/models.py:1735 common/models.py:1736
+#: common/models.py:1998 common/models.py:1999 part/models.py:2141
+#: part/models.py:2161 plugin/models.py:238 plugin/models.py:239
#: report/templates/report/inventree_test_report_base.html:96
-#: templates/js/translated/stock.js:2513
+#: templates/js/translated/stock.js:2523
msgid "User"
msgstr ""
-#: InvenTree/models.py:208
+#: InvenTree/models.py:212
msgid "upload date"
msgstr ""
-#: InvenTree/models.py:230
+#: InvenTree/models.py:234
msgid "Filename must not be empty"
msgstr ""
-#: InvenTree/models.py:253
+#: InvenTree/models.py:257
msgid "Invalid attachment directory"
msgstr ""
-#: InvenTree/models.py:263
+#: InvenTree/models.py:267
#, python-brace-format
msgid "Filename contains illegal character '{c}'"
msgstr ""
-#: InvenTree/models.py:266
+#: InvenTree/models.py:270
msgid "Filename missing extension"
msgstr ""
-#: InvenTree/models.py:273
+#: InvenTree/models.py:277
msgid "Attachment with this filename already exists"
msgstr ""
-#: InvenTree/models.py:280
+#: InvenTree/models.py:284
msgid "Error renaming file"
msgstr ""
-#: InvenTree/models.py:314
+#: InvenTree/models.py:318
msgid "Invalid choice"
msgstr ""
-#: InvenTree/models.py:333 InvenTree/models.py:334 common/models.py:1714
+#: InvenTree/models.py:337 InvenTree/models.py:338 common/models.py:1721
#: company/models.py:354 label/models.py:101 part/models.py:739
-#: part/models.py:2331 plugin/models.py:93 report/models.py:151
+#: part/models.py:2319 plugin/models.py:93 report/models.py:151
#: templates/InvenTree/notifications/notifications.html:84
#: templates/InvenTree/settings/mixins/urls.html:13
#: templates/InvenTree/settings/plugin.html:49
#: templates/InvenTree/settings/plugin.html:132
#: templates/InvenTree/settings/plugin_settings.html:23
#: templates/InvenTree/settings/settings.html:346
-#: templates/js/translated/company.js:539
-#: templates/js/translated/company.js:757 templates/js/translated/part.js:615
-#: templates/js/translated/part.js:767 templates/js/translated/part.js:1736
-#: templates/js/translated/stock.js:2283
+#: templates/js/translated/company.js:530
+#: templates/js/translated/company.js:742 templates/js/translated/part.js:659
+#: templates/js/translated/part.js:811 templates/js/translated/part.js:1832
+#: templates/js/translated/stock.js:2293
msgid "Name"
msgstr ""
-#: InvenTree/models.py:340 build/models.py:197
+#: InvenTree/models.py:344 build/models.py:197
#: build/templates/build/detail.html:24 company/models.py:278
#: company/models.py:512 company/templates/company/company_base.html:71
#: company/templates/company/manufacturer_part.html:75
#: company/templates/company/supplier_part.html:73 label/models.py:108
-#: order/models.py:133 part/models.py:762 part/templates/part/category.html:74
-#: part/templates/part/part_base.html:167
-#: part/templates/part/set_category.html:14 report/models.py:164
+#: order/models.py:134 part/models.py:762 part/templates/part/category.html:74
+#: part/templates/part/part_base.html:167 report/models.py:164
#: report/models.py:509 report/models.py:550
#: report/templates/report/inventree_build_order_base.html:118
#: stock/templates/stock/location.html:103
#: templates/InvenTree/settings/plugin_settings.html:33
-#: templates/js/translated/bom.js:553 templates/js/translated/bom.js:851
-#: templates/js/translated/build.js:2476 templates/js/translated/company.js:401
-#: templates/js/translated/company.js:666
-#: templates/js/translated/company.js:957 templates/js/translated/order.js:1656
+#: templates/js/translated/bom.js:553 templates/js/translated/bom.js:845
+#: templates/js/translated/build.js:2476 templates/js/translated/company.js:395
+#: templates/js/translated/company.js:651
+#: templates/js/translated/company.js:942 templates/js/translated/order.js:1656
#: templates/js/translated/order.js:1888 templates/js/translated/order.js:2476
-#: templates/js/translated/part.js:674 templates/js/translated/part.js:1082
-#: templates/js/translated/part.js:1355 templates/js/translated/part.js:1755
-#: templates/js/translated/part.js:1824 templates/js/translated/stock.js:1676
-#: templates/js/translated/stock.js:2295 templates/js/translated/stock.js:2350
+#: templates/js/translated/part.js:718 templates/js/translated/part.js:1126
+#: templates/js/translated/part.js:1399 templates/js/translated/part.js:1851
+#: templates/js/translated/part.js:1920 templates/js/translated/stock.js:1686
+#: templates/js/translated/stock.js:2305 templates/js/translated/stock.js:2360
msgid "Description"
msgstr ""
-#: InvenTree/models.py:341
+#: InvenTree/models.py:345
msgid "Description (optional)"
msgstr ""
-#: InvenTree/models.py:349
+#: InvenTree/models.py:353
msgid "parent"
msgstr ""
-#: InvenTree/serializers.py:52 part/models.py:2652
+#: InvenTree/models.py:466
+msgid "Server Error"
+msgstr ""
+
+#: InvenTree/models.py:467
+msgid "An error has been logged by the server."
+msgstr ""
+
+#: InvenTree/serializers.py:52 part/models.py:2640
msgid "Must be a valid number"
msgstr ""
-#: InvenTree/serializers.py:271
+#: InvenTree/serializers.py:263
msgid "Filename"
msgstr ""
-#: InvenTree/serializers.py:306
+#: InvenTree/serializers.py:298
msgid "Invalid value"
msgstr ""
-#: InvenTree/serializers.py:328
+#: InvenTree/serializers.py:320
msgid "Data File"
msgstr ""
-#: InvenTree/serializers.py:329
+#: InvenTree/serializers.py:321
msgid "Select data file for upload"
msgstr ""
-#: InvenTree/serializers.py:350
+#: InvenTree/serializers.py:342
msgid "Unsupported file type"
msgstr ""
-#: InvenTree/serializers.py:356
+#: InvenTree/serializers.py:348
msgid "File is too large"
msgstr ""
-#: InvenTree/serializers.py:377
+#: InvenTree/serializers.py:369
msgid "No columns found in file"
msgstr ""
-#: InvenTree/serializers.py:380
+#: InvenTree/serializers.py:372
msgid "No data rows found in file"
msgstr ""
-#: InvenTree/serializers.py:503
+#: InvenTree/serializers.py:495
msgid "No data rows provided"
msgstr ""
-#: InvenTree/serializers.py:506
+#: InvenTree/serializers.py:498
msgid "No data columns supplied"
msgstr ""
-#: InvenTree/serializers.py:583
+#: InvenTree/serializers.py:575
#, python-brace-format
msgid "Missing required column: '{name}'"
msgstr ""
-#: InvenTree/serializers.py:592
+#: InvenTree/serializers.py:584
#, python-brace-format
msgid "Duplicate column: '{col}'"
msgstr ""
@@ -440,7 +438,7 @@ msgstr ""
msgid "Returned"
msgstr ""
-#: InvenTree/status_codes.py:141 order/models.py:1114
+#: InvenTree/status_codes.py:141 order/models.py:1130
#: templates/js/translated/order.js:3264 templates/js/translated/order.js:3607
msgid "Shipped"
msgstr ""
@@ -525,7 +523,7 @@ msgstr ""
msgid "Split child item"
msgstr ""
-#: InvenTree/status_codes.py:281 templates/js/translated/stock.js:2020
+#: InvenTree/status_codes.py:281 templates/js/translated/stock.js:2030
msgid "Merged stock items"
msgstr ""
@@ -597,27 +595,27 @@ msgstr ""
msgid "Invalid value for overage"
msgstr ""
-#: InvenTree/views.py:522
+#: InvenTree/views.py:521
msgid "Delete Item"
msgstr ""
-#: InvenTree/views.py:571
+#: InvenTree/views.py:570
msgid "Check box to confirm item deletion"
msgstr ""
-#: InvenTree/views.py:586 templates/InvenTree/settings/user.html:22
+#: InvenTree/views.py:585 templates/InvenTree/settings/user.html:22
msgid "Edit User Information"
msgstr ""
-#: InvenTree/views.py:598 templates/InvenTree/settings/user.html:19
+#: InvenTree/views.py:597 templates/InvenTree/settings/user.html:19
msgid "Set Password"
msgstr ""
-#: InvenTree/views.py:618
+#: InvenTree/views.py:617
msgid "Password fields must match"
msgstr ""
-#: InvenTree/views.py:842 templates/navbar.html:152
+#: InvenTree/views.py:807 templates/navbar.html:152
msgid "System Information"
msgstr ""
@@ -628,6 +626,7 @@ msgstr ""
#: build/models.py:131 build/templates/build/build_base.html:9
#: build/templates/build/build_base.html:27
#: report/templates/report/inventree_build_order_base.html:106
+#: templates/email/overdue_build_order.html:15
#: templates/js/translated/build.js:727
msgid "Build Order"
msgstr ""
@@ -646,12 +645,12 @@ msgstr ""
msgid "Build Order Reference"
msgstr ""
-#: build/models.py:189 order/models.py:288 order/models.py:638
-#: order/models.py:916 part/models.py:2570
+#: build/models.py:189 order/models.py:293 order/models.py:654
+#: order/models.py:932 part/models.py:2558
#: part/templates/part/upload_bom.html:54
#: report/templates/report/inventree_po_report.html:91
#: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:688 templates/js/translated/bom.js:858
+#: templates/js/translated/bom.js:690 templates/js/translated/bom.js:852
#: templates/js/translated/build.js:1777 templates/js/translated/order.js:1919
#: templates/js/translated/order.js:2120 templates/js/translated/order.js:3448
#: templates/js/translated/order.js:3959
@@ -673,13 +672,12 @@ msgstr ""
#: build/models.py:215 build/templates/build/build_base.html:77
#: build/templates/build/detail.html:29 company/models.py:647
-#: order/models.py:1012 order/models.py:1103 part/models.py:336
-#: part/models.py:2099 part/models.py:2114 part/models.py:2133
-#: part/models.py:2151 part/models.py:2250 part/models.py:2370
-#: part/models.py:2460 part/models.py:2545 part/models.py:2821
-#: part/serializers.py:793 part/templates/part/part_app_base.html:8
+#: order/models.py:1028 order/models.py:1119 part/models.py:336
+#: part/models.py:2087 part/models.py:2102 part/models.py:2121
+#: part/models.py:2139 part/models.py:2238 part/models.py:2358
+#: part/models.py:2448 part/models.py:2533 part/models.py:2809
+#: part/serializers.py:795 part/templates/part/part_app_base.html:8
#: part/templates/part/part_pricing.html:12
-#: part/templates/part/set_category.html:13
#: part/templates/part/upload_bom.html:52
#: report/templates/report/inventree_build_order_base.html:110
#: report/templates/report/inventree_po_report.html:89
@@ -687,22 +685,23 @@ msgstr ""
#: templates/InvenTree/search.html:80
#: templates/email/build_order_required_stock.html:17
#: templates/email/low_stock_notification.html:16
+#: templates/email/overdue_build_order.html:16
#: templates/js/translated/barcode.js:435 templates/js/translated/bom.js:552
-#: templates/js/translated/bom.js:687 templates/js/translated/bom.js:805
+#: templates/js/translated/bom.js:689 templates/js/translated/bom.js:799
#: templates/js/translated/build.js:1153 templates/js/translated/build.js:1647
#: templates/js/translated/build.js:2083 templates/js/translated/build.js:2481
-#: templates/js/translated/company.js:252
-#: templates/js/translated/company.js:486
-#: templates/js/translated/company.js:607
-#: templates/js/translated/company.js:866 templates/js/translated/order.js:100
+#: templates/js/translated/company.js:253
+#: templates/js/translated/company.js:482
+#: templates/js/translated/company.js:592
+#: templates/js/translated/company.js:851 templates/js/translated/order.js:100
#: templates/js/translated/order.js:883 templates/js/translated/order.js:1315
#: templates/js/translated/order.js:1873 templates/js/translated/order.js:2819
#: templates/js/translated/order.js:3217 templates/js/translated/order.js:3432
-#: templates/js/translated/part.js:1067 templates/js/translated/part.js:1137
-#: templates/js/translated/part.js:1333 templates/js/translated/stock.js:531
-#: templates/js/translated/stock.js:696 templates/js/translated/stock.js:903
-#: templates/js/translated/stock.js:1633 templates/js/translated/stock.js:2376
-#: templates/js/translated/stock.js:2571 templates/js/translated/stock.js:2705
+#: templates/js/translated/part.js:1111 templates/js/translated/part.js:1181
+#: templates/js/translated/part.js:1377 templates/js/translated/stock.js:530
+#: templates/js/translated/stock.js:695 templates/js/translated/stock.js:902
+#: templates/js/translated/stock.js:1643 templates/js/translated/stock.js:2386
+#: templates/js/translated/stock.js:2581 templates/js/translated/stock.js:2715
msgid "Part"
msgstr ""
@@ -768,12 +767,12 @@ msgstr ""
msgid "Batch code for this build output"
msgstr ""
-#: build/models.py:282 order/models.py:137 part/models.py:932
+#: build/models.py:282 order/models.py:138 part/models.py:932
#: part/templates/part/part_base.html:305 templates/js/translated/order.js:2489
msgid "Creation Date"
msgstr ""
-#: build/models.py:286 order/models.py:660
+#: build/models.py:286 order/models.py:676
msgid "Target completion date"
msgstr ""
@@ -781,7 +780,7 @@ msgstr ""
msgid "Target date for build completion. Build will be overdue after this date."
msgstr ""
-#: build/models.py:290 order/models.py:331
+#: build/models.py:290 order/models.py:336
#: templates/js/translated/build.js:2558
msgid "Completion Date"
msgstr ""
@@ -799,7 +798,7 @@ msgid "User who issued this build order"
msgstr ""
#: build/models.py:313 build/templates/build/build_base.html:190
-#: build/templates/build/detail.html:115 order/models.py:151
+#: build/templates/build/detail.html:115 order/models.py:152
#: order/templates/order/order_base.html:176
#: order/templates/order/sales_order_base.html:183 part/models.py:936
#: report/templates/report/inventree_build_order_base.html:159
@@ -822,20 +821,20 @@ msgstr ""
#: build/models.py:324 build/serializers.py:374
#: build/templates/build/sidebar.html:21 company/models.py:134
#: company/models.py:519 company/templates/company/sidebar.html:25
-#: order/models.py:155 order/models.py:918 order/models.py:1213
+#: order/models.py:156 order/models.py:934 order/models.py:1229
#: order/templates/order/po_sidebar.html:11
#: order/templates/order/so_sidebar.html:17 part/models.py:921
#: part/templates/part/part_sidebar.html:59
#: report/templates/report/inventree_build_order_base.html:173
-#: stock/models.py:713 stock/models.py:1985 stock/models.py:2093
+#: stock/models.py:713 stock/models.py:1989 stock/models.py:2097
#: stock/serializers.py:315 stock/serializers.py:444 stock/serializers.py:486
-#: stock/serializers.py:772 stock/serializers.py:871 stock/serializers.py:1003
+#: stock/serializers.py:759 stock/serializers.py:858 stock/serializers.py:990
#: stock/templates/stock/stock_sidebar.html:25
-#: templates/js/translated/barcode.js:100 templates/js/translated/bom.js:1044
-#: templates/js/translated/company.js:962 templates/js/translated/order.js:2040
+#: templates/js/translated/barcode.js:100 templates/js/translated/bom.js:1038
+#: templates/js/translated/company.js:947 templates/js/translated/order.js:2040
#: templates/js/translated/order.js:2191 templates/js/translated/order.js:2687
#: templates/js/translated/order.js:3632 templates/js/translated/order.js:4030
-#: templates/js/translated/stock.js:1307 templates/js/translated/stock.js:1916
+#: templates/js/translated/stock.js:1317 templates/js/translated/stock.js:1926
msgid "Notes"
msgstr ""
@@ -855,44 +854,44 @@ msgstr ""
msgid "Build output does not match Build Order"
msgstr ""
-#: build/models.py:1108
+#: build/models.py:1111
msgid "Build item must specify a build output, as master part is marked as trackable"
msgstr ""
-#: build/models.py:1117
+#: build/models.py:1120
#, python-brace-format
msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})"
msgstr ""
-#: build/models.py:1127
+#: build/models.py:1130
msgid "Stock item is over-allocated"
msgstr ""
-#: build/models.py:1133 order/models.py:1372
+#: build/models.py:1136 order/models.py:1388
msgid "Allocation quantity must be greater than zero"
msgstr ""
-#: build/models.py:1139
+#: build/models.py:1142
msgid "Quantity must be 1 for serialized stock"
msgstr ""
-#: build/models.py:1196
+#: build/models.py:1199
msgid "Selected stock item not found in BOM"
msgstr ""
-#: build/models.py:1265 stock/templates/stock/item_base.html:177
+#: build/models.py:1268 stock/templates/stock/item_base.html:177
#: templates/InvenTree/search.html:137 templates/js/translated/build.js:2454
#: templates/navbar.html:38
msgid "Build"
msgstr ""
-#: build/models.py:1266
+#: build/models.py:1269
msgid "Build to allocate parts"
msgstr ""
-#: build/models.py:1282 build/serializers.py:603 order/serializers.py:994
-#: order/serializers.py:1015 stock/serializers.py:382 stock/serializers.py:703
-#: stock/serializers.py:829 stock/templates/stock/item_base.html:10
+#: build/models.py:1285 build/serializers.py:603 order/serializers.py:996
+#: order/serializers.py:1017 stock/serializers.py:382 stock/serializers.py:690
+#: stock/serializers.py:816 stock/templates/stock/item_base.html:10
#: stock/templates/stock/item_base.html:23
#: stock/templates/stock/item_base.html:199
#: templates/js/translated/build.js:738 templates/js/translated/build.js:743
@@ -900,22 +899,22 @@ msgstr ""
#: templates/js/translated/order.js:101 templates/js/translated/order.js:2820
#: templates/js/translated/order.js:3124 templates/js/translated/order.js:3129
#: templates/js/translated/order.js:3224 templates/js/translated/order.js:3314
-#: templates/js/translated/stock.js:532 templates/js/translated/stock.js:697
-#: templates/js/translated/stock.js:2449
+#: templates/js/translated/stock.js:531 templates/js/translated/stock.js:696
+#: templates/js/translated/stock.js:2459
msgid "Stock Item"
msgstr ""
-#: build/models.py:1283
+#: build/models.py:1286
msgid "Source stock item"
msgstr ""
-#: build/models.py:1295 build/serializers.py:183
+#: build/models.py:1298 build/serializers.py:183
#: build/templates/build/build_base.html:82
-#: build/templates/build/detail.html:34 common/models.py:1536
+#: build/templates/build/detail.html:34 common/models.py:1543
#: company/forms.py:36 company/templates/company/supplier_part.html:258
-#: order/models.py:909 order/models.py:1412 order/serializers.py:1134
-#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:68
-#: part/forms.py:83 part/forms.py:98 part/models.py:2561
+#: order/models.py:925 order/models.py:1428 order/serializers.py:1136
+#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:59
+#: part/forms.py:74 part/forms.py:89 part/models.py:2549
#: part/templates/part/detail.html:935 part/templates/part/detail.html:1021
#: part/templates/part/part_pricing.html:16
#: part/templates/part/upload_bom.html:53
@@ -926,8 +925,8 @@ msgstr ""
#: report/templates/report/inventree_test_report_base.html:139
#: stock/serializers.py:279 stock/templates/stock/item_base.html:292
#: stock/templates/stock/item_base.html:300
-#: templates/js/translated/barcode.js:437 templates/js/translated/bom.js:689
-#: templates/js/translated/bom.js:866 templates/js/translated/build.js:422
+#: templates/js/translated/barcode.js:437 templates/js/translated/bom.js:691
+#: templates/js/translated/bom.js:860 templates/js/translated/build.js:422
#: templates/js/translated/build.js:574 templates/js/translated/build.js:765
#: templates/js/translated/build.js:1175 templates/js/translated/build.js:1673
#: templates/js/translated/build.js:2086
@@ -937,23 +936,23 @@ msgstr ""
#: templates/js/translated/order.js:2821 templates/js/translated/order.js:3143
#: templates/js/translated/order.js:3231 templates/js/translated/order.js:3320
#: templates/js/translated/order.js:3454 templates/js/translated/order.js:3965
-#: templates/js/translated/part.js:967 templates/js/translated/part.js:1969
-#: templates/js/translated/part.js:2200 templates/js/translated/part.js:2234
-#: templates/js/translated/part.js:2312 templates/js/translated/stock.js:403
-#: templates/js/translated/stock.js:557 templates/js/translated/stock.js:727
-#: templates/js/translated/stock.js:2498 templates/js/translated/stock.js:2583
+#: templates/js/translated/part.js:1011 templates/js/translated/part.js:2065
+#: templates/js/translated/part.js:2296 templates/js/translated/part.js:2330
+#: templates/js/translated/part.js:2408 templates/js/translated/stock.js:402
+#: templates/js/translated/stock.js:556 templates/js/translated/stock.js:726
+#: templates/js/translated/stock.js:2508 templates/js/translated/stock.js:2593
msgid "Quantity"
msgstr ""
-#: build/models.py:1296
+#: build/models.py:1299
msgid "Stock quantity to allocate to build"
msgstr ""
-#: build/models.py:1304
+#: build/models.py:1307
msgid "Install into"
msgstr ""
-#: build/models.py:1305
+#: build/models.py:1308
msgid "Destination stock item"
msgstr ""
@@ -982,9 +981,9 @@ msgstr ""
msgid "Enter quantity for build output"
msgstr ""
-#: build/serializers.py:198 build/serializers.py:623 order/models.py:363
-#: order/serializers.py:280 order/serializers.py:435 part/serializers.py:512
-#: part/serializers.py:956 stock/models.py:470 stock/models.py:1239
+#: build/serializers.py:198 build/serializers.py:623 order/models.py:368
+#: order/serializers.py:280 order/serializers.py:435 part/serializers.py:514
+#: part/serializers.py:958 stock/models.py:470 stock/models.py:1239
#: stock/serializers.py:288
msgid "Quantity must be greater than zero"
msgstr ""
@@ -997,9 +996,9 @@ msgstr ""
msgid "Integer quantity required, as the bill of materials contains trackable parts"
msgstr ""
-#: build/serializers.py:222 order/serializers.py:448 order/serializers.py:1138
+#: build/serializers.py:222 order/serializers.py:448 order/serializers.py:1140
#: stock/serializers.py:297 templates/js/translated/order.js:1186
-#: templates/js/translated/stock.js:238 templates/js/translated/stock.js:404
+#: templates/js/translated/stock.js:237 templates/js/translated/stock.js:403
msgid "Serial Numbers"
msgstr ""
@@ -1015,7 +1014,7 @@ msgstr ""
msgid "Automatically allocate required items with matching serial numbers"
msgstr ""
-#: build/serializers.py:268 stock/api.py:552
+#: build/serializers.py:268 stock/api.py:553
msgid "The following serial numbers already exist"
msgstr ""
@@ -1025,16 +1024,16 @@ msgstr ""
#: build/serializers.py:356 order/serializers.py:421 order/serializers.py:525
#: stock/serializers.py:308 stock/serializers.py:439 stock/serializers.py:481
-#: stock/serializers.py:864 stock/serializers.py:1097
+#: stock/serializers.py:851 stock/serializers.py:1084
#: stock/templates/stock/item_base.html:390
#: templates/js/translated/barcode.js:436
#: templates/js/translated/barcode.js:618 templates/js/translated/build.js:750
#: templates/js/translated/build.js:1685 templates/js/translated/order.js:1213
#: templates/js/translated/order.js:3136 templates/js/translated/order.js:3239
#: templates/js/translated/order.js:3247 templates/js/translated/order.js:3328
-#: templates/js/translated/part.js:180 templates/js/translated/stock.js:533
-#: templates/js/translated/stock.js:698 templates/js/translated/stock.js:905
-#: templates/js/translated/stock.js:1787 templates/js/translated/stock.js:2390
+#: templates/js/translated/part.js:180 templates/js/translated/stock.js:532
+#: templates/js/translated/stock.js:697 templates/js/translated/stock.js:904
+#: templates/js/translated/stock.js:1797 templates/js/translated/stock.js:2400
msgid "Location"
msgstr ""
@@ -1043,12 +1042,12 @@ msgid "Location for completed build outputs"
msgstr ""
#: build/serializers.py:363 build/templates/build/build_base.html:142
-#: build/templates/build/detail.html:62 order/models.py:654
+#: build/templates/build/detail.html:62 order/models.py:670
#: order/serializers.py:458 stock/templates/stock/item_base.html:423
#: templates/js/translated/barcode.js:182 templates/js/translated/build.js:2510
#: templates/js/translated/order.js:1320 templates/js/translated/order.js:1660
-#: templates/js/translated/order.js:2481 templates/js/translated/stock.js:1762
-#: templates/js/translated/stock.js:2467 templates/js/translated/stock.js:2599
+#: templates/js/translated/order.js:2481 templates/js/translated/stock.js:1772
+#: templates/js/translated/stock.js:2477 templates/js/translated/stock.js:2609
msgid "Status"
msgstr ""
@@ -1108,8 +1107,8 @@ msgstr ""
msgid "No build outputs have been created for this build order"
msgstr ""
-#: build/serializers.py:535 build/serializers.py:580 part/models.py:2679
-#: part/models.py:2813
+#: build/serializers.py:535 build/serializers.py:580 part/models.py:2667
+#: part/models.py:2801
msgid "BOM Item"
msgstr ""
@@ -1125,11 +1124,11 @@ msgstr ""
msgid "bom_item.part must point to the same part as the build order"
msgstr ""
-#: build/serializers.py:609 stock/serializers.py:716
+#: build/serializers.py:609 stock/serializers.py:703
msgid "Item must be in stock"
msgstr ""
-#: build/serializers.py:667 order/serializers.py:1052
+#: build/serializers.py:667 order/serializers.py:1054
#, python-brace-format
msgid "Available quantity ({q}) exceeded"
msgstr ""
@@ -1146,7 +1145,7 @@ msgstr ""
msgid "This stock item has already been allocated to this build output"
msgstr ""
-#: build/serializers.py:708 order/serializers.py:1298
+#: build/serializers.py:708 order/serializers.py:1300
msgid "Allocation items must be provided"
msgstr ""
@@ -1178,10 +1177,19 @@ msgstr ""
msgid "Allow allocation of substitute parts"
msgstr ""
-#: build/tasks.py:96
+#: build/tasks.py:100
msgid "Stock required for build order"
msgstr ""
+#: build/tasks.py:118
+msgid "Overdue Build Order"
+msgstr ""
+
+#: build/tasks.py:123
+#, python-brace-format
+msgid "Build order {bo} is now overdue"
+msgstr ""
+
#: build/templates/build/build_base.html:39
#: order/templates/order/order_base.html:28
#: order/templates/order/sales_order_base.html:38
@@ -1244,13 +1252,13 @@ msgid "Stock has not been fully allocated to this Build Order"
msgstr ""
#: build/templates/build/build_base.html:151
-#: build/templates/build/detail.html:131 order/models.py:922
+#: build/templates/build/detail.html:131 order/models.py:938
#: order/templates/order/order_base.html:162
#: order/templates/order/sales_order_base.html:164
#: report/templates/report/inventree_build_order_base.html:126
#: templates/js/translated/build.js:2550 templates/js/translated/order.js:1677
#: templates/js/translated/order.js:1987 templates/js/translated/order.js:2497
-#: templates/js/translated/order.js:3517 templates/js/translated/part.js:971
+#: templates/js/translated/order.js:3517 templates/js/translated/part.js:1015
msgid "Target Date"
msgstr ""
@@ -1277,13 +1285,14 @@ msgid "Completed"
msgstr ""
#: build/templates/build/build_base.html:176
-#: build/templates/build/detail.html:94 order/models.py:1100
-#: order/models.py:1185 order/models.py:1320
+#: build/templates/build/detail.html:94 order/models.py:1116
+#: order/models.py:1201 order/models.py:1336
#: order/templates/order/sales_order_base.html:9
#: order/templates/order/sales_order_base.html:28
#: report/templates/report/inventree_build_order_base.html:136
#: report/templates/report/inventree_so_report.html:77
#: stock/templates/stock/item_base.html:370
+#: templates/email/overdue_sales_order.html:15
#: templates/js/translated/order.js:2436
msgid "Sales Order"
msgstr ""
@@ -1319,7 +1328,7 @@ msgstr ""
msgid "Stock can be taken from any available location."
msgstr ""
-#: build/templates/build/detail.html:49 order/models.py:1034
+#: build/templates/build/detail.html:49 order/models.py:1050
#: templates/js/translated/order.js:1321 templates/js/translated/order.js:2029
msgid "Destination"
msgstr ""
@@ -1336,8 +1345,8 @@ msgstr ""
#: stock/templates/stock/item_base.html:170
#: templates/js/translated/build.js:1179
#: templates/js/translated/model_renderers.js:112
-#: templates/js/translated/stock.js:971 templates/js/translated/stock.js:1776
-#: templates/js/translated/stock.js:2606
+#: templates/js/translated/stock.js:970 templates/js/translated/stock.js:1786
+#: templates/js/translated/stock.js:2616
#: templates/js/translated/table_filters.js:151
#: templates/js/translated/table_filters.js:242
msgid "Batch"
@@ -1716,7 +1725,7 @@ msgstr ""
msgid "Copy category parameter templates when creating a part"
msgstr ""
-#: common/models.py:820 part/models.py:2372 report/models.py:157
+#: common/models.py:820 part/models.py:2360 report/models.py:157
#: templates/js/translated/table_filters.js:38
#: templates/js/translated/table_filters.js:444
msgid "Template"
@@ -1726,7 +1735,7 @@ msgstr ""
msgid "Parts are templates by default"
msgstr ""
-#: common/models.py:827 part/models.py:884 templates/js/translated/bom.js:1390
+#: common/models.py:827 part/models.py:884 templates/js/translated/bom.js:1384
#: templates/js/translated/table_filters.js:168
#: templates/js/translated/table_filters.js:460
msgid "Assembly"
@@ -1880,7 +1889,7 @@ msgid "Default page size for PDF reports"
msgstr ""
#: common/models.py:968
-msgid "Test Reports"
+msgid "Enable Test Reports"
msgstr ""
#: common/models.py:969
@@ -1888,568 +1897,576 @@ msgid "Enable generation of test reports"
msgstr ""
#: common/models.py:975
-msgid "Batch Code Template"
+msgid "Attach Test Reports"
msgstr ""
#: common/models.py:976
-msgid "Template for generating default batch codes for stock items"
-msgstr ""
-
-#: common/models.py:981
-msgid "Stock Expiry"
+msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item"
msgstr ""
#: common/models.py:982
-msgid "Enable stock expiry functionality"
+msgid "Batch Code Template"
+msgstr ""
+
+#: common/models.py:983
+msgid "Template for generating default batch codes for stock items"
msgstr ""
#: common/models.py:988
-msgid "Sell Expired Stock"
+msgid "Stock Expiry"
msgstr ""
#: common/models.py:989
-msgid "Allow sale of expired stock"
+msgid "Enable stock expiry functionality"
msgstr ""
#: common/models.py:995
-msgid "Stock Stale Time"
+msgid "Sell Expired Stock"
msgstr ""
#: common/models.py:996
-msgid "Number of days stock items are considered stale before expiring"
+msgid "Allow sale of expired stock"
msgstr ""
-#: common/models.py:998
-msgid "days"
+#: common/models.py:1002
+msgid "Stock Stale Time"
msgstr ""
#: common/models.py:1003
-msgid "Build Expired Stock"
+msgid "Number of days stock items are considered stale before expiring"
msgstr ""
-#: common/models.py:1004
-msgid "Allow building with expired stock"
+#: common/models.py:1005
+msgid "days"
msgstr ""
#: common/models.py:1010
-msgid "Stock Ownership Control"
+msgid "Build Expired Stock"
msgstr ""
#: common/models.py:1011
-msgid "Enable ownership control over stock locations and items"
+msgid "Allow building with expired stock"
msgstr ""
#: common/models.py:1017
-msgid "Build Order Reference Prefix"
+msgid "Stock Ownership Control"
msgstr ""
#: common/models.py:1018
-msgid "Prefix value for build order reference"
-msgstr ""
-
-#: common/models.py:1023
-msgid "Build Order Reference Regex"
+msgid "Enable ownership control over stock locations and items"
msgstr ""
#: common/models.py:1024
+msgid "Build Order Reference Prefix"
+msgstr ""
+
+#: common/models.py:1025
+msgid "Prefix value for build order reference"
+msgstr ""
+
+#: common/models.py:1030
+msgid "Build Order Reference Regex"
+msgstr ""
+
+#: common/models.py:1031
msgid "Regular expression pattern for matching build order reference"
msgstr ""
-#: common/models.py:1028
+#: common/models.py:1035
msgid "Sales Order Reference Prefix"
msgstr ""
-#: common/models.py:1029
+#: common/models.py:1036
msgid "Prefix value for sales order reference"
msgstr ""
-#: common/models.py:1034
+#: common/models.py:1041
msgid "Sales Order Default Shipment"
msgstr ""
-#: common/models.py:1035
+#: common/models.py:1042
msgid "Enable creation of default shipment with sales orders"
msgstr ""
-#: common/models.py:1041
+#: common/models.py:1048
msgid "Purchase Order Reference Prefix"
msgstr ""
-#: common/models.py:1042
+#: common/models.py:1049
msgid "Prefix value for purchase order reference"
msgstr ""
-#: common/models.py:1048
+#: common/models.py:1055
msgid "Enable password forgot"
msgstr ""
-#: common/models.py:1049
+#: common/models.py:1056
msgid "Enable password forgot function on the login pages"
msgstr ""
-#: common/models.py:1055
+#: common/models.py:1062
msgid "Enable registration"
msgstr ""
-#: common/models.py:1056
+#: common/models.py:1063
msgid "Enable self-registration for users on the login pages"
msgstr ""
-#: common/models.py:1062
+#: common/models.py:1069
msgid "Enable SSO"
msgstr ""
-#: common/models.py:1063
+#: common/models.py:1070
msgid "Enable SSO on the login pages"
msgstr ""
-#: common/models.py:1069
+#: common/models.py:1076
msgid "Email required"
msgstr ""
-#: common/models.py:1070
+#: common/models.py:1077
msgid "Require user to supply mail on signup"
msgstr ""
-#: common/models.py:1076
+#: common/models.py:1083
msgid "Auto-fill SSO users"
msgstr ""
-#: common/models.py:1077
+#: common/models.py:1084
msgid "Automatically fill out user-details from SSO account-data"
msgstr ""
-#: common/models.py:1083
+#: common/models.py:1090
msgid "Mail twice"
msgstr ""
-#: common/models.py:1084
+#: common/models.py:1091
msgid "On signup ask users twice for their mail"
msgstr ""
-#: common/models.py:1090
+#: common/models.py:1097
msgid "Password twice"
msgstr ""
-#: common/models.py:1091
+#: common/models.py:1098
msgid "On signup ask users twice for their password"
msgstr ""
-#: common/models.py:1097
+#: common/models.py:1104
msgid "Group on signup"
msgstr ""
-#: common/models.py:1098
+#: common/models.py:1105
msgid "Group to which new users are assigned on registration"
msgstr ""
-#: common/models.py:1104
+#: common/models.py:1111
msgid "Enforce MFA"
msgstr ""
-#: common/models.py:1105
+#: common/models.py:1112
msgid "Users must use multifactor security."
msgstr ""
-#: common/models.py:1111
+#: common/models.py:1118
msgid "Check plugins on startup"
msgstr ""
-#: common/models.py:1112
+#: common/models.py:1119
msgid "Check that all plugins are installed on startup - enable in container enviroments"
msgstr ""
-#: common/models.py:1120
+#: common/models.py:1127
msgid "Enable URL integration"
msgstr ""
-#: common/models.py:1121
+#: common/models.py:1128
msgid "Enable plugins to add URL routes"
msgstr ""
-#: common/models.py:1128
+#: common/models.py:1135
msgid "Enable navigation integration"
msgstr ""
-#: common/models.py:1129
+#: common/models.py:1136
msgid "Enable plugins to integrate into navigation"
msgstr ""
-#: common/models.py:1136
+#: common/models.py:1143
msgid "Enable app integration"
msgstr ""
-#: common/models.py:1137
+#: common/models.py:1144
msgid "Enable plugins to add apps"
msgstr ""
-#: common/models.py:1144
+#: common/models.py:1151
msgid "Enable schedule integration"
msgstr ""
-#: common/models.py:1145
+#: common/models.py:1152
msgid "Enable plugins to run scheduled tasks"
msgstr ""
-#: common/models.py:1152
+#: common/models.py:1159
msgid "Enable event integration"
msgstr ""
-#: common/models.py:1153
+#: common/models.py:1160
msgid "Enable plugins to respond to internal events"
msgstr ""
-#: common/models.py:1170 common/models.py:1492
+#: common/models.py:1177 common/models.py:1499
msgid "Settings key (must be unique - case insensitive"
msgstr ""
-#: common/models.py:1192
+#: common/models.py:1199
msgid "Show subscribed parts"
msgstr ""
-#: common/models.py:1193
+#: common/models.py:1200
msgid "Show subscribed parts on the homepage"
msgstr ""
-#: common/models.py:1199
+#: common/models.py:1206
msgid "Show subscribed categories"
msgstr ""
-#: common/models.py:1200
+#: common/models.py:1207
msgid "Show subscribed part categories on the homepage"
msgstr ""
-#: common/models.py:1206
+#: common/models.py:1213
msgid "Show latest parts"
msgstr ""
-#: common/models.py:1207
+#: common/models.py:1214
msgid "Show latest parts on the homepage"
msgstr ""
-#: common/models.py:1213
+#: common/models.py:1220
msgid "Recent Part Count"
msgstr ""
-#: common/models.py:1214
+#: common/models.py:1221
msgid "Number of recent parts to display on index page"
msgstr ""
-#: common/models.py:1220
+#: common/models.py:1227
msgid "Show unvalidated BOMs"
msgstr ""
-#: common/models.py:1221
+#: common/models.py:1228
msgid "Show BOMs that await validation on the homepage"
msgstr ""
-#: common/models.py:1227
+#: common/models.py:1234
msgid "Show recent stock changes"
msgstr ""
-#: common/models.py:1228
+#: common/models.py:1235
msgid "Show recently changed stock items on the homepage"
msgstr ""
-#: common/models.py:1234
+#: common/models.py:1241
msgid "Recent Stock Count"
msgstr ""
-#: common/models.py:1235
+#: common/models.py:1242
msgid "Number of recent stock items to display on index page"
msgstr ""
-#: common/models.py:1241
+#: common/models.py:1248
msgid "Show low stock"
msgstr ""
-#: common/models.py:1242
+#: common/models.py:1249
msgid "Show low stock items on the homepage"
msgstr ""
-#: common/models.py:1248
+#: common/models.py:1255
msgid "Show depleted stock"
msgstr ""
-#: common/models.py:1249
+#: common/models.py:1256
msgid "Show depleted stock items on the homepage"
msgstr ""
-#: common/models.py:1255
+#: common/models.py:1262
msgid "Show needed stock"
msgstr ""
-#: common/models.py:1256
+#: common/models.py:1263
msgid "Show stock items needed for builds on the homepage"
msgstr ""
-#: common/models.py:1262
+#: common/models.py:1269
msgid "Show expired stock"
msgstr ""
-#: common/models.py:1263
+#: common/models.py:1270
msgid "Show expired stock items on the homepage"
msgstr ""
-#: common/models.py:1269
+#: common/models.py:1276
msgid "Show stale stock"
msgstr ""
-#: common/models.py:1270
+#: common/models.py:1277
msgid "Show stale stock items on the homepage"
msgstr ""
-#: common/models.py:1276
+#: common/models.py:1283
msgid "Show pending builds"
msgstr ""
-#: common/models.py:1277
+#: common/models.py:1284
msgid "Show pending builds on the homepage"
msgstr ""
-#: common/models.py:1283
+#: common/models.py:1290
msgid "Show overdue builds"
msgstr ""
-#: common/models.py:1284
+#: common/models.py:1291
msgid "Show overdue builds on the homepage"
msgstr ""
-#: common/models.py:1290
+#: common/models.py:1297
msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:1291
+#: common/models.py:1298
msgid "Show outstanding POs on the homepage"
msgstr ""
-#: common/models.py:1297
+#: common/models.py:1304
msgid "Show overdue POs"
msgstr ""
-#: common/models.py:1298
+#: common/models.py:1305
msgid "Show overdue POs on the homepage"
msgstr ""
-#: common/models.py:1304
+#: common/models.py:1311
msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:1305
+#: common/models.py:1312
msgid "Show outstanding SOs on the homepage"
msgstr ""
-#: common/models.py:1311
+#: common/models.py:1318
msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:1312
+#: common/models.py:1319
msgid "Show overdue SOs on the homepage"
msgstr ""
-#: common/models.py:1317
+#: common/models.py:1324
msgid "Enable label printing"
msgstr ""
-#: common/models.py:1318
+#: common/models.py:1325
msgid "Enable label printing from the web interface"
msgstr ""
-#: common/models.py:1324
+#: common/models.py:1331
msgid "Inline label display"
msgstr ""
-#: common/models.py:1325
+#: common/models.py:1332
msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:1331
+#: common/models.py:1338
msgid "Inline report display"
msgstr ""
-#: common/models.py:1332
+#: common/models.py:1339
msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:1338
+#: common/models.py:1345
msgid "Search Parts"
msgstr ""
-#: common/models.py:1339
+#: common/models.py:1346
msgid "Display parts in search preview window"
msgstr ""
-#: common/models.py:1345
+#: common/models.py:1352
msgid "Seach Supplier Parts"
msgstr ""
-#: common/models.py:1346
+#: common/models.py:1353
msgid "Display supplier parts in search preview window"
msgstr ""
-#: common/models.py:1352
+#: common/models.py:1359
msgid "Search Manufacturer Parts"
msgstr ""
-#: common/models.py:1353
+#: common/models.py:1360
msgid "Display manufacturer parts in search preview window"
msgstr ""
-#: common/models.py:1359
+#: common/models.py:1366
msgid "Hide Inactive Parts"
msgstr ""
-#: common/models.py:1360
+#: common/models.py:1367
msgid "Excluded inactive parts from search preview window"
msgstr ""
-#: common/models.py:1366
+#: common/models.py:1373
msgid "Search Categories"
msgstr ""
-#: common/models.py:1367
+#: common/models.py:1374
msgid "Display part categories in search preview window"
msgstr ""
-#: common/models.py:1373
+#: common/models.py:1380
msgid "Search Stock"
msgstr ""
-#: common/models.py:1374
+#: common/models.py:1381
msgid "Display stock items in search preview window"
msgstr ""
-#: common/models.py:1380
+#: common/models.py:1387
msgid "Hide Unavailable Stock Items"
msgstr ""
-#: common/models.py:1381
+#: common/models.py:1388
msgid "Exclude stock items which are not available from the search preview window"
msgstr ""
-#: common/models.py:1387
+#: common/models.py:1394
msgid "Search Locations"
msgstr ""
-#: common/models.py:1388
+#: common/models.py:1395
msgid "Display stock locations in search preview window"
msgstr ""
-#: common/models.py:1394
+#: common/models.py:1401
msgid "Search Companies"
msgstr ""
-#: common/models.py:1395
+#: common/models.py:1402
msgid "Display companies in search preview window"
msgstr ""
-#: common/models.py:1401
+#: common/models.py:1408
msgid "Search Purchase Orders"
msgstr ""
-#: common/models.py:1402
+#: common/models.py:1409
msgid "Display purchase orders in search preview window"
msgstr ""
-#: common/models.py:1408
+#: common/models.py:1415
msgid "Exclude Inactive Purchase Orders"
msgstr ""
-#: common/models.py:1409
+#: common/models.py:1416
msgid "Exclude inactive purchase orders from search preview window"
msgstr ""
-#: common/models.py:1415
+#: common/models.py:1422
msgid "Search Sales Orders"
msgstr ""
-#: common/models.py:1416
+#: common/models.py:1423
msgid "Display sales orders in search preview window"
msgstr ""
-#: common/models.py:1422
+#: common/models.py:1429
msgid "Exclude Inactive Sales Orders"
msgstr ""
-#: common/models.py:1423
+#: common/models.py:1430
msgid "Exclude inactive sales orders from search preview window"
msgstr ""
-#: common/models.py:1429
+#: common/models.py:1436
msgid "Search Preview Results"
msgstr ""
-#: common/models.py:1430
+#: common/models.py:1437
msgid "Number of results to show in each section of the search preview window"
msgstr ""
-#: common/models.py:1436
+#: common/models.py:1443
msgid "Show Quantity in Forms"
msgstr ""
-#: common/models.py:1437
+#: common/models.py:1444
msgid "Display available part quantity in some forms"
msgstr ""
-#: common/models.py:1443
+#: common/models.py:1450
msgid "Escape Key Closes Forms"
msgstr ""
-#: common/models.py:1444
+#: common/models.py:1451
msgid "Use the escape key to close modal forms"
msgstr ""
-#: common/models.py:1450
+#: common/models.py:1457
msgid "Fixed Navbar"
msgstr ""
-#: common/models.py:1451
+#: common/models.py:1458
msgid "The navbar position is fixed to the top of the screen"
msgstr ""
-#: common/models.py:1457
+#: common/models.py:1464
msgid "Date Format"
msgstr ""
-#: common/models.py:1458
+#: common/models.py:1465
msgid "Preferred format for displaying dates"
msgstr ""
-#: common/models.py:1472 part/templates/part/detail.html:39
+#: common/models.py:1479 part/templates/part/detail.html:39
msgid "Part Scheduling"
msgstr ""
-#: common/models.py:1473
+#: common/models.py:1480
msgid "Display part scheduling information"
msgstr ""
-#: common/models.py:1537 company/forms.py:37
+#: common/models.py:1544 company/forms.py:37
msgid "Price break quantity"
msgstr ""
-#: common/models.py:1544 company/serializers.py:288
-#: company/templates/company/supplier_part.html:263 order/models.py:949
-#: templates/js/translated/part.js:998 templates/js/translated/part.js:1974
+#: common/models.py:1551 company/serializers.py:290
+#: company/templates/company/supplier_part.html:263 order/models.py:965
+#: templates/js/translated/part.js:1042 templates/js/translated/part.js:2070
msgid "Price"
msgstr ""
-#: common/models.py:1545
+#: common/models.py:1552
msgid "Unit price at specified quantity"
msgstr ""
-#: common/models.py:1705 common/models.py:1883
+#: common/models.py:1712 common/models.py:1890
msgid "Endpoint"
msgstr ""
-#: common/models.py:1706
+#: common/models.py:1713
msgid "Endpoint at which this webhook is received"
msgstr ""
-#: common/models.py:1715
+#: common/models.py:1722
msgid "Name for this webhook"
msgstr ""
-#: common/models.py:1720 part/models.py:911 plugin/models.py:99
+#: common/models.py:1727 part/models.py:911 plugin/models.py:99
#: templates/js/translated/table_filters.js:34
#: templates/js/translated/table_filters.js:96
#: templates/js/translated/table_filters.js:308
@@ -2457,79 +2474,89 @@ msgstr ""
msgid "Active"
msgstr ""
-#: common/models.py:1721
+#: common/models.py:1728
msgid "Is this webhook active"
msgstr ""
-#: common/models.py:1735
+#: common/models.py:1742
msgid "Token"
msgstr ""
-#: common/models.py:1736
+#: common/models.py:1743
msgid "Token for access"
msgstr ""
-#: common/models.py:1743
+#: common/models.py:1750
msgid "Secret"
msgstr ""
-#: common/models.py:1744
+#: common/models.py:1751
msgid "Shared secret for HMAC"
msgstr ""
-#: common/models.py:1850
+#: common/models.py:1857
msgid "Message ID"
msgstr ""
-#: common/models.py:1851
+#: common/models.py:1858
msgid "Unique identifier for this message"
msgstr ""
-#: common/models.py:1859
+#: common/models.py:1866
msgid "Host"
msgstr ""
-#: common/models.py:1860
+#: common/models.py:1867
msgid "Host from which this message was received"
msgstr ""
-#: common/models.py:1867
+#: common/models.py:1874
msgid "Header"
msgstr ""
-#: common/models.py:1868
+#: common/models.py:1875
msgid "Header of this message"
msgstr ""
-#: common/models.py:1874
+#: common/models.py:1881
msgid "Body"
msgstr ""
-#: common/models.py:1875
+#: common/models.py:1882
msgid "Body of this message"
msgstr ""
-#: common/models.py:1884
+#: common/models.py:1891
msgid "Endpoint on which this message was received"
msgstr ""
-#: common/models.py:1889
+#: common/models.py:1896
msgid "Worked on"
msgstr ""
-#: common/models.py:1890
+#: common/models.py:1897
msgid "Was the work on this message finished?"
msgstr ""
+#: common/notifications.py:292
+#, python-brace-format
+msgid "New {verbose_name}"
+msgstr ""
+
+#: common/notifications.py:294
+#, python-brace-format
+msgid "A new {verbose_name} has been created and ,assigned to you"
+msgstr ""
+
#: common/views.py:87 order/templates/order/purchase_order_detail.html:23
-#: order/views.py:102 part/views.py:191
+#: order/views.py:102 part/views.py:116
#: templates/patterns/wizard/upload.html:37
msgid "Upload File"
msgstr ""
#: common/views.py:88 order/views.py:103
#: part/templates/part/import_wizard/ajax_match_fields.html:45
-#: part/views.py:192 templates/patterns/wizard/match_fields.html:51
+#: part/views.py:117 templates/patterns/wizard/match_fields.html:51
msgid "Match Fields"
msgstr ""
@@ -2545,19 +2572,19 @@ msgstr ""
msgid "Parts imported"
msgstr ""
-#: common/views.py:507 order/templates/order/order_wizard/match_parts.html:19
+#: common/views.py:511 order/templates/order/order_wizard/match_parts.html:19
#: part/templates/part/import_wizard/match_references.html:19
#: templates/patterns/wizard/match_fields.html:26
#: templates/patterns/wizard/upload.html:35
msgid "Previous Step"
msgstr ""
-#: company/forms.py:16 part/forms.py:21
+#: company/forms.py:16 part/forms.py:18
#: templates/InvenTree/settings/mixins/urls.html:14
msgid "URL"
msgstr ""
-#: company/forms.py:17 part/forms.py:22
+#: company/forms.py:17 part/forms.py:19
msgid "Image URL"
msgstr ""
@@ -2571,7 +2598,7 @@ msgstr ""
#: company/models.py:104 company/templates/company/company_base.html:100
#: templates/InvenTree/settings/plugin_settings.html:55
-#: templates/js/translated/company.js:405
+#: templates/js/translated/company.js:399
msgid "Website"
msgstr ""
@@ -2644,9 +2671,9 @@ msgstr ""
msgid "Does this company manufacture parts?"
msgstr ""
-#: company/models.py:144 company/serializers.py:294
-#: company/templates/company/company_base.html:106 part/serializers.py:137
-#: part/serializers.py:168 stock/serializers.py:162
+#: company/models.py:144 company/serializers.py:296
+#: company/templates/company/company_base.html:106 part/serializers.py:139
+#: part/serializers.py:170 stock/serializers.py:162
msgid "Currency"
msgstr ""
@@ -2667,10 +2694,10 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:90
#: company/templates/company/supplier_part.html:103
#: stock/templates/stock/item_base.html:212
-#: templates/js/translated/company.js:389
-#: templates/js/translated/company.js:488
-#: templates/js/translated/company.js:632
-#: templates/js/translated/company.js:917 templates/js/translated/part.js:235
+#: templates/js/translated/company.js:383
+#: templates/js/translated/company.js:484
+#: templates/js/translated/company.js:617
+#: templates/js/translated/company.js:902 templates/js/translated/part.js:235
#: templates/js/translated/table_filters.js:411
msgid "Manufacturer"
msgstr ""
@@ -2681,11 +2708,11 @@ msgstr ""
#: company/models.py:266 company/templates/company/manufacturer_part.html:101
#: company/templates/company/supplier_part.html:111
-#: templates/js/translated/company.js:255
-#: templates/js/translated/company.js:487
-#: templates/js/translated/company.js:648
-#: templates/js/translated/company.js:935 templates/js/translated/order.js:1907
-#: templates/js/translated/part.js:246 templates/js/translated/part.js:956
+#: templates/js/translated/company.js:256
+#: templates/js/translated/company.js:483
+#: templates/js/translated/company.js:633
+#: templates/js/translated/company.js:920 templates/js/translated/order.js:1907
+#: templates/js/translated/part.js:246 templates/js/translated/part.js:1000
msgid "MPN"
msgstr ""
@@ -2714,9 +2741,9 @@ msgstr ""
#: company/models.py:361
#: report/templates/report/inventree_test_report_base.html:95
-#: stock/models.py:2080 templates/js/translated/company.js:540
-#: templates/js/translated/company.js:763 templates/js/translated/part.js:776
-#: templates/js/translated/stock.js:1294
+#: stock/models.py:2084 templates/js/translated/company.js:531
+#: templates/js/translated/company.js:748 templates/js/translated/part.js:820
+#: templates/js/translated/stock.js:1304
msgid "Value"
msgstr ""
@@ -2724,10 +2751,10 @@ msgstr ""
msgid "Parameter value"
msgstr ""
-#: company/models.py:368 part/models.py:878 part/models.py:2339
+#: company/models.py:368 part/models.py:878 part/models.py:2327
#: part/templates/part/part_base.html:280
#: templates/InvenTree/settings/settings.html:351
-#: templates/js/translated/company.js:769 templates/js/translated/part.js:782
+#: templates/js/translated/company.js:754 templates/js/translated/part.js:826
msgid "Units"
msgstr ""
@@ -2740,13 +2767,14 @@ msgid "Linked manufacturer part must reference the same base part"
msgstr ""
#: company/models.py:487 company/templates/company/company_base.html:81
-#: company/templates/company/supplier_part.html:87 order/models.py:303
+#: company/templates/company/supplier_part.html:87 order/models.py:308
#: order/templates/order/order_base.html:112 part/bom.py:237 part/bom.py:265
#: stock/templates/stock/item_base.html:229
-#: templates/js/translated/company.js:254
-#: templates/js/translated/company.js:393
-#: templates/js/translated/company.js:891 templates/js/translated/order.js:1643
-#: templates/js/translated/part.js:216 templates/js/translated/part.js:924
+#: templates/email/overdue_purchase_order.html:16
+#: templates/js/translated/company.js:255
+#: templates/js/translated/company.js:387
+#: templates/js/translated/company.js:876 templates/js/translated/order.js:1643
+#: templates/js/translated/part.js:216 templates/js/translated/part.js:968
#: templates/js/translated/table_filters.js:415
msgid "Supplier"
msgstr ""
@@ -2756,9 +2784,9 @@ msgid "Select supplier"
msgstr ""
#: company/models.py:493 company/templates/company/supplier_part.html:97
-#: part/bom.py:238 part/bom.py:266 templates/js/translated/company.js:253
+#: part/bom.py:238 part/bom.py:266 templates/js/translated/company.js:254
#: templates/js/translated/order.js:1894 templates/js/translated/part.js:227
-#: templates/js/translated/part.js:942
+#: templates/js/translated/part.js:986
msgid "SKU"
msgstr ""
@@ -2779,23 +2807,23 @@ msgid "Supplier part description"
msgstr ""
#: company/models.py:518 company/templates/company/supplier_part.html:125
-#: part/models.py:2573 part/templates/part/upload_bom.html:59
+#: part/models.py:2561 part/templates/part/upload_bom.html:59
#: report/templates/report/inventree_po_report.html:92
#: report/templates/report/inventree_so_report.html:93 stock/serializers.py:387
msgid "Note"
msgstr ""
-#: company/models.py:522 part/models.py:1688
+#: company/models.py:522 part/models.py:1683
msgid "base cost"
msgstr ""
-#: company/models.py:522 part/models.py:1688
+#: company/models.py:522 part/models.py:1683
msgid "Minimum charge (e.g. stocking fee)"
msgstr ""
#: company/models.py:524 company/templates/company/supplier_part.html:118
#: stock/models.py:608 stock/templates/stock/item_base.html:245
-#: templates/js/translated/company.js:967 templates/js/translated/stock.js:1912
+#: templates/js/translated/company.js:952 templates/js/translated/stock.js:1922
msgid "Packaging"
msgstr ""
@@ -2803,7 +2831,7 @@ msgstr ""
msgid "Part packaging"
msgstr ""
-#: company/models.py:526 part/models.py:1690
+#: company/models.py:526 part/models.py:1685
msgid "multiple"
msgstr ""
@@ -2825,7 +2853,7 @@ msgstr ""
#: company/templates/company/company_base.html:8
#: company/templates/company/company_base.html:12
-#: templates/InvenTree/search.html:177 templates/js/translated/company.js:378
+#: templates/InvenTree/search.html:177 templates/js/translated/company.js:372
msgid "Company"
msgstr ""
@@ -2843,7 +2871,7 @@ msgid "Edit company information"
msgstr ""
#: company/templates/company/company_base.html:34
-#: templates/js/translated/company.js:321
+#: templates/js/translated/company.js:315
msgid "Edit Company"
msgstr ""
@@ -2866,12 +2894,13 @@ msgstr ""
msgid "Download image from URL"
msgstr ""
-#: company/templates/company/company_base.html:86 order/models.py:649
+#: company/templates/company/company_base.html:86 order/models.py:665
#: order/templates/order/sales_order_base.html:116 stock/models.py:627
-#: stock/models.py:628 stock/serializers.py:758
+#: stock/models.py:628 stock/serializers.py:745
#: stock/templates/stock/item_base.html:401
-#: templates/js/translated/company.js:385 templates/js/translated/order.js:2458
-#: templates/js/translated/stock.js:2431
+#: templates/email/overdue_sales_order.html:16
+#: templates/js/translated/company.js:379 templates/js/translated/order.js:2458
+#: templates/js/translated/stock.js:2441
#: templates/js/translated/table_filters.js:419
msgid "Customer"
msgstr ""
@@ -2999,7 +3028,7 @@ msgid "Supplier List"
msgstr ""
#: company/templates/company/manufacturer_part.html:15 company/views.py:45
-#: part/templates/part/prices.html:170 templates/InvenTree/search.html:179
+#: part/templates/part/prices.html:172 templates/InvenTree/search.html:179
#: templates/navbar.html:49
msgid "Manufacturers"
msgstr ""
@@ -3012,12 +3041,12 @@ msgid "Order part"
msgstr ""
#: company/templates/company/manufacturer_part.html:39
-#: templates/js/translated/company.js:680
+#: templates/js/translated/company.js:665
msgid "Edit manufacturer part"
msgstr ""
#: company/templates/company/manufacturer_part.html:43
-#: templates/js/translated/company.js:681
+#: templates/js/translated/company.js:666
msgid "Delete manufacturer part"
msgstr ""
@@ -3032,7 +3061,7 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:119
#: company/templates/company/supplier_part.html:15 company/views.py:39
-#: part/templates/part/part_sidebar.html:35 part/templates/part/prices.html:166
+#: part/templates/part/part_sidebar.html:35 part/templates/part/prices.html:168
#: templates/InvenTree/search.html:189 templates/navbar.html:48
msgid "Suppliers"
msgstr ""
@@ -3092,18 +3121,18 @@ msgstr ""
#: company/templates/company/supplier_part.html:7
#: company/templates/company/supplier_part.html:24 stock/models.py:592
#: stock/templates/stock/item_base.html:238
-#: templates/js/translated/company.js:907 templates/js/translated/order.js:884
-#: templates/js/translated/stock.js:1869
+#: templates/js/translated/company.js:892 templates/js/translated/order.js:884
+#: templates/js/translated/stock.js:1879
msgid "Supplier Part"
msgstr ""
#: company/templates/company/supplier_part.html:38
-#: templates/js/translated/company.js:980
+#: templates/js/translated/company.js:965
msgid "Edit supplier part"
msgstr ""
#: company/templates/company/supplier_part.html:42
-#: templates/js/translated/company.js:981
+#: templates/js/translated/company.js:966
msgid "Delete supplier part"
msgstr ""
@@ -3123,7 +3152,7 @@ msgstr ""
#: company/templates/company/supplier_part.html:148
#: part/templates/part/detail.html:24 stock/templates/stock/location.html:177
-#: templates/js/translated/stock.js:380
+#: templates/js/translated/stock.js:379
msgid "New Stock Item"
msgstr ""
@@ -3144,7 +3173,7 @@ msgstr ""
#: company/templates/company/supplier_part.html:191
#: company/templates/company/supplier_part.html:305
-#: part/templates/part/prices.html:274 templates/js/translated/part.js:2046
+#: part/templates/part/prices.html:276 templates/js/translated/part.js:2142
msgid "Add Price Break"
msgstr ""
@@ -3153,12 +3182,12 @@ msgid "No price break information found"
msgstr ""
#: company/templates/company/supplier_part.html:231
-#: templates/js/translated/part.js:2056
+#: templates/js/translated/part.js:2152
msgid "Delete Price Break"
msgstr ""
#: company/templates/company/supplier_part.html:245
-#: templates/js/translated/part.js:2070
+#: templates/js/translated/part.js:2166
msgid "Edit Price Break"
msgstr ""
@@ -3180,9 +3209,9 @@ msgstr ""
#: stock/templates/stock/stock_app_base.html:10
#: templates/InvenTree/search.html:151
#: templates/InvenTree/settings/sidebar.html:43
-#: templates/js/translated/bom.js:554 templates/js/translated/part.js:678
-#: templates/js/translated/part.js:1226 templates/js/translated/part.js:1387
-#: templates/js/translated/stock.js:904 templates/js/translated/stock.js:1687
+#: templates/js/translated/bom.js:554 templates/js/translated/part.js:722
+#: templates/js/translated/part.js:1270 templates/js/translated/part.js:1431
+#: templates/js/translated/stock.js:903 templates/js/translated/stock.js:1697
#: templates/navbar.html:31
msgid "Stock"
msgstr ""
@@ -3209,7 +3238,7 @@ msgstr ""
#: stock/templates/stock/location.html:173
#: stock/templates/stock/location_sidebar.html:7
#: templates/InvenTree/search.html:153 templates/js/translated/search.js:223
-#: templates/js/translated/stock.js:2307 users/models.py:39
+#: templates/js/translated/stock.js:2317 users/models.py:39
msgid "Stock Items"
msgstr ""
@@ -3238,20 +3267,20 @@ msgstr ""
msgid "New Company"
msgstr ""
-#: company/views.py:112 part/views.py:576
+#: company/views.py:112 part/views.py:501
msgid "Download Image"
msgstr ""
-#: company/views.py:139 part/views.py:606
+#: company/views.py:139 part/views.py:531
msgid "Image size exceeds maximum allowable size for download"
msgstr ""
-#: company/views.py:146 part/views.py:613
+#: company/views.py:146 part/views.py:538
#, python-brace-format
msgid "Invalid response: {code}"
msgstr ""
-#: company/views.py:155 part/views.py:622
+#: company/views.py:155 part/views.py:547
msgid "Supplied URL is not a valid image file"
msgstr ""
@@ -3320,313 +3349,314 @@ msgstr ""
msgid "Part query filters (comma-separated value of key=value pairs)"
msgstr ""
-#: order/models.py:133
+#: order/models.py:134
msgid "Order description"
msgstr ""
-#: order/models.py:135 order/models.py:1236
+#: order/models.py:136 order/models.py:1252
msgid "Link to external page"
msgstr ""
-#: order/models.py:143
+#: order/models.py:144
msgid "Created By"
msgstr ""
-#: order/models.py:150
+#: order/models.py:151
msgid "User or group responsible for this order"
msgstr ""
-#: order/models.py:155
+#: order/models.py:156
msgid "Order notes"
msgstr ""
-#: order/models.py:289 order/models.py:639
+#: order/models.py:294 order/models.py:655
msgid "Order reference"
msgstr ""
-#: order/models.py:294 order/models.py:654
+#: order/models.py:299 order/models.py:670
msgid "Purchase order status"
msgstr ""
-#: order/models.py:304
+#: order/models.py:309
msgid "Company from which the items are being ordered"
msgstr ""
-#: order/models.py:307 order/templates/order/order_base.html:124
+#: order/models.py:312 order/templates/order/order_base.html:124
#: templates/js/translated/order.js:1652
msgid "Supplier Reference"
msgstr ""
-#: order/models.py:307
+#: order/models.py:312
msgid "Supplier order reference code"
msgstr ""
-#: order/models.py:314
+#: order/models.py:319
msgid "received by"
msgstr ""
-#: order/models.py:319
+#: order/models.py:324
msgid "Issue Date"
msgstr ""
-#: order/models.py:320
+#: order/models.py:325
msgid "Date order was issued"
msgstr ""
-#: order/models.py:325
+#: order/models.py:330
msgid "Target Delivery Date"
msgstr ""
-#: order/models.py:326
+#: order/models.py:331
msgid "Expected date for order delivery. Order will be overdue after this date."
msgstr ""
-#: order/models.py:332
+#: order/models.py:337
msgid "Date order was completed"
msgstr ""
-#: order/models.py:368
+#: order/models.py:373
msgid "Part supplier must match PO supplier"
msgstr ""
-#: order/models.py:512
+#: order/models.py:517
msgid "Quantity must be a positive number"
msgstr ""
-#: order/models.py:650
+#: order/models.py:666
msgid "Company to which the items are being sold"
msgstr ""
-#: order/models.py:656
+#: order/models.py:672
msgid "Customer Reference "
msgstr ""
-#: order/models.py:656
+#: order/models.py:672
msgid "Customer order reference code"
msgstr ""
-#: order/models.py:661
+#: order/models.py:677
msgid "Target date for order completion. Order will be overdue after this date."
msgstr ""
-#: order/models.py:664 order/models.py:1190
+#: order/models.py:680 order/models.py:1206
#: templates/js/translated/order.js:2505 templates/js/translated/order.js:2656
msgid "Shipment Date"
msgstr ""
-#: order/models.py:671
+#: order/models.py:687
msgid "shipped by"
msgstr ""
-#: order/models.py:726
+#: order/models.py:742
msgid "Order cannot be completed as no parts have been assigned"
msgstr ""
-#: order/models.py:730
+#: order/models.py:746
msgid "Only a pending order can be marked as complete"
msgstr ""
-#: order/models.py:733
+#: order/models.py:749
msgid "Order cannot be completed as there are incomplete shipments"
msgstr ""
-#: order/models.py:736
+#: order/models.py:752
msgid "Order cannot be completed as there are incomplete line items"
msgstr ""
-#: order/models.py:910
+#: order/models.py:926
msgid "Item quantity"
msgstr ""
-#: order/models.py:916
+#: order/models.py:932
msgid "Line item reference"
msgstr ""
-#: order/models.py:918
+#: order/models.py:934
msgid "Line item notes"
msgstr ""
-#: order/models.py:923
+#: order/models.py:939
msgid "Target shipping date for this line item"
msgstr ""
-#: order/models.py:941
+#: order/models.py:957
msgid "Context"
msgstr ""
-#: order/models.py:942
+#: order/models.py:958
msgid "Additional context for this line"
msgstr ""
-#: order/models.py:950
+#: order/models.py:966
msgid "Unit price"
msgstr ""
-#: order/models.py:980
+#: order/models.py:996
msgid "Supplier part must match supplier"
msgstr ""
-#: order/models.py:988
+#: order/models.py:1004
msgid "deleted"
msgstr ""
-#: order/models.py:994 order/models.py:1074 order/models.py:1099
-#: order/models.py:1184 order/models.py:1320
+#: order/models.py:1010 order/models.py:1090 order/models.py:1115
+#: order/models.py:1200 order/models.py:1336
#: templates/js/translated/order.js:3112
msgid "Order"
msgstr ""
-#: order/models.py:995 order/models.py:1074
+#: order/models.py:1011 order/models.py:1090
#: order/templates/order/order_base.html:9
#: order/templates/order/order_base.html:18
#: report/templates/report/inventree_po_report.html:76
#: stock/templates/stock/item_base.html:184
+#: templates/email/overdue_purchase_order.html:15
#: templates/js/translated/order.js:885 templates/js/translated/order.js:1621
-#: templates/js/translated/part.js:899 templates/js/translated/stock.js:1846
-#: templates/js/translated/stock.js:2412
+#: templates/js/translated/part.js:943 templates/js/translated/stock.js:1856
+#: templates/js/translated/stock.js:2422
msgid "Purchase Order"
msgstr ""
-#: order/models.py:1013
+#: order/models.py:1029
msgid "Supplier part"
msgstr ""
-#: order/models.py:1020 order/templates/order/order_base.html:169
+#: order/models.py:1036 order/templates/order/order_base.html:169
#: templates/js/translated/order.js:1318 templates/js/translated/order.js:2009
-#: templates/js/translated/part.js:993 templates/js/translated/part.js:1020
+#: templates/js/translated/part.js:1037 templates/js/translated/part.js:1064
#: templates/js/translated/table_filters.js:330
msgid "Received"
msgstr ""
-#: order/models.py:1021
+#: order/models.py:1037
msgid "Number of items received"
msgstr ""
-#: order/models.py:1028 part/templates/part/prices.html:179 stock/models.py:722
+#: order/models.py:1044 part/templates/part/prices.html:181 stock/models.py:722
#: stock/serializers.py:153 stock/templates/stock/item_base.html:191
-#: templates/js/translated/stock.js:1900
+#: templates/js/translated/stock.js:1910
msgid "Purchase Price"
msgstr ""
-#: order/models.py:1029
+#: order/models.py:1045
msgid "Unit purchase price"
msgstr ""
-#: order/models.py:1037
+#: order/models.py:1053
msgid "Where does the Purchaser want this item to be stored?"
msgstr ""
-#: order/models.py:1109 part/templates/part/part_pricing.html:112
-#: part/templates/part/prices.html:119 part/templates/part/prices.html:288
+#: order/models.py:1125 part/templates/part/part_pricing.html:115
+#: part/templates/part/prices.html:121 part/templates/part/prices.html:290
msgid "Sale Price"
msgstr ""
-#: order/models.py:1110
+#: order/models.py:1126
msgid "Unit sale price"
msgstr ""
-#: order/models.py:1115
+#: order/models.py:1131
msgid "Shipped quantity"
msgstr ""
-#: order/models.py:1191
+#: order/models.py:1207
msgid "Date of shipment"
msgstr ""
-#: order/models.py:1198
+#: order/models.py:1214
msgid "Checked By"
msgstr ""
-#: order/models.py:1199
+#: order/models.py:1215
msgid "User who checked this shipment"
msgstr ""
-#: order/models.py:1207
+#: order/models.py:1223
msgid "Shipment number"
msgstr ""
-#: order/models.py:1214
+#: order/models.py:1230
msgid "Shipment notes"
msgstr ""
-#: order/models.py:1221
+#: order/models.py:1237
msgid "Tracking Number"
msgstr ""
-#: order/models.py:1222
+#: order/models.py:1238
msgid "Shipment tracking information"
msgstr ""
-#: order/models.py:1229
+#: order/models.py:1245
msgid "Invoice Number"
msgstr ""
-#: order/models.py:1230
+#: order/models.py:1246
msgid "Reference number for associated invoice"
msgstr ""
-#: order/models.py:1248
+#: order/models.py:1264
msgid "Shipment has already been sent"
msgstr ""
-#: order/models.py:1251
+#: order/models.py:1267
msgid "Shipment has no allocated stock items"
msgstr ""
-#: order/models.py:1354 order/models.py:1356
+#: order/models.py:1370 order/models.py:1372
msgid "Stock item has not been assigned"
msgstr ""
-#: order/models.py:1360
+#: order/models.py:1376
msgid "Cannot allocate stock item to a line with a different part"
msgstr ""
-#: order/models.py:1362
+#: order/models.py:1378
msgid "Cannot allocate stock to a line without a part"
msgstr ""
-#: order/models.py:1365
+#: order/models.py:1381
msgid "Allocation quantity cannot exceed stock quantity"
msgstr ""
-#: order/models.py:1369
+#: order/models.py:1385
msgid "StockItem is over-allocated"
msgstr ""
-#: order/models.py:1375 order/serializers.py:1045
+#: order/models.py:1391 order/serializers.py:1047
msgid "Quantity must be 1 for serialized stock item"
msgstr ""
-#: order/models.py:1378
+#: order/models.py:1394
msgid "Sales order does not match shipment"
msgstr ""
-#: order/models.py:1379
+#: order/models.py:1395
msgid "Shipment does not match sales order"
msgstr ""
-#: order/models.py:1387
+#: order/models.py:1403
msgid "Line"
msgstr ""
-#: order/models.py:1395 order/serializers.py:1149 order/serializers.py:1273
+#: order/models.py:1411 order/serializers.py:1151 order/serializers.py:1275
#: templates/js/translated/model_renderers.js:301
msgid "Shipment"
msgstr ""
-#: order/models.py:1396
+#: order/models.py:1412
msgid "Sales order shipment reference"
msgstr ""
-#: order/models.py:1408 templates/InvenTree/notifications/notifications.html:70
+#: order/models.py:1424 templates/InvenTree/notifications/notifications.html:70
msgid "Item"
msgstr ""
-#: order/models.py:1409
+#: order/models.py:1425
msgid "Select stock item to allocate"
msgstr ""
-#: order/models.py:1412
+#: order/models.py:1428
msgid "Enter stock allocation quantity"
msgstr ""
@@ -3662,7 +3692,7 @@ msgstr ""
msgid "Purchase order must match supplier"
msgstr ""
-#: order/serializers.py:406 order/serializers.py:1117
+#: order/serializers.py:406 order/serializers.py:1119
msgid "Line Item"
msgstr ""
@@ -3710,42 +3740,60 @@ msgstr ""
msgid "Supplied barcode values must be unique"
msgstr ""
-#: order/serializers.py:866
+#: order/serializers.py:868
msgid "Sale price currency"
msgstr ""
-#: order/serializers.py:947
+#: order/serializers.py:949
msgid "No shipment details provided"
msgstr ""
-#: order/serializers.py:1006 order/serializers.py:1126
+#: order/serializers.py:1008 order/serializers.py:1128
msgid "Line item is not associated with this order"
msgstr ""
-#: order/serializers.py:1028
+#: order/serializers.py:1030
msgid "Quantity must be positive"
msgstr ""
-#: order/serializers.py:1139
+#: order/serializers.py:1141
msgid "Enter serial numbers to allocate"
msgstr ""
-#: order/serializers.py:1161 order/serializers.py:1281
+#: order/serializers.py:1163 order/serializers.py:1283
msgid "Shipment has already been shipped"
msgstr ""
-#: order/serializers.py:1164 order/serializers.py:1284
+#: order/serializers.py:1166 order/serializers.py:1286
msgid "Shipment is not associated with this order"
msgstr ""
-#: order/serializers.py:1214
+#: order/serializers.py:1216
msgid "No match found for the following serial numbers"
msgstr ""
-#: order/serializers.py:1224
+#: order/serializers.py:1226
msgid "The following serial numbers are already allocated"
msgstr ""
+#: order/tasks.py:26
+msgid "Overdue Purchase Order"
+msgstr ""
+
+#: order/tasks.py:31
+#, python-brace-format
+msgid "Purchase order {po} is now overdue"
+msgstr ""
+
+#: order/tasks.py:88
+msgid "Overdue Sales Order"
+msgstr ""
+
+#: order/tasks.py:93
+#, python-brace-format
+msgid "Sales order {so} is now overdue"
+msgstr ""
+
#: order/templates/order/order_base.html:33
msgid "Print purchase order report"
msgstr ""
@@ -3870,8 +3918,8 @@ msgstr ""
#: templates/js/translated/bom.js:77 templates/js/translated/build.js:427
#: templates/js/translated/build.js:579 templates/js/translated/build.js:1972
#: templates/js/translated/order.js:833 templates/js/translated/order.js:1265
-#: templates/js/translated/order.js:2731 templates/js/translated/stock.js:570
-#: templates/js/translated/stock.js:738
+#: templates/js/translated/order.js:2731 templates/js/translated/stock.js:569
+#: templates/js/translated/stock.js:737
#: templates/patterns/wizard/match_fields.html:70
msgid "Remove row"
msgstr ""
@@ -3990,7 +4038,7 @@ msgid "Pending Shipments"
msgstr ""
#: order/templates/order/sales_order_detail.html:70
-#: templates/attachment_table.html:6 templates/js/translated/bom.js:1053
+#: templates/attachment_table.html:6 templates/js/translated/bom.js:1047
#: templates/js/translated/build.js:1880
msgid "Actions"
msgstr ""
@@ -4021,47 +4069,47 @@ msgstr ""
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr ""
-#: part/api.py:481
+#: part/api.py:482
msgid "Incoming Purchase Order"
msgstr ""
-#: part/api.py:501
+#: part/api.py:502
msgid "Outgoing Sales Order"
msgstr ""
-#: part/api.py:519
+#: part/api.py:520
msgid "Stock produced by Build Order"
msgstr ""
-#: part/api.py:551
+#: part/api.py:552
msgid "Stock required for Build Order"
msgstr ""
-#: part/api.py:637
+#: part/api.py:638
msgid "Valid"
msgstr ""
-#: part/api.py:638
+#: part/api.py:639
msgid "Validate entire Bill of Materials"
msgstr ""
-#: part/api.py:644
+#: part/api.py:645
msgid "This option must be selected"
msgstr ""
-#: part/api.py:1010
+#: part/api.py:1011
msgid "Must be greater than zero"
msgstr ""
-#: part/api.py:1014
+#: part/api.py:1015
msgid "Must be a valid quantity"
msgstr ""
-#: part/api.py:1029
+#: part/api.py:1030
msgid "Specify location for initial part stock"
msgstr ""
-#: part/api.py:1060 part/api.py:1064 part/api.py:1079 part/api.py:1083
+#: part/api.py:1061 part/api.py:1065 part/api.py:1080 part/api.py:1084
msgid "This field is required"
msgstr ""
@@ -4080,17 +4128,13 @@ msgid "Available Stock"
msgstr ""
#: part/bom.py:130 part/templates/part/part_base.html:207
-#: templates/js/translated/part.js:517 templates/js/translated/part.js:537
-#: templates/js/translated/part.js:1229 templates/js/translated/part.js:1401
-#: templates/js/translated/part.js:1417
+#: templates/js/translated/part.js:561 templates/js/translated/part.js:581
+#: templates/js/translated/part.js:1273 templates/js/translated/part.js:1445
+#: templates/js/translated/part.js:1461
msgid "On Order"
msgstr ""
-#: part/forms.py:59
-msgid "Select part category"
-msgstr ""
-
-#: part/forms.py:69
+#: part/forms.py:60
msgid "Input quantity for price calculation"
msgstr ""
@@ -4106,7 +4150,7 @@ msgstr ""
msgid "Default keywords for parts in this category"
msgstr ""
-#: part/models.py:115 part/models.py:2415 part/templates/part/category.html:15
+#: part/models.py:115 part/models.py:2403 part/templates/part/category.html:15
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr ""
@@ -4123,7 +4167,7 @@ msgstr ""
#: part/templates/part/category_sidebar.html:9
#: templates/InvenTree/index.html:85 templates/InvenTree/search.html:82
#: templates/InvenTree/settings/sidebar.html:39
-#: templates/js/translated/part.js:1768 templates/js/translated/search.js:144
+#: templates/js/translated/part.js:1864 templates/js/translated/search.js:144
#: templates/navbar.html:24 users/models.py:37
msgid "Parts"
msgstr ""
@@ -4153,7 +4197,7 @@ msgstr ""
msgid "Duplicate IPN not allowed in part settings"
msgstr ""
-#: part/models.py:738 part/models.py:2469
+#: part/models.py:738 part/models.py:2457
msgid "Part name"
msgstr ""
@@ -4186,12 +4230,11 @@ msgstr ""
msgid "Part keywords to improve visibility in search results"
msgstr ""
-#: part/models.py:776 part/models.py:2171 part/models.py:2414
+#: part/models.py:776 part/models.py:2159 part/models.py:2402
#: part/templates/part/part_base.html:257
-#: part/templates/part/set_category.html:15
#: templates/InvenTree/notifications/notifications.html:65
#: templates/InvenTree/settings/settings.html:231
-#: templates/js/translated/part.js:1369
+#: templates/js/translated/part.js:1413 templates/js/translated/part.js:1639
msgid "Category"
msgstr ""
@@ -4200,8 +4243,8 @@ msgid "Part category"
msgstr ""
#: part/models.py:782 part/templates/part/part_base.html:266
-#: templates/js/translated/part.js:666 templates/js/translated/part.js:1322
-#: templates/js/translated/stock.js:1659
+#: templates/js/translated/part.js:710 templates/js/translated/part.js:1366
+#: templates/js/translated/stock.js:1669
msgid "IPN"
msgstr ""
@@ -4214,7 +4257,7 @@ msgid "Part revision or version number"
msgstr ""
#: part/models.py:790 part/templates/part/part_base.html:273
-#: report/models.py:170 templates/js/translated/part.js:670
+#: report/models.py:170 templates/js/translated/part.js:714
msgid "Revision"
msgstr ""
@@ -4302,317 +4345,321 @@ msgstr ""
msgid "Creation User"
msgstr ""
-#: part/models.py:1690
+#: part/models.py:1685
msgid "Sell multiple"
msgstr ""
-#: part/models.py:2218
+#: part/models.py:2206
msgid "Test templates can only be created for trackable parts"
msgstr ""
-#: part/models.py:2235
+#: part/models.py:2223
msgid "Test with this name already exists for this part"
msgstr ""
-#: part/models.py:2255 templates/js/translated/part.js:1819
-#: templates/js/translated/stock.js:1274
+#: part/models.py:2243 templates/js/translated/part.js:1915
+#: templates/js/translated/stock.js:1284
msgid "Test Name"
msgstr ""
-#: part/models.py:2256
+#: part/models.py:2244
msgid "Enter a name for the test"
msgstr ""
-#: part/models.py:2261
+#: part/models.py:2249
msgid "Test Description"
msgstr ""
-#: part/models.py:2262
+#: part/models.py:2250
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:2267 templates/js/translated/part.js:1828
+#: part/models.py:2255 templates/js/translated/part.js:1924
#: templates/js/translated/table_filters.js:294
msgid "Required"
msgstr ""
-#: part/models.py:2268
+#: part/models.py:2256
msgid "Is this test required to pass?"
msgstr ""
-#: part/models.py:2273 templates/js/translated/part.js:1836
+#: part/models.py:2261 templates/js/translated/part.js:1932
msgid "Requires Value"
msgstr ""
-#: part/models.py:2274
+#: part/models.py:2262
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:2279 templates/js/translated/part.js:1843
+#: part/models.py:2267 templates/js/translated/part.js:1939
msgid "Requires Attachment"
msgstr ""
-#: part/models.py:2280
+#: part/models.py:2268
msgid "Does this test require a file attachment when adding a test result?"
msgstr ""
-#: part/models.py:2288
+#: part/models.py:2276
#, python-brace-format
msgid "Illegal character in template name ({c})"
msgstr ""
-#: part/models.py:2324
+#: part/models.py:2312
msgid "Parameter template name must be unique"
msgstr ""
-#: part/models.py:2332
+#: part/models.py:2320
msgid "Parameter Name"
msgstr ""
-#: part/models.py:2339
+#: part/models.py:2327
msgid "Parameter Units"
msgstr ""
-#: part/models.py:2370
+#: part/models.py:2358
msgid "Parent Part"
msgstr ""
-#: part/models.py:2372 part/models.py:2420 part/models.py:2421
+#: part/models.py:2360 part/models.py:2408 part/models.py:2409
#: templates/InvenTree/settings/settings.html:226
msgid "Parameter Template"
msgstr ""
-#: part/models.py:2374
+#: part/models.py:2362
msgid "Data"
msgstr ""
-#: part/models.py:2374
+#: part/models.py:2362
msgid "Parameter Value"
msgstr ""
-#: part/models.py:2425 templates/InvenTree/settings/settings.html:235
+#: part/models.py:2413 templates/InvenTree/settings/settings.html:235
msgid "Default Value"
msgstr ""
-#: part/models.py:2426
+#: part/models.py:2414
msgid "Default Parameter Value"
msgstr ""
-#: part/models.py:2461
+#: part/models.py:2449
msgid "Part ID or part name"
msgstr ""
-#: part/models.py:2464 templates/js/translated/model_renderers.js:200
+#: part/models.py:2452 templates/js/translated/model_renderers.js:200
msgid "Part ID"
msgstr ""
-#: part/models.py:2465
+#: part/models.py:2453
msgid "Unique part ID value"
msgstr ""
-#: part/models.py:2468
+#: part/models.py:2456
msgid "Part Name"
msgstr ""
-#: part/models.py:2472
+#: part/models.py:2460
msgid "Part IPN"
msgstr ""
-#: part/models.py:2473
+#: part/models.py:2461
msgid "Part IPN value"
msgstr ""
-#: part/models.py:2476
+#: part/models.py:2464
msgid "Level"
msgstr ""
-#: part/models.py:2477
+#: part/models.py:2465
msgid "BOM level"
msgstr ""
-#: part/models.py:2546
+#: part/models.py:2534
msgid "Select parent part"
msgstr ""
-#: part/models.py:2554
+#: part/models.py:2542
msgid "Sub part"
msgstr ""
-#: part/models.py:2555
+#: part/models.py:2543
msgid "Select part to be used in BOM"
msgstr ""
-#: part/models.py:2561
+#: part/models.py:2549
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:2563 part/templates/part/upload_bom.html:58
-#: templates/js/translated/bom.js:877 templates/js/translated/bom.js:971
+#: part/models.py:2551 part/templates/part/upload_bom.html:58
+#: templates/js/translated/bom.js:871 templates/js/translated/bom.js:965
#: templates/js/translated/table_filters.js:92
msgid "Optional"
msgstr ""
-#: part/models.py:2563
+#: part/models.py:2551
msgid "This BOM item is optional"
msgstr ""
-#: part/models.py:2566 part/templates/part/upload_bom.html:55
+#: part/models.py:2554 part/templates/part/upload_bom.html:55
msgid "Overage"
msgstr ""
-#: part/models.py:2567
+#: part/models.py:2555
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr ""
-#: part/models.py:2570
+#: part/models.py:2558
msgid "BOM item reference"
msgstr ""
-#: part/models.py:2573
+#: part/models.py:2561
msgid "BOM item notes"
msgstr ""
-#: part/models.py:2575
+#: part/models.py:2563
msgid "Checksum"
msgstr ""
-#: part/models.py:2575
+#: part/models.py:2563
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:2579 part/templates/part/upload_bom.html:57
-#: templates/js/translated/bom.js:988
+#: part/models.py:2567 part/templates/part/upload_bom.html:57
+#: templates/js/translated/bom.js:982
#: templates/js/translated/table_filters.js:68
#: templates/js/translated/table_filters.js:88
msgid "Inherited"
msgstr ""
-#: part/models.py:2580
+#: part/models.py:2568
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr ""
-#: part/models.py:2585 part/templates/part/upload_bom.html:56
-#: templates/js/translated/bom.js:980
+#: part/models.py:2573 part/templates/part/upload_bom.html:56
+#: templates/js/translated/bom.js:974
msgid "Allow Variants"
msgstr ""
-#: part/models.py:2586
+#: part/models.py:2574
msgid "Stock items for variant parts can be used for this BOM item"
msgstr ""
-#: part/models.py:2664 stock/models.py:460
+#: part/models.py:2652 stock/models.py:460
msgid "Quantity must be integer value for trackable parts"
msgstr ""
-#: part/models.py:2673 part/models.py:2675
+#: part/models.py:2661 part/models.py:2663
msgid "Sub part must be specified"
msgstr ""
-#: part/models.py:2780
+#: part/models.py:2768
msgid "BOM Item Substitute"
msgstr ""
-#: part/models.py:2801
+#: part/models.py:2789
msgid "Substitute part cannot be the same as the master part"
msgstr ""
-#: part/models.py:2814
+#: part/models.py:2802
msgid "Parent BOM item"
msgstr ""
-#: part/models.py:2822
+#: part/models.py:2810
msgid "Substitute part"
msgstr ""
-#: part/models.py:2833
+#: part/models.py:2825
msgid "Part 1"
msgstr ""
-#: part/models.py:2837
+#: part/models.py:2829
msgid "Part 2"
msgstr ""
-#: part/models.py:2837
+#: part/models.py:2829
msgid "Select Related Part"
msgstr ""
-#: part/models.py:2868
-msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique"
+#: part/models.py:2847
+msgid "Part relationship cannot be created between a part and itself"
msgstr ""
-#: part/serializers.py:138 part/serializers.py:169 stock/serializers.py:163
+#: part/models.py:2851
+msgid "Duplicate relationship already exists"
+msgstr ""
+
+#: part/serializers.py:140 part/serializers.py:171 stock/serializers.py:163
msgid "Purchase currency of this stock item"
msgstr ""
-#: part/serializers.py:794
+#: part/serializers.py:796
msgid "Select part to copy BOM from"
msgstr ""
-#: part/serializers.py:802
+#: part/serializers.py:804
msgid "Remove Existing Data"
msgstr ""
-#: part/serializers.py:803
+#: part/serializers.py:805
msgid "Remove existing BOM items before copying"
msgstr ""
-#: part/serializers.py:808
+#: part/serializers.py:810
msgid "Include Inherited"
msgstr ""
-#: part/serializers.py:809
+#: part/serializers.py:811
msgid "Include BOM items which are inherited from templated parts"
msgstr ""
-#: part/serializers.py:814
+#: part/serializers.py:816
msgid "Skip Invalid Rows"
msgstr ""
-#: part/serializers.py:815
+#: part/serializers.py:817
msgid "Enable this option to skip invalid rows"
msgstr ""
-#: part/serializers.py:820
+#: part/serializers.py:822
msgid "Copy Substitute Parts"
msgstr ""
-#: part/serializers.py:821
+#: part/serializers.py:823
msgid "Copy substitute parts when duplicate BOM items"
msgstr ""
-#: part/serializers.py:861
+#: part/serializers.py:863
msgid "Clear Existing BOM"
msgstr ""
-#: part/serializers.py:862
+#: part/serializers.py:864
msgid "Delete existing BOM items before uploading"
msgstr ""
-#: part/serializers.py:892
+#: part/serializers.py:894
msgid "No part column specified"
msgstr ""
-#: part/serializers.py:935
+#: part/serializers.py:937
msgid "Multiple matching parts found"
msgstr ""
-#: part/serializers.py:938
+#: part/serializers.py:940
msgid "No matching part found"
msgstr ""
-#: part/serializers.py:941
+#: part/serializers.py:943
msgid "Part is not designated as a component"
msgstr ""
-#: part/serializers.py:950
+#: part/serializers.py:952
msgid "Quantity not provided"
msgstr ""
-#: part/serializers.py:958
+#: part/serializers.py:960
msgid "Invalid quantity"
msgstr ""
-#: part/serializers.py:979
+#: part/serializers.py:981
msgid "At least one BOM item is required"
msgstr ""
@@ -5088,10 +5135,10 @@ msgid "Part is virtual (not a physical part)"
msgstr ""
#: part/templates/part/part_base.html:143
-#: templates/js/translated/company.js:623
-#: templates/js/translated/company.js:882
+#: templates/js/translated/company.js:608
+#: templates/js/translated/company.js:867
#: templates/js/translated/model_renderers.js:192
-#: templates/js/translated/part.js:581 templates/js/translated/part.js:658
+#: templates/js/translated/part.js:625 templates/js/translated/part.js:702
msgid "Inactive"
msgstr ""
@@ -5120,13 +5167,13 @@ msgstr ""
msgid "Allocated to Sales Orders"
msgstr ""
-#: part/templates/part/part_base.html:232 templates/js/translated/bom.js:1009
+#: part/templates/part/part_base.html:232 templates/js/translated/bom.js:1003
msgid "Can Build"
msgstr ""
-#: part/templates/part/part_base.html:238 templates/js/translated/part.js:520
-#: templates/js/translated/part.js:540 templates/js/translated/part.js:1233
-#: templates/js/translated/part.js:1405 templates/js/translated/part.js:1421
+#: part/templates/part/part_base.html:238 templates/js/translated/part.js:564
+#: templates/js/translated/part.js:584 templates/js/translated/part.js:1277
+#: templates/js/translated/part.js:1449 templates/js/translated/part.js:1465
msgid "Building"
msgstr ""
@@ -5143,7 +5190,7 @@ msgstr ""
msgid "Search for serial number"
msgstr ""
-#: part/templates/part/part_base.html:443 part/templates/part/prices.html:147
+#: part/templates/part/part_base.html:443 part/templates/part/prices.html:149
msgid "Calculate"
msgstr ""
@@ -5161,54 +5208,55 @@ msgstr ""
#: part/templates/part/part_pricing.html:26
#: part/templates/part/part_pricing.html:52
-#: part/templates/part/part_pricing.html:100
-#: part/templates/part/part_pricing.html:115 part/templates/part/prices.html:28
-#: part/templates/part/prices.html:55 part/templates/part/prices.html:106
-#: part/templates/part/prices.html:123
+#: part/templates/part/part_pricing.html:103
+#: part/templates/part/part_pricing.html:118 part/templates/part/prices.html:28
+#: part/templates/part/prices.html:55 part/templates/part/prices.html:108
+#: part/templates/part/prices.html:125
msgid "Unit Cost"
msgstr ""
#: part/templates/part/part_pricing.html:32
#: part/templates/part/part_pricing.html:58
-#: part/templates/part/part_pricing.html:104
-#: part/templates/part/part_pricing.html:119 part/templates/part/prices.html:35
-#: part/templates/part/prices.html:62 part/templates/part/prices.html:111
-#: part/templates/part/prices.html:128
+#: part/templates/part/part_pricing.html:107
+#: part/templates/part/part_pricing.html:122 part/templates/part/prices.html:35
+#: part/templates/part/prices.html:62 part/templates/part/prices.html:113
+#: part/templates/part/prices.html:130
msgid "Total Cost"
msgstr ""
#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:43
-#: templates/js/translated/bom.js:963
+#: templates/js/translated/bom.js:957
msgid "No supplier pricing available"
msgstr ""
#: part/templates/part/part_pricing.html:48 part/templates/part/prices.html:52
-#: part/templates/part/prices.html:246
+#: part/templates/part/prices.html:248
msgid "BOM Pricing"
msgstr ""
-#: part/templates/part/part_pricing.html:65 part/templates/part/prices.html:72
+#: part/templates/part/part_pricing.html:66 part/templates/part/prices.html:72
msgid "Unit Purchase Price"
msgstr ""
-#: part/templates/part/part_pricing.html:71 part/templates/part/prices.html:79
+#: part/templates/part/part_pricing.html:72 part/templates/part/prices.html:79
msgid "Total Purchase Price"
msgstr ""
-#: part/templates/part/part_pricing.html:81 part/templates/part/prices.html:89
+#: part/templates/part/part_pricing.html:82 part/templates/part/prices.html:89
msgid "Note: BOM pricing is incomplete for this part"
msgstr ""
-#: part/templates/part/part_pricing.html:88 part/templates/part/prices.html:96
+#: part/templates/part/part_pricing.html:91 part/templates/part/prices.html:98
msgid "No BOM pricing available"
msgstr ""
-#: part/templates/part/part_pricing.html:97 part/templates/part/prices.html:105
+#: part/templates/part/part_pricing.html:100
+#: part/templates/part/prices.html:107
msgid "Internal Price"
msgstr ""
-#: part/templates/part/part_pricing.html:128
-#: part/templates/part/prices.html:137
+#: part/templates/part/part_pricing.html:131
+#: part/templates/part/prices.html:139
msgid "No pricing information is available for this part."
msgstr ""
@@ -5232,43 +5280,6 @@ msgstr ""
msgid "Select from existing images"
msgstr ""
-#: part/templates/part/partial_delete.html:9
-#, python-format
-msgid "Part '%(full_name)s' cannot be deleted as it is still marked as active.\n"
-"
Disable the \"Active\" part attribute and re-try.\n"
-" "
-msgstr ""
-
-#: part/templates/part/partial_delete.html:17
-#, python-format
-msgid "Are you sure you want to delete part '%(full_name)s'?"
-msgstr ""
-
-#: part/templates/part/partial_delete.html:22
-#, python-format
-msgid "This part is used in BOMs for %(count)s other parts. If you delete this part, the BOMs for the following parts will be updated"
-msgstr ""
-
-#: part/templates/part/partial_delete.html:32
-#, python-format
-msgid "There are %(count)s stock entries defined for this part. If you delete this part, the following stock entries will also be deleted:"
-msgstr ""
-
-#: part/templates/part/partial_delete.html:43
-#, python-format
-msgid "There are %(count)s manufacturers defined for this part. If you delete this part, the following manufacturer parts will also be deleted:"
-msgstr ""
-
-#: part/templates/part/partial_delete.html:54
-#, python-format
-msgid "There are %(count)s suppliers defined for this part. If you delete this part, the following supplier parts will also be deleted:"
-msgstr ""
-
-#: part/templates/part/partial_delete.html:67
-#, python-format
-msgid "There are %(count)s unique parts tracked for '%(full_name)s'. Deleting this part will permanently remove this tracking information."
-msgstr ""
-
#: part/templates/part/prices.html:19
msgid "Pricing ranges"
msgstr ""
@@ -5285,66 +5296,58 @@ msgstr ""
msgid "Show BOM cost"
msgstr ""
-#: part/templates/part/prices.html:120
+#: part/templates/part/prices.html:122
msgid "Show sale cost"
msgstr ""
-#: part/templates/part/prices.html:121
+#: part/templates/part/prices.html:123
msgid "Show sale price"
msgstr ""
-#: part/templates/part/prices.html:143
+#: part/templates/part/prices.html:145
msgid "Calculation parameters"
msgstr ""
-#: part/templates/part/prices.html:158 templates/js/translated/bom.js:957
+#: part/templates/part/prices.html:160 templates/js/translated/bom.js:951
msgid "Supplier Cost"
msgstr ""
-#: part/templates/part/prices.html:159 part/templates/part/prices.html:180
-#: part/templates/part/prices.html:204 part/templates/part/prices.html:234
-#: part/templates/part/prices.html:260 part/templates/part/prices.html:289
+#: part/templates/part/prices.html:161 part/templates/part/prices.html:182
+#: part/templates/part/prices.html:206 part/templates/part/prices.html:236
+#: part/templates/part/prices.html:262 part/templates/part/prices.html:291
msgid "Jump to overview"
msgstr ""
-#: part/templates/part/prices.html:184
+#: part/templates/part/prices.html:186
msgid "Stock Pricing"
msgstr ""
-#: part/templates/part/prices.html:193
+#: part/templates/part/prices.html:195
msgid "No stock pricing history is available for this part."
msgstr ""
-#: part/templates/part/prices.html:203
+#: part/templates/part/prices.html:205
msgid "Internal Cost"
msgstr ""
-#: part/templates/part/prices.html:218
+#: part/templates/part/prices.html:220
msgid "Add Internal Price Break"
msgstr ""
-#: part/templates/part/prices.html:233
+#: part/templates/part/prices.html:235
msgid "BOM Cost"
msgstr ""
-#: part/templates/part/prices.html:259
+#: part/templates/part/prices.html:261
msgid "Sale Cost"
msgstr ""
-#: part/templates/part/prices.html:300
+#: part/templates/part/prices.html:302
msgid "No sale pice history available for this part."
msgstr ""
-#: part/templates/part/set_category.html:9
-msgid "Set category for the following parts"
-msgstr ""
-
-#: part/templates/part/set_category.html:32
-msgid "Remove part"
-msgstr ""
-
-#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:543
-#: templates/js/translated/part.js:1221 templates/js/translated/part.js:1425
+#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:587
+#: templates/js/translated/part.js:1265 templates/js/translated/part.js:1469
msgid "No Stock"
msgstr ""
@@ -5407,56 +5410,39 @@ msgstr ""
msgid "{title} v{version}"
msgstr ""
-#: part/views.py:74
-msgid "Set Part Category"
-msgstr ""
-
-#: part/views.py:122
-#, python-brace-format
-msgid "Set category for {n} parts"
-msgstr ""
-
-#: part/views.py:193
+#: part/views.py:118
msgid "Match References"
msgstr ""
-#: part/views.py:494
+#: part/views.py:419
msgid "None"
msgstr ""
-#: part/views.py:556
+#: part/views.py:481
msgid "Part QR Code"
msgstr ""
-#: part/views.py:650
+#: part/views.py:575
msgid "Select Part Image"
msgstr ""
-#: part/views.py:676
+#: part/views.py:601
msgid "Updated part image"
msgstr ""
-#: part/views.py:679
+#: part/views.py:604
msgid "Part image not found"
msgstr ""
-#: part/views.py:768
-msgid "Confirm Part Deletion"
-msgstr ""
-
-#: part/views.py:776
-msgid "Part was deleted"
-msgstr ""
-
-#: part/views.py:785
+#: part/views.py:693
msgid "Part Pricing"
msgstr ""
-#: part/views.py:976
+#: part/views.py:884
msgid "Delete Part Category"
msgstr ""
-#: part/views.py:983
+#: part/views.py:891
msgid "Part category was deleted"
msgstr ""
@@ -5516,21 +5502,21 @@ msgstr ""
msgid "Label printing failed"
msgstr ""
-#: plugin/builtin/integration/core_notifications.py:28
+#: plugin/builtin/integration/core_notifications.py:29
msgid "InvenTree contributors"
msgstr ""
-#: plugin/builtin/integration/core_notifications.py:29
+#: plugin/builtin/integration/core_notifications.py:30
msgid "Integrated outgoing notificaton methods"
msgstr ""
-#: plugin/builtin/integration/core_notifications.py:33
-#: plugin/builtin/integration/core_notifications.py:52
-msgid "Enable email notifications"
-msgstr ""
-
#: plugin/builtin/integration/core_notifications.py:34
#: plugin/builtin/integration/core_notifications.py:53
+msgid "Enable email notifications"
+msgstr ""
+
+#: plugin/builtin/integration/core_notifications.py:35
+#: plugin/builtin/integration/core_notifications.py:54
msgid "Allow sending of emails for event notifications"
msgstr ""
@@ -5646,15 +5632,19 @@ msgstr ""
msgid "Either packagename of URL must be provided"
msgstr ""
-#: report/api.py:166
+#: report/api.py:179
msgid "No valid objects provided to template"
msgstr ""
-#: report/api.py:198 report/api.py:239
+#: report/api.py:215 report/api.py:256
#, python-brace-format
msgid "Template file '{template}' is missing or does not exist"
msgstr ""
+#: report/api.py:359
+msgid "Test report"
+msgstr ""
+
#: report/models.py:152
msgid "Template name"
msgstr ""
@@ -5757,7 +5747,7 @@ msgstr ""
#: templates/js/translated/build.js:1173 templates/js/translated/build.js:1671
#: templates/js/translated/model_renderers.js:106
#: templates/js/translated/order.js:115 templates/js/translated/order.js:3229
-#: templates/js/translated/order.js:3318 templates/js/translated/stock.js:435
+#: templates/js/translated/order.js:3318 templates/js/translated/stock.js:434
msgid "Serial Number"
msgstr ""
@@ -5766,19 +5756,19 @@ msgid "Test Results"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:93
-#: stock/models.py:2068
+#: stock/models.py:2072
msgid "Test"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:94
-#: stock/models.py:2074
+#: stock/models.py:2078
msgid "Result"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:97
#: templates/InvenTree/settings/plugin.html:51
#: templates/InvenTree/settings/plugin_settings.html:38
-#: templates/js/translated/order.js:1669 templates/js/translated/stock.js:2340
+#: templates/js/translated/order.js:1669 templates/js/translated/stock.js:2350
msgid "Date"
msgstr ""
@@ -5796,20 +5786,20 @@ msgid "Installed Items"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:137
-#: templates/js/translated/stock.js:555 templates/js/translated/stock.js:725
-#: templates/js/translated/stock.js:2589
+#: templates/js/translated/stock.js:554 templates/js/translated/stock.js:724
+#: templates/js/translated/stock.js:2599
msgid "Serial"
msgstr ""
-#: stock/api.py:504
+#: stock/api.py:505
msgid "Quantity is required"
msgstr ""
-#: stock/api.py:511
+#: stock/api.py:512
msgid "Valid part must be supplied"
msgstr ""
-#: stock/api.py:536
+#: stock/api.py:537
msgid "Serial numbers cannot be supplied for a non-trackable part"
msgstr ""
@@ -5917,7 +5907,7 @@ msgid "Destination Sales Order"
msgstr ""
#: stock/models.py:690 stock/templates/stock/item_base.html:429
-#: templates/js/translated/stock.js:1816
+#: templates/js/translated/stock.js:1826
msgid "Expiry Date"
msgstr ""
@@ -5971,79 +5961,79 @@ msgstr ""
msgid "Serial numbers already exist: {exists}"
msgstr ""
-#: stock/models.py:1321
+#: stock/models.py:1325
msgid "Stock item has been assigned to a sales order"
msgstr ""
-#: stock/models.py:1324
+#: stock/models.py:1328
msgid "Stock item is installed in another item"
msgstr ""
-#: stock/models.py:1327
+#: stock/models.py:1331
msgid "Stock item contains other items"
msgstr ""
-#: stock/models.py:1330
+#: stock/models.py:1334
msgid "Stock item has been assigned to a customer"
msgstr ""
-#: stock/models.py:1333
+#: stock/models.py:1337
msgid "Stock item is currently in production"
msgstr ""
-#: stock/models.py:1336
+#: stock/models.py:1340
msgid "Serialized stock cannot be merged"
msgstr ""
-#: stock/models.py:1343 stock/serializers.py:908
+#: stock/models.py:1347 stock/serializers.py:895
msgid "Duplicate stock items"
msgstr ""
-#: stock/models.py:1347
+#: stock/models.py:1351
msgid "Stock items must refer to the same part"
msgstr ""
-#: stock/models.py:1351
+#: stock/models.py:1355
msgid "Stock items must refer to the same supplier part"
msgstr ""
-#: stock/models.py:1355
+#: stock/models.py:1359
msgid "Stock status codes must match"
msgstr ""
-#: stock/models.py:1524
+#: stock/models.py:1528
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:1986
+#: stock/models.py:1990
msgid "Entry notes"
msgstr ""
-#: stock/models.py:2044
+#: stock/models.py:2048
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:2050
+#: stock/models.py:2054
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:2069
+#: stock/models.py:2073
msgid "Test name"
msgstr ""
-#: stock/models.py:2075
+#: stock/models.py:2079
msgid "Test result"
msgstr ""
-#: stock/models.py:2081
+#: stock/models.py:2085
msgid "Test output value"
msgstr ""
-#: stock/models.py:2088
+#: stock/models.py:2092
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:2094
+#: stock/models.py:2098
msgid "Test notes"
msgstr ""
@@ -6064,7 +6054,7 @@ msgstr ""
msgid "Enter serial numbers for new items"
msgstr ""
-#: stock/serializers.py:309 stock/serializers.py:865 stock/serializers.py:1098
+#: stock/serializers.py:309 stock/serializers.py:852 stock/serializers.py:1085
msgid "Destination stock location"
msgstr ""
@@ -6104,63 +6094,63 @@ msgstr ""
msgid "Destination location for returned item"
msgstr ""
-#: stock/serializers.py:720
+#: stock/serializers.py:707
msgid "Part must be salable"
msgstr ""
-#: stock/serializers.py:724
+#: stock/serializers.py:711
msgid "Item is allocated to a sales order"
msgstr ""
-#: stock/serializers.py:728
+#: stock/serializers.py:715
msgid "Item is allocated to a build order"
msgstr ""
-#: stock/serializers.py:759
+#: stock/serializers.py:746
msgid "Customer to assign stock items"
msgstr ""
-#: stock/serializers.py:765
+#: stock/serializers.py:752
msgid "Selected company is not a customer"
msgstr ""
-#: stock/serializers.py:773
+#: stock/serializers.py:760
msgid "Stock assignment notes"
msgstr ""
-#: stock/serializers.py:783 stock/serializers.py:1014
+#: stock/serializers.py:770 stock/serializers.py:1001
msgid "A list of stock items must be provided"
msgstr ""
-#: stock/serializers.py:872
+#: stock/serializers.py:859
msgid "Stock merging notes"
msgstr ""
-#: stock/serializers.py:877
+#: stock/serializers.py:864
msgid "Allow mismatched suppliers"
msgstr ""
-#: stock/serializers.py:878
+#: stock/serializers.py:865
msgid "Allow stock items with different supplier parts to be merged"
msgstr ""
-#: stock/serializers.py:883
+#: stock/serializers.py:870
msgid "Allow mismatched status"
msgstr ""
-#: stock/serializers.py:884
+#: stock/serializers.py:871
msgid "Allow stock items with different status codes to be merged"
msgstr ""
-#: stock/serializers.py:894
+#: stock/serializers.py:881
msgid "At least two stock items must be provided"
msgstr ""
-#: stock/serializers.py:976
+#: stock/serializers.py:963
msgid "StockItem primary key value"
msgstr ""
-#: stock/serializers.py:1004
+#: stock/serializers.py:991
msgid "Stock transaction notes"
msgstr ""
@@ -6185,7 +6175,7 @@ msgstr ""
msgid "Test Report"
msgstr ""
-#: stock/templates/stock/item.html:94
+#: stock/templates/stock/item.html:94 stock/templates/stock/item.html:298
msgid "Delete Test Data"
msgstr ""
@@ -6197,11 +6187,15 @@ msgstr ""
msgid "Installed Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:151 templates/js/translated/stock.js:2733
+#: stock/templates/stock/item.html:151 templates/js/translated/stock.js:2743
msgid "Install Stock Item"
msgstr ""
-#: stock/templates/stock/item.html:292 templates/js/translated/stock.js:1455
+#: stock/templates/stock/item.html:290
+msgid "Delete all test results for this stock item"
+msgstr ""
+
+#: stock/templates/stock/item.html:323 templates/js/translated/stock.js:1465
msgid "Add Test Result"
msgstr ""
@@ -6388,7 +6382,7 @@ msgid "Stale"
msgstr ""
#: stock/templates/stock/item_base.html:442
-#: templates/js/translated/stock.js:1832
+#: templates/js/translated/stock.js:1842
msgid "Last Updated"
msgstr ""
@@ -6529,7 +6523,7 @@ msgstr ""
msgid "Child Items"
msgstr ""
-#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:182
+#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:144
msgid "Convert Stock Item"
msgstr ""
@@ -6550,31 +6544,19 @@ msgstr ""
msgid "This action cannot be easily undone"
msgstr ""
-#: stock/views.py:113
+#: stock/views.py:111
msgid "Stock Location QR code"
msgstr ""
-#: stock/views.py:131
-msgid "Delete All Test Data"
-msgstr ""
-
-#: stock/views.py:149
-msgid "Confirm test data deletion"
-msgstr ""
-
-#: stock/views.py:150
-msgid "Check the confirmation box"
-msgstr ""
-
-#: stock/views.py:165
+#: stock/views.py:127
msgid "Stock Item QR Code"
msgstr ""
-#: stock/views.py:216
+#: stock/views.py:178
msgid "Delete Stock Location"
msgstr ""
-#: stock/views.py:229
+#: stock/views.py:191
msgid "Delete Stock Item"
msgstr ""
@@ -7317,8 +7299,8 @@ msgstr ""
#: templates/about.html:11 templates/about.html:105
#: templates/js/translated/bom.js:133 templates/js/translated/bom.js:621
-#: templates/js/translated/modals.js:56 templates/js/translated/modals.js:595
-#: templates/js/translated/modals.js:689 templates/js/translated/modals.js:997
+#: templates/js/translated/modals.js:56 templates/js/translated/modals.js:601
+#: templates/js/translated/modals.js:695 templates/js/translated/modals.js:1003
#: templates/js/translated/order.js:928 templates/modals.html:15
#: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50
msgid "Close"
@@ -7390,6 +7372,10 @@ msgstr ""
msgid "Please confirm that %(email)s is an email address for user %(user_display)s."
msgstr ""
+#: templates/account/email_confirm.html:20 templates/js/translated/forms.js:630
+msgid "Confirm"
+msgstr ""
+
#: templates/account/email_confirm.html:27
#, python-format
msgid "This email confirmation link expired or is invalid. Please issue a new email confirmation request."
@@ -7562,7 +7548,7 @@ msgstr ""
msgid "Delete selected attachments"
msgstr ""
-#: templates/attachment_table.html:12 templates/js/translated/attachment.js:110
+#: templates/attachment_table.html:12 templates/js/translated/attachment.js:112
msgid "Delete Attachments"
msgstr ""
@@ -7596,15 +7582,15 @@ msgid "The following parts are low on required stock"
msgstr ""
#: templates/email/build_order_required_stock.html:18
-#: templates/js/translated/bom.js:1425
+#: templates/js/translated/bom.js:1419
msgid "Required Quantity"
msgstr ""
#: templates/email/build_order_required_stock.html:19
#: templates/email/low_stock_notification.html:18
-#: templates/js/translated/bom.js:890 templates/js/translated/build.js:1787
-#: templates/js/translated/build.js:2650 templates/js/translated/part.js:527
-#: templates/js/translated/part.js:530
+#: templates/js/translated/bom.js:884 templates/js/translated/build.js:1787
+#: templates/js/translated/build.js:2650 templates/js/translated/part.js:571
+#: templates/js/translated/part.js:574
#: templates/js/translated/table_filters.js:178
msgid "Available"
msgstr ""
@@ -7622,6 +7608,13 @@ msgstr ""
msgid "Minimum Quantity"
msgstr ""
+#: templates/email/new_order_assigned.html:9
+#: templates/email/overdue_build_order.html:9
+#: templates/email/overdue_purchase_order.html:9
+#: templates/email/overdue_sales_order.html:9
+msgid "Click on the following link to view this order"
+msgstr ""
+
#: templates/image_download.html:8
msgid "Specify URL for downloading image"
msgstr ""
@@ -7638,91 +7631,91 @@ msgstr ""
msgid "Remote image must not exceed maximum allowable file size"
msgstr ""
-#: templates/js/translated/api.js:235 templates/js/translated/modals.js:1067
+#: templates/js/translated/api.js:195 templates/js/translated/modals.js:1073
msgid "No Response"
msgstr ""
-#: templates/js/translated/api.js:236 templates/js/translated/modals.js:1068
+#: templates/js/translated/api.js:196 templates/js/translated/modals.js:1074
msgid "No response from the InvenTree server"
msgstr ""
-#: templates/js/translated/api.js:242
+#: templates/js/translated/api.js:202
msgid "Error 400: Bad request"
msgstr ""
-#: templates/js/translated/api.js:243
+#: templates/js/translated/api.js:203
msgid "API request returned error code 400"
msgstr ""
-#: templates/js/translated/api.js:247 templates/js/translated/modals.js:1077
+#: templates/js/translated/api.js:207 templates/js/translated/modals.js:1083
msgid "Error 401: Not Authenticated"
msgstr ""
-#: templates/js/translated/api.js:248 templates/js/translated/modals.js:1078
+#: templates/js/translated/api.js:208 templates/js/translated/modals.js:1084
msgid "Authentication credentials not supplied"
msgstr ""
-#: templates/js/translated/api.js:252 templates/js/translated/modals.js:1082
+#: templates/js/translated/api.js:212 templates/js/translated/modals.js:1088
msgid "Error 403: Permission Denied"
msgstr ""
-#: templates/js/translated/api.js:253 templates/js/translated/modals.js:1083
+#: templates/js/translated/api.js:213 templates/js/translated/modals.js:1089
msgid "You do not have the required permissions to access this function"
msgstr ""
-#: templates/js/translated/api.js:257 templates/js/translated/modals.js:1087
+#: templates/js/translated/api.js:217 templates/js/translated/modals.js:1093
msgid "Error 404: Resource Not Found"
msgstr ""
-#: templates/js/translated/api.js:258 templates/js/translated/modals.js:1088
+#: templates/js/translated/api.js:218 templates/js/translated/modals.js:1094
msgid "The requested resource could not be located on the server"
msgstr ""
-#: templates/js/translated/api.js:262
+#: templates/js/translated/api.js:222
msgid "Error 405: Method Not Allowed"
msgstr ""
-#: templates/js/translated/api.js:263
+#: templates/js/translated/api.js:223
msgid "HTTP method not allowed at URL"
msgstr ""
-#: templates/js/translated/api.js:267 templates/js/translated/modals.js:1092
+#: templates/js/translated/api.js:227 templates/js/translated/modals.js:1098
msgid "Error 408: Timeout"
msgstr ""
-#: templates/js/translated/api.js:268 templates/js/translated/modals.js:1093
+#: templates/js/translated/api.js:228 templates/js/translated/modals.js:1099
msgid "Connection timeout while requesting data from server"
msgstr ""
-#: templates/js/translated/api.js:271
+#: templates/js/translated/api.js:231
msgid "Unhandled Error Code"
msgstr ""
-#: templates/js/translated/api.js:272
+#: templates/js/translated/api.js:232
msgid "Error code"
msgstr ""
-#: templates/js/translated/attachment.js:96
+#: templates/js/translated/attachment.js:98
msgid "All selected attachments will be deleted"
msgstr ""
-#: templates/js/translated/attachment.js:156
+#: templates/js/translated/attachment.js:152
msgid "No attachments found"
msgstr ""
-#: templates/js/translated/attachment.js:180
+#: templates/js/translated/attachment.js:176
msgid "Edit Attachment"
msgstr ""
-#: templates/js/translated/attachment.js:246
+#: templates/js/translated/attachment.js:242
msgid "Upload Date"
msgstr ""
-#: templates/js/translated/attachment.js:262
+#: templates/js/translated/attachment.js:264
msgid "Edit attachment"
msgstr ""
-#: templates/js/translated/attachment.js:269
+#: templates/js/translated/attachment.js:271
msgid "Delete attachment"
msgstr ""
@@ -7755,7 +7748,7 @@ msgid "Unknown response from server"
msgstr ""
#: templates/js/translated/barcode.js:182
-#: templates/js/translated/modals.js:1057
+#: templates/js/translated/modals.js:1063
msgid "Invalid server response"
msgstr ""
@@ -7783,7 +7776,7 @@ msgstr ""
msgid "Unlink"
msgstr ""
-#: templates/js/translated/barcode.js:456 templates/js/translated/stock.js:999
+#: templates/js/translated/barcode.js:456 templates/js/translated/stock.js:998
msgid "Remove stock item"
msgstr ""
@@ -7918,89 +7911,89 @@ msgstr ""
msgid "Edit BOM Item Substitutes"
msgstr ""
-#: templates/js/translated/bom.js:682
+#: templates/js/translated/bom.js:684
msgid "All selected BOM items will be deleted"
msgstr ""
-#: templates/js/translated/bom.js:697
+#: templates/js/translated/bom.js:699
msgid "Delete selected BOM items?"
msgstr ""
-#: templates/js/translated/bom.js:824
+#: templates/js/translated/bom.js:818
msgid "Load BOM for subassembly"
msgstr ""
-#: templates/js/translated/bom.js:834
+#: templates/js/translated/bom.js:828
msgid "Substitutes Available"
msgstr ""
-#: templates/js/translated/bom.js:838 templates/js/translated/build.js:1769
+#: templates/js/translated/bom.js:832 templates/js/translated/build.js:1769
msgid "Variant stock allowed"
msgstr ""
-#: templates/js/translated/bom.js:906 templates/js/translated/build.js:1814
+#: templates/js/translated/bom.js:900 templates/js/translated/build.js:1814
#: templates/js/translated/order.js:3562
msgid "No Stock Available"
msgstr ""
-#: templates/js/translated/bom.js:910 templates/js/translated/build.js:1818
+#: templates/js/translated/bom.js:904 templates/js/translated/build.js:1818
msgid "Includes variant and substitute stock"
msgstr ""
-#: templates/js/translated/bom.js:912 templates/js/translated/build.js:1820
-#: templates/js/translated/part.js:690
+#: templates/js/translated/bom.js:906 templates/js/translated/build.js:1820
+#: templates/js/translated/part.js:734
msgid "Includes variant stock"
msgstr ""
-#: templates/js/translated/bom.js:914 templates/js/translated/build.js:1822
+#: templates/js/translated/bom.js:908 templates/js/translated/build.js:1822
msgid "Includes substitute stock"
msgstr ""
-#: templates/js/translated/bom.js:928
+#: templates/js/translated/bom.js:922
msgid "Substitutes"
msgstr ""
-#: templates/js/translated/bom.js:943
+#: templates/js/translated/bom.js:937
msgid "Purchase Price Range"
msgstr ""
-#: templates/js/translated/bom.js:950
+#: templates/js/translated/bom.js:944
msgid "Purchase Price Average"
msgstr ""
-#: templates/js/translated/bom.js:999 templates/js/translated/bom.js:1090
+#: templates/js/translated/bom.js:993 templates/js/translated/bom.js:1084
msgid "View BOM"
msgstr ""
-#: templates/js/translated/bom.js:1061
+#: templates/js/translated/bom.js:1055
msgid "Validate BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:1063
+#: templates/js/translated/bom.js:1057
msgid "This line has been validated"
msgstr ""
-#: templates/js/translated/bom.js:1065
+#: templates/js/translated/bom.js:1059
msgid "Edit substitute parts"
msgstr ""
-#: templates/js/translated/bom.js:1067 templates/js/translated/bom.js:1228
+#: templates/js/translated/bom.js:1061 templates/js/translated/bom.js:1222
msgid "Edit BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:1069
+#: templates/js/translated/bom.js:1063
msgid "Delete BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:1164 templates/js/translated/build.js:1615
+#: templates/js/translated/bom.js:1158 templates/js/translated/build.js:1615
msgid "No BOM items found"
msgstr ""
-#: templates/js/translated/bom.js:1408 templates/js/translated/build.js:1753
+#: templates/js/translated/bom.js:1402 templates/js/translated/build.js:1753
msgid "Required Part"
msgstr ""
-#: templates/js/translated/bom.js:1430
+#: templates/js/translated/bom.js:1424
msgid "Inherited from parent BOM"
msgstr ""
@@ -8040,13 +8033,13 @@ msgstr ""
msgid "Complete Build Order"
msgstr ""
-#: templates/js/translated/build.js:259 templates/js/translated/stock.js:91
-#: templates/js/translated/stock.js:181
+#: templates/js/translated/build.js:259 templates/js/translated/stock.js:90
+#: templates/js/translated/stock.js:180
msgid "Next available serial number"
msgstr ""
-#: templates/js/translated/build.js:261 templates/js/translated/stock.js:93
-#: templates/js/translated/stock.js:183
+#: templates/js/translated/build.js:261 templates/js/translated/stock.js:92
+#: templates/js/translated/stock.js:182
msgid "Latest serial number"
msgstr ""
@@ -8259,9 +8252,9 @@ msgstr ""
msgid "No builds matching query"
msgstr ""
-#: templates/js/translated/build.js:2448 templates/js/translated/part.js:1314
-#: templates/js/translated/part.js:1729 templates/js/translated/stock.js:1619
-#: templates/js/translated/stock.js:2277
+#: templates/js/translated/build.js:2448 templates/js/translated/part.js:1358
+#: templates/js/translated/part.js:1825 templates/js/translated/stock.js:1629
+#: templates/js/translated/stock.js:2287
msgid "Select"
msgstr ""
@@ -8273,7 +8266,7 @@ msgstr ""
msgid "Progress"
msgstr ""
-#: templates/js/translated/build.js:2532 templates/js/translated/stock.js:2519
+#: templates/js/translated/build.js:2532 templates/js/translated/stock.js:2529
msgid "No user information"
msgstr ""
@@ -8285,107 +8278,107 @@ msgstr ""
msgid "No parts allocated for"
msgstr ""
-#: templates/js/translated/company.js:66
+#: templates/js/translated/company.js:65
msgid "Add Manufacturer"
msgstr ""
-#: templates/js/translated/company.js:79 templates/js/translated/company.js:169
+#: templates/js/translated/company.js:78 templates/js/translated/company.js:168
msgid "Add Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:100
+#: templates/js/translated/company.js:99
msgid "Edit Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:157 templates/js/translated/order.js:506
+#: templates/js/translated/company.js:156 templates/js/translated/order.js:506
msgid "Add Supplier"
msgstr ""
-#: templates/js/translated/company.js:185
+#: templates/js/translated/company.js:184
msgid "Add Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:200
+#: templates/js/translated/company.js:199
msgid "Edit Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:248
+#: templates/js/translated/company.js:249
msgid "All selected supplier parts will be deleted"
msgstr ""
-#: templates/js/translated/company.js:263
+#: templates/js/translated/company.js:264
msgid "Delete Supplier Parts"
msgstr ""
-#: templates/js/translated/company.js:342
+#: templates/js/translated/company.js:336
msgid "Add new Company"
msgstr ""
-#: templates/js/translated/company.js:419
+#: templates/js/translated/company.js:413
msgid "Parts Supplied"
msgstr ""
-#: templates/js/translated/company.js:428
+#: templates/js/translated/company.js:422
msgid "Parts Manufactured"
msgstr ""
-#: templates/js/translated/company.js:443
+#: templates/js/translated/company.js:437
msgid "No company information found"
msgstr ""
-#: templates/js/translated/company.js:482
+#: templates/js/translated/company.js:478
msgid "All selected manufacturer parts will be deleted"
msgstr ""
-#: templates/js/translated/company.js:496
+#: templates/js/translated/company.js:492
msgid "Delete Manufacturer Parts"
msgstr ""
-#: templates/js/translated/company.js:535
+#: templates/js/translated/company.js:526
msgid "All selected parameters will be deleted"
msgstr ""
-#: templates/js/translated/company.js:548
+#: templates/js/translated/company.js:539
msgid "Delete Parameters"
msgstr ""
-#: templates/js/translated/company.js:595
+#: templates/js/translated/company.js:580
msgid "No manufacturer parts found"
msgstr ""
-#: templates/js/translated/company.js:615
-#: templates/js/translated/company.js:874 templates/js/translated/part.js:565
-#: templates/js/translated/part.js:650
+#: templates/js/translated/company.js:600
+#: templates/js/translated/company.js:859 templates/js/translated/part.js:609
+#: templates/js/translated/part.js:694
msgid "Template part"
msgstr ""
-#: templates/js/translated/company.js:619
-#: templates/js/translated/company.js:878 templates/js/translated/part.js:569
-#: templates/js/translated/part.js:654
+#: templates/js/translated/company.js:604
+#: templates/js/translated/company.js:863 templates/js/translated/part.js:613
+#: templates/js/translated/part.js:698
msgid "Assembled part"
msgstr ""
-#: templates/js/translated/company.js:747 templates/js/translated/part.js:757
+#: templates/js/translated/company.js:732 templates/js/translated/part.js:801
msgid "No parameters found"
msgstr ""
-#: templates/js/translated/company.js:784 templates/js/translated/part.js:799
+#: templates/js/translated/company.js:769 templates/js/translated/part.js:843
msgid "Edit parameter"
msgstr ""
-#: templates/js/translated/company.js:785 templates/js/translated/part.js:800
+#: templates/js/translated/company.js:770 templates/js/translated/part.js:844
msgid "Delete parameter"
msgstr ""
-#: templates/js/translated/company.js:804 templates/js/translated/part.js:817
+#: templates/js/translated/company.js:789 templates/js/translated/part.js:861
msgid "Edit Parameter"
msgstr ""
-#: templates/js/translated/company.js:815 templates/js/translated/part.js:829
+#: templates/js/translated/company.js:800 templates/js/translated/part.js:873
msgid "Delete Parameter"
msgstr ""
-#: templates/js/translated/company.js:854
+#: templates/js/translated/company.js:839
msgid "No supplier parts found"
msgstr ""
@@ -8448,36 +8441,36 @@ msgstr ""
msgid "Keep this form open"
msgstr ""
-#: templates/js/translated/forms.js:756
+#: templates/js/translated/forms.js:757
msgid "Enter a valid number"
msgstr ""
-#: templates/js/translated/forms.js:1248 templates/modals.html:19
+#: templates/js/translated/forms.js:1249 templates/modals.html:19
#: templates/modals.html:43
msgid "Form errors exist"
msgstr ""
-#: templates/js/translated/forms.js:1681
+#: templates/js/translated/forms.js:1682
msgid "No results found"
msgstr ""
-#: templates/js/translated/forms.js:1896 templates/search.html:29
+#: templates/js/translated/forms.js:1897 templates/search.html:29
msgid "Searching"
msgstr ""
-#: templates/js/translated/forms.js:2149
+#: templates/js/translated/forms.js:2150
msgid "Clear input"
msgstr ""
-#: templates/js/translated/forms.js:2615
+#: templates/js/translated/forms.js:2616
msgid "File Column"
msgstr ""
-#: templates/js/translated/forms.js:2615
+#: templates/js/translated/forms.js:2616
msgid "Field Name"
msgstr ""
-#: templates/js/translated/forms.js:2627
+#: templates/js/translated/forms.js:2628
msgid "Select Columns"
msgstr ""
@@ -8498,7 +8491,7 @@ msgid "Labels sent to printer"
msgstr ""
#: templates/js/translated/label.js:60 templates/js/translated/report.js:118
-#: templates/js/translated/stock.js:1023
+#: templates/js/translated/stock.js:1022
msgid "Select Stock Items"
msgstr ""
@@ -8552,12 +8545,12 @@ msgid "Select Label Template"
msgstr ""
#: templates/js/translated/modals.js:82 templates/js/translated/modals.js:142
-#: templates/js/translated/modals.js:621
+#: templates/js/translated/modals.js:627
msgid "Cancel"
msgstr ""
#: templates/js/translated/modals.js:83 templates/js/translated/modals.js:141
-#: templates/js/translated/modals.js:688 templates/js/translated/modals.js:996
+#: templates/js/translated/modals.js:694 templates/js/translated/modals.js:1002
#: templates/modals.html:28 templates/modals.html:51
msgid "Submit"
msgstr ""
@@ -8566,47 +8559,47 @@ msgstr ""
msgid "Form Title"
msgstr ""
-#: templates/js/translated/modals.js:403
+#: templates/js/translated/modals.js:421
msgid "Waiting for server..."
msgstr ""
-#: templates/js/translated/modals.js:562
+#: templates/js/translated/modals.js:568
msgid "Show Error Information"
msgstr ""
-#: templates/js/translated/modals.js:620
+#: templates/js/translated/modals.js:626
msgid "Accept"
msgstr ""
-#: templates/js/translated/modals.js:677
+#: templates/js/translated/modals.js:683
msgid "Loading Data"
msgstr ""
-#: templates/js/translated/modals.js:948
+#: templates/js/translated/modals.js:954
msgid "Invalid response from server"
msgstr ""
-#: templates/js/translated/modals.js:948
+#: templates/js/translated/modals.js:954
msgid "Form data missing from server response"
msgstr ""
-#: templates/js/translated/modals.js:960
+#: templates/js/translated/modals.js:966
msgid "Error posting form data"
msgstr ""
-#: templates/js/translated/modals.js:1057
+#: templates/js/translated/modals.js:1063
msgid "JSON response missing form data"
msgstr ""
-#: templates/js/translated/modals.js:1072
+#: templates/js/translated/modals.js:1078
msgid "Error 400: Bad Request"
msgstr ""
-#: templates/js/translated/modals.js:1073
+#: templates/js/translated/modals.js:1079
msgid "Server returned error code 400"
msgstr ""
-#: templates/js/translated/modals.js:1096
+#: templates/js/translated/modals.js:1102
msgid "Error requesting form data"
msgstr ""
@@ -8656,11 +8649,11 @@ msgstr ""
msgid "Mark as read"
msgstr ""
-#: templates/js/translated/notification.js:259
+#: templates/js/translated/notification.js:260
msgid "No unread notifications"
msgstr ""
-#: templates/js/translated/notification.js:300 templates/notifications.html:10
+#: templates/js/translated/notification.js:302 templates/notifications.html:10
msgid "Notifications will load here"
msgstr ""
@@ -8804,7 +8797,7 @@ msgstr ""
msgid "Quantity to receive"
msgstr ""
-#: templates/js/translated/order.js:1225 templates/js/translated/stock.js:2080
+#: templates/js/translated/order.js:1225 templates/js/translated/stock.js:2090
msgid "Stock Status"
msgstr ""
@@ -8828,7 +8821,7 @@ msgstr ""
msgid "Receive Purchase Order Items"
msgstr ""
-#: templates/js/translated/order.js:1602 templates/js/translated/part.js:870
+#: templates/js/translated/order.js:1602 templates/js/translated/part.js:914
msgid "No purchase orders found"
msgstr ""
@@ -8863,7 +8856,7 @@ msgstr ""
#: templates/js/translated/order.js:1937 templates/js/translated/order.js:2139
#: templates/js/translated/order.js:3467 templates/js/translated/order.js:3978
-#: templates/js/translated/part.js:1948 templates/js/translated/part.js:2301
+#: templates/js/translated/part.js:2044 templates/js/translated/part.js:2397
msgid "Unit Price"
msgstr ""
@@ -8873,11 +8866,11 @@ msgid "Total Price"
msgstr ""
#: templates/js/translated/order.js:1993 templates/js/translated/order.js:3525
-#: templates/js/translated/part.js:979
+#: templates/js/translated/part.js:1023
msgid "This line item is overdue"
msgstr ""
-#: templates/js/translated/order.js:2052 templates/js/translated/part.js:1025
+#: templates/js/translated/order.js:2052 templates/js/translated/part.js:1069
msgid "Receive line item"
msgstr ""
@@ -8998,7 +8991,7 @@ msgid "Delete Stock Allocation"
msgstr ""
#: templates/js/translated/order.js:3243 templates/js/translated/order.js:3332
-#: templates/js/translated/stock.js:1535
+#: templates/js/translated/stock.js:1545
msgid "Shipped to customer"
msgstr ""
@@ -9138,165 +9131,209 @@ msgstr ""
msgid "Create Part Variant"
msgstr ""
+#: templates/js/translated/part.js:405
+msgid "Active Part"
+msgstr ""
+
+#: templates/js/translated/part.js:406
+msgid "Part cannot be deleted as it is currently active"
+msgstr ""
+
+#: templates/js/translated/part.js:420
+msgid "Deleting this part cannot be reversed"
+msgstr ""
+
+#: templates/js/translated/part.js:422
+msgid "Any stock items for this part will be deleted"
+msgstr ""
+
#: templates/js/translated/part.js:423
+msgid "This part will be removed from any Bills of Material"
+msgstr ""
+
+#: templates/js/translated/part.js:424
+msgid "All manufacturer and supplier information for this part will be deleted"
+msgstr ""
+
+#: templates/js/translated/part.js:431
+msgid "Delete Part"
+msgstr ""
+
+#: templates/js/translated/part.js:467
msgid "You are subscribed to notifications for this item"
msgstr ""
-#: templates/js/translated/part.js:425
+#: templates/js/translated/part.js:469
msgid "You have subscribed to notifications for this item"
msgstr ""
-#: templates/js/translated/part.js:430
+#: templates/js/translated/part.js:474
msgid "Subscribe to notifications for this item"
msgstr ""
-#: templates/js/translated/part.js:432
+#: templates/js/translated/part.js:476
msgid "You have unsubscribed to notifications for this item"
msgstr ""
-#: templates/js/translated/part.js:449
+#: templates/js/translated/part.js:493
msgid "Validating the BOM will mark each line item as valid"
msgstr ""
-#: templates/js/translated/part.js:459
+#: templates/js/translated/part.js:503
msgid "Validate Bill of Materials"
msgstr ""
-#: templates/js/translated/part.js:462
+#: templates/js/translated/part.js:506
msgid "Validated Bill of Materials"
msgstr ""
-#: templates/js/translated/part.js:487
+#: templates/js/translated/part.js:531
msgid "Copy Bill of Materials"
msgstr ""
-#: templates/js/translated/part.js:513 templates/js/translated/part.js:1397
+#: templates/js/translated/part.js:557 templates/js/translated/part.js:1441
#: templates/js/translated/table_filters.js:452
msgid "Low stock"
msgstr ""
-#: templates/js/translated/part.js:523 templates/js/translated/part.js:1409
+#: templates/js/translated/part.js:567 templates/js/translated/part.js:1453
msgid "No stock available"
msgstr ""
-#: templates/js/translated/part.js:557 templates/js/translated/part.js:642
+#: templates/js/translated/part.js:601 templates/js/translated/part.js:686
msgid "Trackable part"
msgstr ""
-#: templates/js/translated/part.js:561 templates/js/translated/part.js:646
+#: templates/js/translated/part.js:605 templates/js/translated/part.js:690
msgid "Virtual part"
msgstr ""
-#: templates/js/translated/part.js:573
+#: templates/js/translated/part.js:617
msgid "Subscribed part"
msgstr ""
-#: templates/js/translated/part.js:577
+#: templates/js/translated/part.js:621
msgid "Salable part"
msgstr ""
-#: templates/js/translated/part.js:705
+#: templates/js/translated/part.js:749
msgid "No variants found"
msgstr ""
-#: templates/js/translated/part.js:1095
+#: templates/js/translated/part.js:1139
msgid "Delete part relationship"
msgstr ""
-#: templates/js/translated/part.js:1119
+#: templates/js/translated/part.js:1163
msgid "Delete Part Relationship"
msgstr ""
-#: templates/js/translated/part.js:1184 templates/js/translated/part.js:1480
+#: templates/js/translated/part.js:1228 templates/js/translated/part.js:1524
msgid "No parts found"
msgstr ""
-#: templates/js/translated/part.js:1223
+#: templates/js/translated/part.js:1267
msgid "Not available"
msgstr ""
-#: templates/js/translated/part.js:1374
+#: templates/js/translated/part.js:1418
msgid "No category"
msgstr ""
-#: templates/js/translated/part.js:1504 templates/js/translated/part.js:1664
-#: templates/js/translated/stock.js:2238
+#: templates/js/translated/part.js:1548 templates/js/translated/part.js:1760
+#: templates/js/translated/stock.js:2248
msgid "Display as list"
msgstr ""
-#: templates/js/translated/part.js:1520
+#: templates/js/translated/part.js:1564
msgid "Display as grid"
msgstr ""
-#: templates/js/translated/part.js:1683 templates/js/translated/stock.js:2257
+#: templates/js/translated/part.js:1630
+msgid "Set the part category for the selected parts"
+msgstr ""
+
+#: templates/js/translated/part.js:1635
+msgid "Set Part Category"
+msgstr ""
+
+#: templates/js/translated/part.js:1640
+msgid "Select Part Category"
+msgstr ""
+
+#: templates/js/translated/part.js:1653
+msgid "Category is required"
+msgstr ""
+
+#: templates/js/translated/part.js:1779 templates/js/translated/stock.js:2267
msgid "Display as tree"
msgstr ""
-#: templates/js/translated/part.js:1747
+#: templates/js/translated/part.js:1843
msgid "Subscribed category"
msgstr ""
-#: templates/js/translated/part.js:1761 templates/js/translated/stock.js:2301
+#: templates/js/translated/part.js:1857 templates/js/translated/stock.js:2311
msgid "Path"
msgstr ""
-#: templates/js/translated/part.js:1805
+#: templates/js/translated/part.js:1901
msgid "No test templates matching query"
msgstr ""
-#: templates/js/translated/part.js:1856 templates/js/translated/stock.js:1233
+#: templates/js/translated/part.js:1952 templates/js/translated/stock.js:1243
msgid "Edit test result"
msgstr ""
-#: templates/js/translated/part.js:1857 templates/js/translated/stock.js:1234
-#: templates/js/translated/stock.js:1493
+#: templates/js/translated/part.js:1953 templates/js/translated/stock.js:1244
+#: templates/js/translated/stock.js:1503
msgid "Delete test result"
msgstr ""
-#: templates/js/translated/part.js:1863
+#: templates/js/translated/part.js:1959
msgid "This test is defined for a parent part"
msgstr ""
-#: templates/js/translated/part.js:1885
+#: templates/js/translated/part.js:1981
msgid "Edit Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:1899
+#: templates/js/translated/part.js:1995
msgid "Delete Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:1924
+#: templates/js/translated/part.js:2020
#, python-brace-format
msgid "No ${human_name} information found"
msgstr ""
-#: templates/js/translated/part.js:1981
+#: templates/js/translated/part.js:2077
#, python-brace-format
msgid "Edit ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:1982
+#: templates/js/translated/part.js:2078
#, python-brace-format
msgid "Delete ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:2096
+#: templates/js/translated/part.js:2192
msgid "Current Stock"
msgstr ""
-#: templates/js/translated/part.js:2129
+#: templates/js/translated/part.js:2225
msgid "No scheduling information available for this part"
msgstr ""
-#: templates/js/translated/part.js:2155
+#: templates/js/translated/part.js:2251
msgid "Scheduled Stock Quantities"
msgstr ""
-#: templates/js/translated/part.js:2225
+#: templates/js/translated/part.js:2321
msgid "Single Price"
msgstr ""
-#: templates/js/translated/part.js:2244
+#: templates/js/translated/part.js:2340
msgid "Single Price Difference"
msgstr ""
@@ -9378,360 +9415,360 @@ msgstr ""
msgid "Remove results"
msgstr ""
-#: templates/js/translated/stock.js:73
+#: templates/js/translated/stock.js:72
msgid "Serialize Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:101
+#: templates/js/translated/stock.js:100
msgid "Confirm Stock Serialization"
msgstr ""
-#: templates/js/translated/stock.js:110
+#: templates/js/translated/stock.js:109
msgid "Parent stock location"
msgstr ""
-#: templates/js/translated/stock.js:139
+#: templates/js/translated/stock.js:138
msgid "Edit Stock Location"
msgstr ""
-#: templates/js/translated/stock.js:154
+#: templates/js/translated/stock.js:153
msgid "New Stock Location"
msgstr ""
-#: templates/js/translated/stock.js:194
+#: templates/js/translated/stock.js:193
msgid "This part cannot be serialized"
msgstr ""
-#: templates/js/translated/stock.js:233
+#: templates/js/translated/stock.js:232
msgid "Enter initial quantity for this stock item"
msgstr ""
-#: templates/js/translated/stock.js:239
+#: templates/js/translated/stock.js:238
msgid "Enter serial numbers for new stock (or leave blank)"
msgstr ""
-#: templates/js/translated/stock.js:304
+#: templates/js/translated/stock.js:303
msgid "Stock item duplicated"
msgstr ""
-#: templates/js/translated/stock.js:324
+#: templates/js/translated/stock.js:323
msgid "Duplicate Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:344
+#: templates/js/translated/stock.js:343
msgid "Edit Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:394
+#: templates/js/translated/stock.js:393
msgid "Created new stock item"
msgstr ""
-#: templates/js/translated/stock.js:407
+#: templates/js/translated/stock.js:406
msgid "Created multiple stock items"
msgstr ""
-#: templates/js/translated/stock.js:432
+#: templates/js/translated/stock.js:431
msgid "Find Serial Number"
msgstr ""
-#: templates/js/translated/stock.js:436 templates/js/translated/stock.js:437
+#: templates/js/translated/stock.js:435 templates/js/translated/stock.js:436
msgid "Enter serial number"
msgstr ""
-#: templates/js/translated/stock.js:453
+#: templates/js/translated/stock.js:452
msgid "Enter a serial number"
msgstr ""
-#: templates/js/translated/stock.js:473
+#: templates/js/translated/stock.js:472
msgid "No matching serial number"
msgstr ""
-#: templates/js/translated/stock.js:482
+#: templates/js/translated/stock.js:481
msgid "More than one matching result found"
msgstr ""
-#: templates/js/translated/stock.js:605
+#: templates/js/translated/stock.js:604
msgid "Confirm stock assignment"
msgstr ""
-#: templates/js/translated/stock.js:606
+#: templates/js/translated/stock.js:605
msgid "Assign Stock to Customer"
msgstr ""
-#: templates/js/translated/stock.js:683
+#: templates/js/translated/stock.js:682
msgid "Warning: Merge operation cannot be reversed"
msgstr ""
-#: templates/js/translated/stock.js:684
+#: templates/js/translated/stock.js:683
msgid "Some information will be lost when merging stock items"
msgstr ""
-#: templates/js/translated/stock.js:686
+#: templates/js/translated/stock.js:685
msgid "Stock transaction history will be deleted for merged items"
msgstr ""
-#: templates/js/translated/stock.js:687
+#: templates/js/translated/stock.js:686
msgid "Supplier part information will be deleted for merged items"
msgstr ""
-#: templates/js/translated/stock.js:773
+#: templates/js/translated/stock.js:772
msgid "Confirm stock item merge"
msgstr ""
-#: templates/js/translated/stock.js:774
+#: templates/js/translated/stock.js:773
msgid "Merge Stock Items"
msgstr ""
-#: templates/js/translated/stock.js:869
+#: templates/js/translated/stock.js:868
msgid "Transfer Stock"
msgstr ""
-#: templates/js/translated/stock.js:870
+#: templates/js/translated/stock.js:869
msgid "Move"
msgstr ""
-#: templates/js/translated/stock.js:876
+#: templates/js/translated/stock.js:875
msgid "Count Stock"
msgstr ""
-#: templates/js/translated/stock.js:877
+#: templates/js/translated/stock.js:876
msgid "Count"
msgstr ""
-#: templates/js/translated/stock.js:881
+#: templates/js/translated/stock.js:880
msgid "Remove Stock"
msgstr ""
-#: templates/js/translated/stock.js:882
+#: templates/js/translated/stock.js:881
msgid "Take"
msgstr ""
-#: templates/js/translated/stock.js:886
+#: templates/js/translated/stock.js:885
msgid "Add Stock"
msgstr ""
-#: templates/js/translated/stock.js:887 users/models.py:215
+#: templates/js/translated/stock.js:886 users/models.py:215
msgid "Add"
msgstr ""
-#: templates/js/translated/stock.js:891
+#: templates/js/translated/stock.js:890
msgid "Delete Stock"
msgstr ""
-#: templates/js/translated/stock.js:984
+#: templates/js/translated/stock.js:983
msgid "Quantity cannot be adjusted for serialized stock"
msgstr ""
-#: templates/js/translated/stock.js:984
+#: templates/js/translated/stock.js:983
msgid "Specify stock quantity"
msgstr ""
-#: templates/js/translated/stock.js:1024
+#: templates/js/translated/stock.js:1023
msgid "You must select at least one available stock item"
msgstr ""
-#: templates/js/translated/stock.js:1047
+#: templates/js/translated/stock.js:1046
msgid "Confirm stock adjustment"
msgstr ""
-#: templates/js/translated/stock.js:1172
+#: templates/js/translated/stock.js:1182
msgid "PASS"
msgstr ""
-#: templates/js/translated/stock.js:1174
+#: templates/js/translated/stock.js:1184
msgid "FAIL"
msgstr ""
-#: templates/js/translated/stock.js:1179
+#: templates/js/translated/stock.js:1189
msgid "NO RESULT"
msgstr ""
-#: templates/js/translated/stock.js:1226
+#: templates/js/translated/stock.js:1236
msgid "Pass test"
msgstr ""
-#: templates/js/translated/stock.js:1229
+#: templates/js/translated/stock.js:1239
msgid "Add test result"
msgstr ""
-#: templates/js/translated/stock.js:1255
+#: templates/js/translated/stock.js:1265
msgid "No test results found"
msgstr ""
-#: templates/js/translated/stock.js:1311
+#: templates/js/translated/stock.js:1321
msgid "Test Date"
msgstr ""
-#: templates/js/translated/stock.js:1476
+#: templates/js/translated/stock.js:1486
msgid "Edit Test Result"
msgstr ""
-#: templates/js/translated/stock.js:1498
+#: templates/js/translated/stock.js:1508
msgid "Delete Test Result"
msgstr ""
-#: templates/js/translated/stock.js:1527
+#: templates/js/translated/stock.js:1537
msgid "In production"
msgstr ""
-#: templates/js/translated/stock.js:1531
+#: templates/js/translated/stock.js:1541
msgid "Installed in Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:1539
+#: templates/js/translated/stock.js:1549
msgid "Assigned to Sales Order"
msgstr ""
-#: templates/js/translated/stock.js:1545
+#: templates/js/translated/stock.js:1555
msgid "No stock location set"
msgstr ""
-#: templates/js/translated/stock.js:1712
+#: templates/js/translated/stock.js:1722
msgid "Stock item is in production"
msgstr ""
-#: templates/js/translated/stock.js:1717
+#: templates/js/translated/stock.js:1727
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:1720
+#: templates/js/translated/stock.js:1730
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:1723
+#: templates/js/translated/stock.js:1733
msgid "Serialized stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:1725
+#: templates/js/translated/stock.js:1735
msgid "Stock item has been fully allocated"
msgstr ""
-#: templates/js/translated/stock.js:1727
+#: templates/js/translated/stock.js:1737
msgid "Stock item has been partially allocated"
msgstr ""
-#: templates/js/translated/stock.js:1730
+#: templates/js/translated/stock.js:1740
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:1734
+#: templates/js/translated/stock.js:1744
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:1736
+#: templates/js/translated/stock.js:1746
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:1743
+#: templates/js/translated/stock.js:1753
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:1745
+#: templates/js/translated/stock.js:1755
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:1747
+#: templates/js/translated/stock.js:1757
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:1751
+#: templates/js/translated/stock.js:1761
#: templates/js/translated/table_filters.js:188
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:1802
+#: templates/js/translated/stock.js:1812
msgid "Stocktake"
msgstr ""
-#: templates/js/translated/stock.js:1884
+#: templates/js/translated/stock.js:1894
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:1922
+#: templates/js/translated/stock.js:1932
msgid "No stock items matching query"
msgstr ""
-#: templates/js/translated/stock.js:2095
+#: templates/js/translated/stock.js:2105
msgid "Set Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:2109
+#: templates/js/translated/stock.js:2119
msgid "Select Status Code"
msgstr ""
-#: templates/js/translated/stock.js:2110
+#: templates/js/translated/stock.js:2120
msgid "Status code must be selected"
msgstr ""
-#: templates/js/translated/stock.js:2365
+#: templates/js/translated/stock.js:2375
msgid "Details"
msgstr ""
-#: templates/js/translated/stock.js:2381
+#: templates/js/translated/stock.js:2391
msgid "Part information unavailable"
msgstr ""
-#: templates/js/translated/stock.js:2403
+#: templates/js/translated/stock.js:2413
msgid "Location no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2422
+#: templates/js/translated/stock.js:2432
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2441
+#: templates/js/translated/stock.js:2451
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2459
+#: templates/js/translated/stock.js:2469
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2482
+#: templates/js/translated/stock.js:2492
msgid "Added"
msgstr ""
-#: templates/js/translated/stock.js:2490
+#: templates/js/translated/stock.js:2500
msgid "Removed"
msgstr ""
-#: templates/js/translated/stock.js:2566
+#: templates/js/translated/stock.js:2576
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:2617 templates/js/translated/stock.js:2653
+#: templates/js/translated/stock.js:2627 templates/js/translated/stock.js:2663
msgid "Uninstall Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:2666
+#: templates/js/translated/stock.js:2676
msgid "Select stock item to uninstall"
msgstr ""
-#: templates/js/translated/stock.js:2687
+#: templates/js/translated/stock.js:2697
msgid "Install another stock item into this item"
msgstr ""
-#: templates/js/translated/stock.js:2688
+#: templates/js/translated/stock.js:2698
msgid "Stock items can only be installed if they meet the following criteria"
msgstr ""
-#: templates/js/translated/stock.js:2690
+#: templates/js/translated/stock.js:2700
msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:2691
+#: templates/js/translated/stock.js:2701
msgid "The Stock Item is currently available in stock"
msgstr ""
-#: templates/js/translated/stock.js:2692
+#: templates/js/translated/stock.js:2702
msgid "The Stock Item is not already installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:2693
+#: templates/js/translated/stock.js:2703
msgid "The Stock Item is tracked by either a batch code or serial number"
msgstr ""
-#: templates/js/translated/stock.js:2706
+#: templates/js/translated/stock.js:2716
msgid "Select part to install"
msgstr ""
diff --git a/InvenTree/locale/tr/LC_MESSAGES/django.po b/InvenTree/locale/tr/LC_MESSAGES/django.po
index 9109303ea1..519da2a1ad 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: 2022-06-05 14:26+0000\n"
-"PO-Revision-Date: 2022-06-05 14:34\n"
+"POT-Creation-Date: 2022-06-06 22:59+0000\n"
+"PO-Revision-Date: 2022-06-07 14:34\n"
"Last-Translator: \n"
"Language-Team: Turkish\n"
"Language: tr_TR\n"
@@ -17,7 +17,7 @@ msgstr ""
"X-Crowdin-File: /[inventree.InvenTree] l10/InvenTree/locale/en/LC_MESSAGES/django.po\n"
"X-Crowdin-File-ID: 154\n"
-#: InvenTree/api.py:46
+#: InvenTree/api.py:49
msgid "API endpoint not found"
msgstr "API uç noktası bulunamadı"
@@ -29,275 +29,273 @@ msgstr ""
msgid "Enter date"
msgstr "Tarih giriniz"
-#: InvenTree/forms.py:117 templates/account/email_confirm.html:20
-#: templates/js/translated/forms.js:630
-msgid "Confirm"
-msgstr "Onay"
-
-#: InvenTree/forms.py:134
+#: InvenTree/forms.py:117
msgid "Confirm delete"
msgstr "Silmeyi Onayla"
-#: InvenTree/forms.py:135
+#: InvenTree/forms.py:118
msgid "Confirm item deletion"
msgstr "Silmeyi onayla"
-#: InvenTree/forms.py:167
+#: InvenTree/forms.py:150
msgid "Enter password"
msgstr "Şifrenizi girin"
-#: InvenTree/forms.py:168
+#: InvenTree/forms.py:151
msgid "Enter new password"
msgstr "Lütfen Yeni Parolayı Girin"
-#: InvenTree/forms.py:175
+#: InvenTree/forms.py:158
msgid "Confirm password"
msgstr "Parolayı doğrulayın"
-#: InvenTree/forms.py:176
+#: InvenTree/forms.py:159
msgid "Confirm new password"
msgstr "Yeni parolayı doğrulayın"
-#: InvenTree/forms.py:213
-msgid "Select Category"
-msgstr "Kategori Seçin"
-
-#: InvenTree/forms.py:234
+#: InvenTree/forms.py:184
msgid "Email (again)"
msgstr "E-posta (tekrar)"
-#: InvenTree/forms.py:238
+#: InvenTree/forms.py:188
msgid "Email address confirmation"
msgstr "E-posta adresi onayı"
-#: InvenTree/forms.py:259
+#: InvenTree/forms.py:209
msgid "You must type the same email each time."
msgstr "Her seferind eaynı e-posta adresini yazmalısınız."
-#: InvenTree/helpers.py:402
+#: InvenTree/helpers.py:404
#, python-brace-format
msgid "Duplicate serial: {sn}"
msgstr "Tekrarlanan seri no:{sn}"
-#: InvenTree/helpers.py:409 order/models.py:365 order/models.py:517
+#: InvenTree/helpers.py:411 order/models.py:370 order/models.py:522
msgid "Invalid quantity provided"
msgstr "Geçersiz veri sağlandı"
-#: InvenTree/helpers.py:412
+#: InvenTree/helpers.py:414
msgid "Empty serial number string"
msgstr "Boş seri numarası dizesi"
-#: InvenTree/helpers.py:444
+#: InvenTree/helpers.py:446
#, python-brace-format
msgid "Invalid group range: {g}"
msgstr ""
-#: InvenTree/helpers.py:447
+#: InvenTree/helpers.py:449
#, python-brace-format
msgid "Invalid group: {g}"
msgstr "Geçersiz grup: {g}"
-#: InvenTree/helpers.py:475
+#: InvenTree/helpers.py:477
#, python-brace-format
msgid "Invalid group sequence: {g}"
msgstr ""
-#: InvenTree/helpers.py:483
+#: InvenTree/helpers.py:485
#, python-brace-format
msgid "Invalid/no group {group}"
msgstr "Geçersiz grup: {group}"
-#: InvenTree/helpers.py:489
+#: InvenTree/helpers.py:491
msgid "No serial numbers found"
msgstr "Seri numarası bulunamadı"
-#: InvenTree/helpers.py:493
+#: InvenTree/helpers.py:495
#, python-brace-format
msgid "Number of unique serial numbers ({s}) must match quantity ({q})"
msgstr ""
-#: InvenTree/models.py:174
+#: InvenTree/models.py:178
msgid "Missing file"
msgstr "Eksik dosya"
-#: InvenTree/models.py:175
+#: InvenTree/models.py:179
msgid "Missing external link"
msgstr "Bozuk dış bağlantı"
-#: InvenTree/models.py:187 stock/models.py:2087
-#: templates/js/translated/attachment.js:101
-#: templates/js/translated/attachment.js:198
+#: InvenTree/models.py:191 stock/models.py:2091
+#: templates/js/translated/attachment.js:103
+#: templates/js/translated/attachment.js:194
msgid "Attachment"
msgstr "Ek"
-#: InvenTree/models.py:188
+#: InvenTree/models.py:192
msgid "Select file to attach"
msgstr "Eklenecek dosyayı seç"
-#: InvenTree/models.py:194 company/models.py:123 company/models.py:272
-#: company/models.py:506 order/models.py:135 order/models.py:1235
+#: InvenTree/models.py:198 company/models.py:123 company/models.py:272
+#: company/models.py:506 order/models.py:136 order/models.py:1251
#: part/models.py:795
#: report/templates/report/inventree_build_order_base.html:165
-#: templates/js/translated/company.js:655
-#: templates/js/translated/company.js:946 templates/js/translated/order.js:2676
-#: templates/js/translated/part.js:1441
+#: templates/js/translated/company.js:640
+#: templates/js/translated/company.js:931 templates/js/translated/order.js:2676
+#: templates/js/translated/part.js:1485
msgid "Link"
msgstr "Bağlantı"
-#: InvenTree/models.py:195 build/models.py:320 part/models.py:796
+#: InvenTree/models.py:199 build/models.py:320 part/models.py:796
#: stock/models.py:642
msgid "Link to external URL"
msgstr "Harici URL'ye bağlantı"
-#: InvenTree/models.py:198 templates/js/translated/attachment.js:102
-#: templates/js/translated/attachment.js:242
+#: InvenTree/models.py:202 templates/js/translated/attachment.js:104
+#: templates/js/translated/attachment.js:238
msgid "Comment"
msgstr "Yorum"
-#: InvenTree/models.py:198
+#: InvenTree/models.py:202
msgid "File comment"
msgstr "Dosya yorumu"
-#: InvenTree/models.py:204 InvenTree/models.py:205 common/models.py:1499
-#: common/models.py:1500 common/models.py:1728 common/models.py:1729
-#: common/models.py:1991 common/models.py:1992 part/models.py:2153
-#: part/models.py:2173 plugin/models.py:238 plugin/models.py:239
+#: InvenTree/models.py:208 InvenTree/models.py:209 common/models.py:1506
+#: common/models.py:1507 common/models.py:1735 common/models.py:1736
+#: common/models.py:1998 common/models.py:1999 part/models.py:2141
+#: part/models.py:2161 plugin/models.py:238 plugin/models.py:239
#: report/templates/report/inventree_test_report_base.html:96
-#: templates/js/translated/stock.js:2513
+#: templates/js/translated/stock.js:2523
msgid "User"
msgstr "Kullanıcı"
-#: InvenTree/models.py:208
+#: InvenTree/models.py:212
msgid "upload date"
msgstr "yükleme tarihi"
-#: InvenTree/models.py:230
+#: InvenTree/models.py:234
msgid "Filename must not be empty"
msgstr "Dosya adı boş olamaz"
-#: InvenTree/models.py:253
+#: InvenTree/models.py:257
msgid "Invalid attachment directory"
msgstr "Ek dosya yolu geçersiz"
-#: InvenTree/models.py:263
+#: InvenTree/models.py:267
#, python-brace-format
msgid "Filename contains illegal character '{c}'"
msgstr "Dosya adı geçersiz karakterler içeriyor'{c}'"
-#: InvenTree/models.py:266
+#: InvenTree/models.py:270
msgid "Filename missing extension"
msgstr "Dosya uzantısı yok"
-#: InvenTree/models.py:273
+#: InvenTree/models.py:277
msgid "Attachment with this filename already exists"
msgstr "Aynı isimli başka bir dosya zaten var"
-#: InvenTree/models.py:280
+#: InvenTree/models.py:284
msgid "Error renaming file"
msgstr "Dosya adı değiştirilirken hata"
-#: InvenTree/models.py:314
+#: InvenTree/models.py:318
msgid "Invalid choice"
msgstr "Geçersiz seçim"
-#: InvenTree/models.py:333 InvenTree/models.py:334 common/models.py:1714
+#: InvenTree/models.py:337 InvenTree/models.py:338 common/models.py:1721
#: company/models.py:354 label/models.py:101 part/models.py:739
-#: part/models.py:2331 plugin/models.py:93 report/models.py:151
+#: part/models.py:2319 plugin/models.py:93 report/models.py:151
#: templates/InvenTree/notifications/notifications.html:84
#: templates/InvenTree/settings/mixins/urls.html:13
#: templates/InvenTree/settings/plugin.html:49
#: templates/InvenTree/settings/plugin.html:132
#: templates/InvenTree/settings/plugin_settings.html:23
#: templates/InvenTree/settings/settings.html:346
-#: templates/js/translated/company.js:539
-#: templates/js/translated/company.js:757 templates/js/translated/part.js:615
-#: templates/js/translated/part.js:767 templates/js/translated/part.js:1736
-#: templates/js/translated/stock.js:2283
+#: templates/js/translated/company.js:530
+#: templates/js/translated/company.js:742 templates/js/translated/part.js:659
+#: templates/js/translated/part.js:811 templates/js/translated/part.js:1832
+#: templates/js/translated/stock.js:2293
msgid "Name"
msgstr "Adı"
-#: InvenTree/models.py:340 build/models.py:197
+#: InvenTree/models.py:344 build/models.py:197
#: build/templates/build/detail.html:24 company/models.py:278
#: company/models.py:512 company/templates/company/company_base.html:71
#: company/templates/company/manufacturer_part.html:75
#: company/templates/company/supplier_part.html:73 label/models.py:108
-#: order/models.py:133 part/models.py:762 part/templates/part/category.html:74
-#: part/templates/part/part_base.html:167
-#: part/templates/part/set_category.html:14 report/models.py:164
+#: order/models.py:134 part/models.py:762 part/templates/part/category.html:74
+#: part/templates/part/part_base.html:167 report/models.py:164
#: report/models.py:509 report/models.py:550
#: report/templates/report/inventree_build_order_base.html:118
#: stock/templates/stock/location.html:103
#: templates/InvenTree/settings/plugin_settings.html:33
-#: templates/js/translated/bom.js:553 templates/js/translated/bom.js:851
-#: templates/js/translated/build.js:2476 templates/js/translated/company.js:401
-#: templates/js/translated/company.js:666
-#: templates/js/translated/company.js:957 templates/js/translated/order.js:1656
+#: templates/js/translated/bom.js:553 templates/js/translated/bom.js:845
+#: templates/js/translated/build.js:2476 templates/js/translated/company.js:395
+#: templates/js/translated/company.js:651
+#: templates/js/translated/company.js:942 templates/js/translated/order.js:1656
#: templates/js/translated/order.js:1888 templates/js/translated/order.js:2476
-#: templates/js/translated/part.js:674 templates/js/translated/part.js:1082
-#: templates/js/translated/part.js:1355 templates/js/translated/part.js:1755
-#: templates/js/translated/part.js:1824 templates/js/translated/stock.js:1676
-#: templates/js/translated/stock.js:2295 templates/js/translated/stock.js:2350
+#: templates/js/translated/part.js:718 templates/js/translated/part.js:1126
+#: templates/js/translated/part.js:1399 templates/js/translated/part.js:1851
+#: templates/js/translated/part.js:1920 templates/js/translated/stock.js:1686
+#: templates/js/translated/stock.js:2305 templates/js/translated/stock.js:2360
msgid "Description"
msgstr "Açıklama"
-#: InvenTree/models.py:341
+#: InvenTree/models.py:345
msgid "Description (optional)"
msgstr "Açıklama (isteğe bağlı)"
-#: InvenTree/models.py:349
+#: InvenTree/models.py:353
msgid "parent"
msgstr "üst"
-#: InvenTree/serializers.py:52 part/models.py:2652
+#: InvenTree/models.py:466
+msgid "Server Error"
+msgstr ""
+
+#: InvenTree/models.py:467
+msgid "An error has been logged by the server."
+msgstr ""
+
+#: InvenTree/serializers.py:52 part/models.py:2640
msgid "Must be a valid number"
msgstr "Geçerli bir numara olmalı"
-#: InvenTree/serializers.py:271
+#: InvenTree/serializers.py:263
msgid "Filename"
msgstr "Dosya adı"
-#: InvenTree/serializers.py:306
+#: InvenTree/serializers.py:298
msgid "Invalid value"
msgstr "Geçersiz değer"
-#: InvenTree/serializers.py:328
+#: InvenTree/serializers.py:320
msgid "Data File"
msgstr "Veri Dosyası"
-#: InvenTree/serializers.py:329
+#: InvenTree/serializers.py:321
msgid "Select data file for upload"
msgstr "Yüklemek istediğiniz dosyayı seçin"
-#: InvenTree/serializers.py:350
+#: InvenTree/serializers.py:342
msgid "Unsupported file type"
msgstr "Desteklenmeyen dsoya tipi"
-#: InvenTree/serializers.py:356
+#: InvenTree/serializers.py:348
msgid "File is too large"
msgstr "Dosya boyutu çok büyük"
-#: InvenTree/serializers.py:377
+#: InvenTree/serializers.py:369
msgid "No columns found in file"
msgstr "Dosyada kolon bulunamadı"
-#: InvenTree/serializers.py:380
+#: InvenTree/serializers.py:372
msgid "No data rows found in file"
msgstr "Dosyada satır bulunamadı"
-#: InvenTree/serializers.py:503
+#: InvenTree/serializers.py:495
msgid "No data rows provided"
msgstr "Dosyada satır bulunamadı"
-#: InvenTree/serializers.py:506
+#: InvenTree/serializers.py:498
msgid "No data columns supplied"
msgstr "Dosyada uygun kolon bulunamadı"
-#: InvenTree/serializers.py:583
+#: InvenTree/serializers.py:575
#, python-brace-format
msgid "Missing required column: '{name}'"
msgstr "Gerekli kolon ismi eksik:'{name}'"
-#: InvenTree/serializers.py:592
+#: InvenTree/serializers.py:584
#, python-brace-format
msgid "Duplicate column: '{col}'"
msgstr "Tekrarlanan kolon ismi:'{col}'"
@@ -440,7 +438,7 @@ msgstr "Kayıp"
msgid "Returned"
msgstr "İade"
-#: InvenTree/status_codes.py:141 order/models.py:1114
+#: InvenTree/status_codes.py:141 order/models.py:1130
#: templates/js/translated/order.js:3264 templates/js/translated/order.js:3607
msgid "Shipped"
msgstr "Sevk edildi"
@@ -525,7 +523,7 @@ msgstr "Üst ögeden ayır"
msgid "Split child item"
msgstr "Alt ögeyi ayır"
-#: InvenTree/status_codes.py:281 templates/js/translated/stock.js:2020
+#: InvenTree/status_codes.py:281 templates/js/translated/stock.js:2030
msgid "Merged stock items"
msgstr "Stok parçalarını birleştir"
@@ -597,27 +595,27 @@ msgstr "Fazlalık %100'ü geçmemelidir"
msgid "Invalid value for overage"
msgstr ""
-#: InvenTree/views.py:522
+#: InvenTree/views.py:521
msgid "Delete Item"
msgstr "Ögeyi Sil"
-#: InvenTree/views.py:571
+#: InvenTree/views.py:570
msgid "Check box to confirm item deletion"
msgstr "Öge silme işlemini onaylamak için kutuyu işaretleyin"
-#: InvenTree/views.py:586 templates/InvenTree/settings/user.html:22
+#: InvenTree/views.py:585 templates/InvenTree/settings/user.html:22
msgid "Edit User Information"
msgstr "Kullanıcı Bilgisini Düzenle"
-#: InvenTree/views.py:598 templates/InvenTree/settings/user.html:19
+#: InvenTree/views.py:597 templates/InvenTree/settings/user.html:19
msgid "Set Password"
msgstr "Şifre Belirle"
-#: InvenTree/views.py:618
+#: InvenTree/views.py:617
msgid "Password fields must match"
msgstr "Parola alanları eşleşmelidir"
-#: InvenTree/views.py:842 templates/navbar.html:152
+#: InvenTree/views.py:807 templates/navbar.html:152
msgid "System Information"
msgstr "Sistem Bilgisi"
@@ -628,6 +626,7 @@ msgstr ""
#: build/models.py:131 build/templates/build/build_base.html:9
#: build/templates/build/build_base.html:27
#: report/templates/report/inventree_build_order_base.html:106
+#: templates/email/overdue_build_order.html:15
#: templates/js/translated/build.js:727
msgid "Build Order"
msgstr "Yapım İşi Emri"
@@ -646,12 +645,12 @@ msgstr "Yapım İşi Emirleri"
msgid "Build Order Reference"
msgstr "Yapım İşi Emri Referansı"
-#: build/models.py:189 order/models.py:288 order/models.py:638
-#: order/models.py:916 part/models.py:2570
+#: build/models.py:189 order/models.py:293 order/models.py:654
+#: order/models.py:932 part/models.py:2558
#: part/templates/part/upload_bom.html:54
#: report/templates/report/inventree_po_report.html:91
#: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:688 templates/js/translated/bom.js:858
+#: templates/js/translated/bom.js:690 templates/js/translated/bom.js:852
#: templates/js/translated/build.js:1777 templates/js/translated/order.js:1919
#: templates/js/translated/order.js:2120 templates/js/translated/order.js:3448
#: templates/js/translated/order.js:3959
@@ -673,13 +672,12 @@ msgstr "Bu yapım işinin tahsis edildiği yapım işi emri"
#: build/models.py:215 build/templates/build/build_base.html:77
#: build/templates/build/detail.html:29 company/models.py:647
-#: order/models.py:1012 order/models.py:1103 part/models.py:336
-#: part/models.py:2099 part/models.py:2114 part/models.py:2133
-#: part/models.py:2151 part/models.py:2250 part/models.py:2370
-#: part/models.py:2460 part/models.py:2545 part/models.py:2821
-#: part/serializers.py:793 part/templates/part/part_app_base.html:8
+#: order/models.py:1028 order/models.py:1119 part/models.py:336
+#: part/models.py:2087 part/models.py:2102 part/models.py:2121
+#: part/models.py:2139 part/models.py:2238 part/models.py:2358
+#: part/models.py:2448 part/models.py:2533 part/models.py:2809
+#: part/serializers.py:795 part/templates/part/part_app_base.html:8
#: part/templates/part/part_pricing.html:12
-#: part/templates/part/set_category.html:13
#: part/templates/part/upload_bom.html:52
#: report/templates/report/inventree_build_order_base.html:110
#: report/templates/report/inventree_po_report.html:89
@@ -687,22 +685,23 @@ msgstr "Bu yapım işinin tahsis edildiği yapım işi emri"
#: templates/InvenTree/search.html:80
#: templates/email/build_order_required_stock.html:17
#: templates/email/low_stock_notification.html:16
+#: templates/email/overdue_build_order.html:16
#: templates/js/translated/barcode.js:435 templates/js/translated/bom.js:552
-#: templates/js/translated/bom.js:687 templates/js/translated/bom.js:805
+#: templates/js/translated/bom.js:689 templates/js/translated/bom.js:799
#: templates/js/translated/build.js:1153 templates/js/translated/build.js:1647
#: templates/js/translated/build.js:2083 templates/js/translated/build.js:2481
-#: templates/js/translated/company.js:252
-#: templates/js/translated/company.js:486
-#: templates/js/translated/company.js:607
-#: templates/js/translated/company.js:866 templates/js/translated/order.js:100
+#: templates/js/translated/company.js:253
+#: templates/js/translated/company.js:482
+#: templates/js/translated/company.js:592
+#: templates/js/translated/company.js:851 templates/js/translated/order.js:100
#: templates/js/translated/order.js:883 templates/js/translated/order.js:1315
#: templates/js/translated/order.js:1873 templates/js/translated/order.js:2819
#: templates/js/translated/order.js:3217 templates/js/translated/order.js:3432
-#: templates/js/translated/part.js:1067 templates/js/translated/part.js:1137
-#: templates/js/translated/part.js:1333 templates/js/translated/stock.js:531
-#: templates/js/translated/stock.js:696 templates/js/translated/stock.js:903
-#: templates/js/translated/stock.js:1633 templates/js/translated/stock.js:2376
-#: templates/js/translated/stock.js:2571 templates/js/translated/stock.js:2705
+#: templates/js/translated/part.js:1111 templates/js/translated/part.js:1181
+#: templates/js/translated/part.js:1377 templates/js/translated/stock.js:530
+#: templates/js/translated/stock.js:695 templates/js/translated/stock.js:902
+#: templates/js/translated/stock.js:1643 templates/js/translated/stock.js:2386
+#: templates/js/translated/stock.js:2581 templates/js/translated/stock.js:2715
msgid "Part"
msgstr "Parça"
@@ -768,12 +767,12 @@ 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:282 order/models.py:137 part/models.py:932
+#: build/models.py:282 order/models.py:138 part/models.py:932
#: part/templates/part/part_base.html:305 templates/js/translated/order.js:2489
msgid "Creation Date"
msgstr "Oluşturulma tarihi"
-#: build/models.py:286 order/models.py:660
+#: build/models.py:286 order/models.py:676
msgid "Target completion date"
msgstr "Hedef tamamlama tarihi"
@@ -781,7 +780,7 @@ msgstr "Hedef tamamlama tarihi"
msgid "Target date for build completion. Build will be overdue after this date."
msgstr "Yapım işinin tamamlanması için hedef tarih. Bu tarihten sonra yapım işi gecikmiş olacak."
-#: build/models.py:290 order/models.py:331
+#: build/models.py:290 order/models.py:336
#: templates/js/translated/build.js:2558
msgid "Completion Date"
msgstr "Tamamlama tarihi"
@@ -799,7 +798,7 @@ msgid "User who issued this build order"
msgstr "Bu yapım işi emrini veren kullanıcı"
#: build/models.py:313 build/templates/build/build_base.html:190
-#: build/templates/build/detail.html:115 order/models.py:151
+#: build/templates/build/detail.html:115 order/models.py:152
#: order/templates/order/order_base.html:176
#: order/templates/order/sales_order_base.html:183 part/models.py:936
#: report/templates/report/inventree_build_order_base.html:159
@@ -822,20 +821,20 @@ msgstr "Harici Bağlantı"
#: build/models.py:324 build/serializers.py:374
#: build/templates/build/sidebar.html:21 company/models.py:134
#: company/models.py:519 company/templates/company/sidebar.html:25
-#: order/models.py:155 order/models.py:918 order/models.py:1213
+#: order/models.py:156 order/models.py:934 order/models.py:1229
#: order/templates/order/po_sidebar.html:11
#: order/templates/order/so_sidebar.html:17 part/models.py:921
#: part/templates/part/part_sidebar.html:59
#: report/templates/report/inventree_build_order_base.html:173
-#: stock/models.py:713 stock/models.py:1985 stock/models.py:2093
+#: stock/models.py:713 stock/models.py:1989 stock/models.py:2097
#: stock/serializers.py:315 stock/serializers.py:444 stock/serializers.py:486
-#: stock/serializers.py:772 stock/serializers.py:871 stock/serializers.py:1003
+#: stock/serializers.py:759 stock/serializers.py:858 stock/serializers.py:990
#: stock/templates/stock/stock_sidebar.html:25
-#: templates/js/translated/barcode.js:100 templates/js/translated/bom.js:1044
-#: templates/js/translated/company.js:962 templates/js/translated/order.js:2040
+#: templates/js/translated/barcode.js:100 templates/js/translated/bom.js:1038
+#: templates/js/translated/company.js:947 templates/js/translated/order.js:2040
#: templates/js/translated/order.js:2191 templates/js/translated/order.js:2687
#: templates/js/translated/order.js:3632 templates/js/translated/order.js:4030
-#: templates/js/translated/stock.js:1307 templates/js/translated/stock.js:1916
+#: templates/js/translated/stock.js:1317 templates/js/translated/stock.js:1926
msgid "Notes"
msgstr "Notlar"
@@ -855,44 +854,44 @@ msgstr "Yapım işi çıktısı zaten tamamlanmış"
msgid "Build output does not match Build Order"
msgstr "Yapım işi çıktısı, yapım işi emri ile eşleşmiyor"
-#: build/models.py:1108
+#: build/models.py:1111
msgid "Build item must specify a build output, as master part is marked as trackable"
msgstr "Ana parça izlenebilir olarak işaretlendiğinden, yapım işi çıktısı için bir yapım işi ögesi belirtmelidir"
-#: build/models.py:1117
+#: build/models.py:1120
#, python-brace-format
msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})"
msgstr ""
-#: build/models.py:1127
+#: build/models.py:1130
msgid "Stock item is over-allocated"
msgstr "Stok kalemi fazladan tahsis edilmiş"
-#: build/models.py:1133 order/models.py:1372
+#: build/models.py:1136 order/models.py:1388
msgid "Allocation quantity must be greater than zero"
msgstr "Tahsis edilen miktar sıfırdan büyük olmalıdır"
-#: build/models.py:1139
+#: build/models.py:1142
msgid "Quantity must be 1 for serialized stock"
msgstr "Seri numaralı stok için miktar bir olmalı"
-#: build/models.py:1196
+#: build/models.py:1199
msgid "Selected stock item not found in BOM"
msgstr ""
-#: build/models.py:1265 stock/templates/stock/item_base.html:177
+#: build/models.py:1268 stock/templates/stock/item_base.html:177
#: templates/InvenTree/search.html:137 templates/js/translated/build.js:2454
#: templates/navbar.html:38
msgid "Build"
msgstr "Yapım İşi"
-#: build/models.py:1266
+#: build/models.py:1269
msgid "Build to allocate parts"
msgstr "Yapım işi için tahsis edilen parçalar"
-#: build/models.py:1282 build/serializers.py:603 order/serializers.py:994
-#: order/serializers.py:1015 stock/serializers.py:382 stock/serializers.py:703
-#: stock/serializers.py:829 stock/templates/stock/item_base.html:10
+#: build/models.py:1285 build/serializers.py:603 order/serializers.py:996
+#: order/serializers.py:1017 stock/serializers.py:382 stock/serializers.py:690
+#: stock/serializers.py:816 stock/templates/stock/item_base.html:10
#: stock/templates/stock/item_base.html:23
#: stock/templates/stock/item_base.html:199
#: templates/js/translated/build.js:738 templates/js/translated/build.js:743
@@ -900,22 +899,22 @@ msgstr "Yapım işi için tahsis edilen parçalar"
#: templates/js/translated/order.js:101 templates/js/translated/order.js:2820
#: templates/js/translated/order.js:3124 templates/js/translated/order.js:3129
#: templates/js/translated/order.js:3224 templates/js/translated/order.js:3314
-#: templates/js/translated/stock.js:532 templates/js/translated/stock.js:697
-#: templates/js/translated/stock.js:2449
+#: templates/js/translated/stock.js:531 templates/js/translated/stock.js:696
+#: templates/js/translated/stock.js:2459
msgid "Stock Item"
msgstr "Stok Kalemi"
-#: build/models.py:1283
+#: build/models.py:1286
msgid "Source stock item"
msgstr "Kaynak stok kalemi"
-#: build/models.py:1295 build/serializers.py:183
+#: build/models.py:1298 build/serializers.py:183
#: build/templates/build/build_base.html:82
-#: build/templates/build/detail.html:34 common/models.py:1536
+#: build/templates/build/detail.html:34 common/models.py:1543
#: company/forms.py:36 company/templates/company/supplier_part.html:258
-#: order/models.py:909 order/models.py:1412 order/serializers.py:1134
-#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:68
-#: part/forms.py:83 part/forms.py:98 part/models.py:2561
+#: order/models.py:925 order/models.py:1428 order/serializers.py:1136
+#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:59
+#: part/forms.py:74 part/forms.py:89 part/models.py:2549
#: part/templates/part/detail.html:935 part/templates/part/detail.html:1021
#: part/templates/part/part_pricing.html:16
#: part/templates/part/upload_bom.html:53
@@ -926,8 +925,8 @@ msgstr "Kaynak stok kalemi"
#: report/templates/report/inventree_test_report_base.html:139
#: stock/serializers.py:279 stock/templates/stock/item_base.html:292
#: stock/templates/stock/item_base.html:300
-#: templates/js/translated/barcode.js:437 templates/js/translated/bom.js:689
-#: templates/js/translated/bom.js:866 templates/js/translated/build.js:422
+#: templates/js/translated/barcode.js:437 templates/js/translated/bom.js:691
+#: templates/js/translated/bom.js:860 templates/js/translated/build.js:422
#: templates/js/translated/build.js:574 templates/js/translated/build.js:765
#: templates/js/translated/build.js:1175 templates/js/translated/build.js:1673
#: templates/js/translated/build.js:2086
@@ -937,23 +936,23 @@ msgstr "Kaynak stok kalemi"
#: templates/js/translated/order.js:2821 templates/js/translated/order.js:3143
#: templates/js/translated/order.js:3231 templates/js/translated/order.js:3320
#: templates/js/translated/order.js:3454 templates/js/translated/order.js:3965
-#: templates/js/translated/part.js:967 templates/js/translated/part.js:1969
-#: templates/js/translated/part.js:2200 templates/js/translated/part.js:2234
-#: templates/js/translated/part.js:2312 templates/js/translated/stock.js:403
-#: templates/js/translated/stock.js:557 templates/js/translated/stock.js:727
-#: templates/js/translated/stock.js:2498 templates/js/translated/stock.js:2583
+#: templates/js/translated/part.js:1011 templates/js/translated/part.js:2065
+#: templates/js/translated/part.js:2296 templates/js/translated/part.js:2330
+#: templates/js/translated/part.js:2408 templates/js/translated/stock.js:402
+#: templates/js/translated/stock.js:556 templates/js/translated/stock.js:726
+#: templates/js/translated/stock.js:2508 templates/js/translated/stock.js:2593
msgid "Quantity"
msgstr "Miktar"
-#: build/models.py:1296
+#: build/models.py:1299
msgid "Stock quantity to allocate to build"
msgstr "Yapım işi için tahsis edilen stok miktarı"
-#: build/models.py:1304
+#: build/models.py:1307
msgid "Install into"
msgstr "Kurulduğu yer"
-#: build/models.py:1305
+#: build/models.py:1308
msgid "Destination stock item"
msgstr "Hedef stok kalemi"
@@ -982,9 +981,9 @@ msgstr ""
msgid "Enter quantity for build output"
msgstr "Yapım işi çıktısı için miktarını girin"
-#: build/serializers.py:198 build/serializers.py:623 order/models.py:363
-#: order/serializers.py:280 order/serializers.py:435 part/serializers.py:512
-#: part/serializers.py:956 stock/models.py:470 stock/models.py:1239
+#: build/serializers.py:198 build/serializers.py:623 order/models.py:368
+#: order/serializers.py:280 order/serializers.py:435 part/serializers.py:514
+#: part/serializers.py:958 stock/models.py:470 stock/models.py:1239
#: stock/serializers.py:288
msgid "Quantity must be greater than zero"
msgstr ""
@@ -997,9 +996,9 @@ msgstr ""
msgid "Integer quantity required, as the bill of materials contains trackable parts"
msgstr ""
-#: build/serializers.py:222 order/serializers.py:448 order/serializers.py:1138
+#: build/serializers.py:222 order/serializers.py:448 order/serializers.py:1140
#: stock/serializers.py:297 templates/js/translated/order.js:1186
-#: templates/js/translated/stock.js:238 templates/js/translated/stock.js:404
+#: templates/js/translated/stock.js:237 templates/js/translated/stock.js:403
msgid "Serial Numbers"
msgstr "Seri Numaraları"
@@ -1015,7 +1014,7 @@ msgstr ""
msgid "Automatically allocate required items with matching serial numbers"
msgstr ""
-#: build/serializers.py:268 stock/api.py:552
+#: build/serializers.py:268 stock/api.py:553
msgid "The following serial numbers already exist"
msgstr ""
@@ -1025,16 +1024,16 @@ msgstr ""
#: build/serializers.py:356 order/serializers.py:421 order/serializers.py:525
#: stock/serializers.py:308 stock/serializers.py:439 stock/serializers.py:481
-#: stock/serializers.py:864 stock/serializers.py:1097
+#: stock/serializers.py:851 stock/serializers.py:1084
#: stock/templates/stock/item_base.html:390
#: templates/js/translated/barcode.js:436
#: templates/js/translated/barcode.js:618 templates/js/translated/build.js:750
#: templates/js/translated/build.js:1685 templates/js/translated/order.js:1213
#: templates/js/translated/order.js:3136 templates/js/translated/order.js:3239
#: templates/js/translated/order.js:3247 templates/js/translated/order.js:3328
-#: templates/js/translated/part.js:180 templates/js/translated/stock.js:533
-#: templates/js/translated/stock.js:698 templates/js/translated/stock.js:905
-#: templates/js/translated/stock.js:1787 templates/js/translated/stock.js:2390
+#: templates/js/translated/part.js:180 templates/js/translated/stock.js:532
+#: templates/js/translated/stock.js:697 templates/js/translated/stock.js:904
+#: templates/js/translated/stock.js:1797 templates/js/translated/stock.js:2400
msgid "Location"
msgstr "Konum"
@@ -1043,12 +1042,12 @@ msgid "Location for completed build outputs"
msgstr ""
#: build/serializers.py:363 build/templates/build/build_base.html:142
-#: build/templates/build/detail.html:62 order/models.py:654
+#: build/templates/build/detail.html:62 order/models.py:670
#: order/serializers.py:458 stock/templates/stock/item_base.html:423
#: templates/js/translated/barcode.js:182 templates/js/translated/build.js:2510
#: templates/js/translated/order.js:1320 templates/js/translated/order.js:1660
-#: templates/js/translated/order.js:2481 templates/js/translated/stock.js:1762
-#: templates/js/translated/stock.js:2467 templates/js/translated/stock.js:2599
+#: templates/js/translated/order.js:2481 templates/js/translated/stock.js:1772
+#: templates/js/translated/stock.js:2477 templates/js/translated/stock.js:2609
msgid "Status"
msgstr "Durum"
@@ -1108,8 +1107,8 @@ msgstr ""
msgid "No build outputs have been created for this build order"
msgstr ""
-#: build/serializers.py:535 build/serializers.py:580 part/models.py:2679
-#: part/models.py:2813
+#: build/serializers.py:535 build/serializers.py:580 part/models.py:2667
+#: part/models.py:2801
msgid "BOM Item"
msgstr ""
@@ -1125,11 +1124,11 @@ msgstr ""
msgid "bom_item.part must point to the same part as the build order"
msgstr ""
-#: build/serializers.py:609 stock/serializers.py:716
+#: build/serializers.py:609 stock/serializers.py:703
msgid "Item must be in stock"
msgstr ""
-#: build/serializers.py:667 order/serializers.py:1052
+#: build/serializers.py:667 order/serializers.py:1054
#, python-brace-format
msgid "Available quantity ({q}) exceeded"
msgstr ""
@@ -1146,7 +1145,7 @@ msgstr ""
msgid "This stock item has already been allocated to this build output"
msgstr ""
-#: build/serializers.py:708 order/serializers.py:1298
+#: build/serializers.py:708 order/serializers.py:1300
msgid "Allocation items must be provided"
msgstr ""
@@ -1178,10 +1177,19 @@ msgstr ""
msgid "Allow allocation of substitute parts"
msgstr ""
-#: build/tasks.py:96
+#: build/tasks.py:100
msgid "Stock required for build order"
msgstr ""
+#: build/tasks.py:118
+msgid "Overdue Build Order"
+msgstr ""
+
+#: build/tasks.py:123
+#, python-brace-format
+msgid "Build order {bo} is now overdue"
+msgstr ""
+
#: build/templates/build/build_base.html:39
#: order/templates/order/order_base.html:28
#: order/templates/order/sales_order_base.html:38
@@ -1244,13 +1252,13 @@ msgid "Stock has not been fully allocated to this Build Order"
msgstr "Stok, yapım işi emri için tamamen tahsis edilemedi"
#: build/templates/build/build_base.html:151
-#: build/templates/build/detail.html:131 order/models.py:922
+#: build/templates/build/detail.html:131 order/models.py:938
#: order/templates/order/order_base.html:162
#: order/templates/order/sales_order_base.html:164
#: report/templates/report/inventree_build_order_base.html:126
#: templates/js/translated/build.js:2550 templates/js/translated/order.js:1677
#: templates/js/translated/order.js:1987 templates/js/translated/order.js:2497
-#: templates/js/translated/order.js:3517 templates/js/translated/part.js:971
+#: templates/js/translated/order.js:3517 templates/js/translated/part.js:1015
msgid "Target Date"
msgstr "Hedeflenen tarih"
@@ -1277,13 +1285,14 @@ msgid "Completed"
msgstr "Tamamlandı"
#: build/templates/build/build_base.html:176
-#: build/templates/build/detail.html:94 order/models.py:1100
-#: order/models.py:1185 order/models.py:1320
+#: build/templates/build/detail.html:94 order/models.py:1116
+#: order/models.py:1201 order/models.py:1336
#: order/templates/order/sales_order_base.html:9
#: order/templates/order/sales_order_base.html:28
#: report/templates/report/inventree_build_order_base.html:136
#: report/templates/report/inventree_so_report.html:77
#: stock/templates/stock/item_base.html:370
+#: templates/email/overdue_sales_order.html:15
#: templates/js/translated/order.js:2436
msgid "Sales Order"
msgstr "Sipariş Emri"
@@ -1319,7 +1328,7 @@ msgstr "Stok Kaynağı"
msgid "Stock can be taken from any available location."
msgstr "Stok herhangi bir konumdan alınabilir."
-#: build/templates/build/detail.html:49 order/models.py:1034
+#: build/templates/build/detail.html:49 order/models.py:1050
#: templates/js/translated/order.js:1321 templates/js/translated/order.js:2029
msgid "Destination"
msgstr "Hedef"
@@ -1336,8 +1345,8 @@ msgstr ""
#: stock/templates/stock/item_base.html:170
#: templates/js/translated/build.js:1179
#: templates/js/translated/model_renderers.js:112
-#: templates/js/translated/stock.js:971 templates/js/translated/stock.js:1776
-#: templates/js/translated/stock.js:2606
+#: templates/js/translated/stock.js:970 templates/js/translated/stock.js:1786
+#: templates/js/translated/stock.js:2616
#: templates/js/translated/table_filters.js:151
#: templates/js/translated/table_filters.js:242
msgid "Batch"
@@ -1716,7 +1725,7 @@ msgstr "Kategori Paremetre Sablonu Kopyala"
msgid "Copy category parameter templates when creating a part"
msgstr "Parça oluştururken kategori parametre şablonlarını kopyala"
-#: common/models.py:820 part/models.py:2372 report/models.py:157
+#: common/models.py:820 part/models.py:2360 report/models.py:157
#: templates/js/translated/table_filters.js:38
#: templates/js/translated/table_filters.js:444
msgid "Template"
@@ -1726,7 +1735,7 @@ msgstr "Şablon"
msgid "Parts are templates by default"
msgstr "Parçaları varsayılan olan şablondur"
-#: common/models.py:827 part/models.py:884 templates/js/translated/bom.js:1390
+#: common/models.py:827 part/models.py:884 templates/js/translated/bom.js:1384
#: templates/js/translated/table_filters.js:168
#: templates/js/translated/table_filters.js:460
msgid "Assembly"
@@ -1880,576 +1889,584 @@ msgid "Default page size for PDF reports"
msgstr "PDF raporlar için varsayılan sayfa boyutu"
#: common/models.py:968
-msgid "Test Reports"
-msgstr "Test Raporları"
+msgid "Enable Test Reports"
+msgstr ""
#: common/models.py:969
msgid "Enable generation of test reports"
msgstr ""
#: common/models.py:975
-msgid "Batch Code Template"
+msgid "Attach Test Reports"
msgstr ""
#: common/models.py:976
-msgid "Template for generating default batch codes for stock items"
-msgstr ""
-
-#: common/models.py:981
-msgid "Stock Expiry"
+msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item"
msgstr ""
#: common/models.py:982
-msgid "Enable stock expiry functionality"
+msgid "Batch Code Template"
+msgstr ""
+
+#: common/models.py:983
+msgid "Template for generating default batch codes for stock items"
msgstr ""
#: common/models.py:988
-msgid "Sell Expired Stock"
+msgid "Stock Expiry"
msgstr ""
#: common/models.py:989
-msgid "Allow sale of expired stock"
+msgid "Enable stock expiry functionality"
msgstr ""
#: common/models.py:995
-msgid "Stock Stale Time"
+msgid "Sell Expired Stock"
msgstr ""
#: common/models.py:996
+msgid "Allow sale of expired stock"
+msgstr ""
+
+#: common/models.py:1002
+msgid "Stock Stale Time"
+msgstr ""
+
+#: common/models.py:1003
msgid "Number of days stock items are considered stale before expiring"
msgstr ""
-#: common/models.py:998
+#: common/models.py:1005
msgid "days"
msgstr "günler"
-#: common/models.py:1003
+#: common/models.py:1010
msgid "Build Expired Stock"
msgstr ""
-#: common/models.py:1004
+#: common/models.py:1011
msgid "Allow building with expired stock"
msgstr ""
-#: common/models.py:1010
+#: common/models.py:1017
msgid "Stock Ownership Control"
msgstr ""
-#: common/models.py:1011
+#: common/models.py:1018
msgid "Enable ownership control over stock locations and items"
msgstr "Stok konumu ve ögeler üzerinde sahiplik kontrolünü etkinleştirin"
-#: common/models.py:1017
+#: common/models.py:1024
msgid "Build Order Reference Prefix"
msgstr ""
-#: common/models.py:1018
+#: common/models.py:1025
msgid "Prefix value for build order reference"
msgstr ""
-#: common/models.py:1023
+#: common/models.py:1030
msgid "Build Order Reference Regex"
msgstr ""
-#: common/models.py:1024
+#: common/models.py:1031
msgid "Regular expression pattern for matching build order reference"
msgstr ""
-#: common/models.py:1028
+#: common/models.py:1035
msgid "Sales Order Reference Prefix"
msgstr ""
-#: common/models.py:1029
+#: common/models.py:1036
msgid "Prefix value for sales order reference"
msgstr ""
-#: common/models.py:1034
+#: common/models.py:1041
msgid "Sales Order Default Shipment"
msgstr ""
-#: common/models.py:1035
+#: common/models.py:1042
msgid "Enable creation of default shipment with sales orders"
msgstr ""
-#: common/models.py:1041
+#: common/models.py:1048
msgid "Purchase Order Reference Prefix"
msgstr ""
-#: common/models.py:1042
+#: common/models.py:1049
msgid "Prefix value for purchase order reference"
msgstr ""
-#: common/models.py:1048
+#: common/models.py:1055
msgid "Enable password forgot"
msgstr ""
-#: common/models.py:1049
+#: common/models.py:1056
msgid "Enable password forgot function on the login pages"
msgstr ""
-#: common/models.py:1055
+#: common/models.py:1062
msgid "Enable registration"
msgstr ""
-#: common/models.py:1056
+#: common/models.py:1063
msgid "Enable self-registration for users on the login pages"
msgstr ""
-#: common/models.py:1062
+#: common/models.py:1069
msgid "Enable SSO"
msgstr ""
-#: common/models.py:1063
+#: common/models.py:1070
msgid "Enable SSO on the login pages"
msgstr ""
-#: common/models.py:1069
+#: common/models.py:1076
msgid "Email required"
msgstr ""
-#: common/models.py:1070
+#: common/models.py:1077
msgid "Require user to supply mail on signup"
msgstr ""
-#: common/models.py:1076
+#: common/models.py:1083
msgid "Auto-fill SSO users"
msgstr ""
-#: common/models.py:1077
+#: common/models.py:1084
msgid "Automatically fill out user-details from SSO account-data"
msgstr ""
-#: common/models.py:1083
+#: common/models.py:1090
msgid "Mail twice"
msgstr ""
-#: common/models.py:1084
+#: common/models.py:1091
msgid "On signup ask users twice for their mail"
msgstr ""
-#: common/models.py:1090
+#: common/models.py:1097
msgid "Password twice"
msgstr ""
-#: common/models.py:1091
+#: common/models.py:1098
msgid "On signup ask users twice for their password"
msgstr ""
-#: common/models.py:1097
+#: common/models.py:1104
msgid "Group on signup"
msgstr ""
-#: common/models.py:1098
+#: common/models.py:1105
msgid "Group to which new users are assigned on registration"
msgstr ""
-#: common/models.py:1104
+#: common/models.py:1111
msgid "Enforce MFA"
msgstr ""
-#: common/models.py:1105
+#: common/models.py:1112
msgid "Users must use multifactor security."
msgstr ""
-#: common/models.py:1111
+#: common/models.py:1118
msgid "Check plugins on startup"
msgstr ""
-#: common/models.py:1112
+#: common/models.py:1119
msgid "Check that all plugins are installed on startup - enable in container enviroments"
msgstr ""
-#: common/models.py:1120
+#: common/models.py:1127
msgid "Enable URL integration"
msgstr ""
-#: common/models.py:1121
+#: common/models.py:1128
msgid "Enable plugins to add URL routes"
msgstr ""
-#: common/models.py:1128
+#: common/models.py:1135
msgid "Enable navigation integration"
msgstr ""
-#: common/models.py:1129
+#: common/models.py:1136
msgid "Enable plugins to integrate into navigation"
msgstr ""
-#: common/models.py:1136
+#: common/models.py:1143
msgid "Enable app integration"
msgstr ""
-#: common/models.py:1137
+#: common/models.py:1144
msgid "Enable plugins to add apps"
msgstr ""
-#: common/models.py:1144
+#: common/models.py:1151
msgid "Enable schedule integration"
msgstr ""
-#: common/models.py:1145
+#: common/models.py:1152
msgid "Enable plugins to run scheduled tasks"
msgstr ""
-#: common/models.py:1152
+#: common/models.py:1159
msgid "Enable event integration"
msgstr ""
-#: common/models.py:1153
+#: common/models.py:1160
msgid "Enable plugins to respond to internal events"
msgstr ""
-#: common/models.py:1170 common/models.py:1492
+#: common/models.py:1177 common/models.py:1499
msgid "Settings key (must be unique - case insensitive"
msgstr ""
-#: common/models.py:1192
+#: common/models.py:1199
msgid "Show subscribed parts"
msgstr ""
-#: common/models.py:1193
+#: common/models.py:1200
msgid "Show subscribed parts on the homepage"
msgstr ""
-#: common/models.py:1199
+#: common/models.py:1206
msgid "Show subscribed categories"
msgstr ""
-#: common/models.py:1200
+#: common/models.py:1207
msgid "Show subscribed part categories on the homepage"
msgstr ""
-#: common/models.py:1206
+#: common/models.py:1213
msgid "Show latest parts"
msgstr ""
-#: common/models.py:1207
+#: common/models.py:1214
msgid "Show latest parts on the homepage"
msgstr ""
-#: common/models.py:1213
+#: common/models.py:1220
msgid "Recent Part Count"
msgstr ""
-#: common/models.py:1214
+#: common/models.py:1221
msgid "Number of recent parts to display on index page"
msgstr ""
-#: common/models.py:1220
+#: common/models.py:1227
msgid "Show unvalidated BOMs"
msgstr ""
-#: common/models.py:1221
+#: common/models.py:1228
msgid "Show BOMs that await validation on the homepage"
msgstr ""
-#: common/models.py:1227
+#: common/models.py:1234
msgid "Show recent stock changes"
msgstr ""
-#: common/models.py:1228
+#: common/models.py:1235
msgid "Show recently changed stock items on the homepage"
msgstr ""
-#: common/models.py:1234
+#: common/models.py:1241
msgid "Recent Stock Count"
msgstr ""
-#: common/models.py:1235
+#: common/models.py:1242
msgid "Number of recent stock items to display on index page"
msgstr ""
-#: common/models.py:1241
+#: common/models.py:1248
msgid "Show low stock"
msgstr ""
-#: common/models.py:1242
+#: common/models.py:1249
msgid "Show low stock items on the homepage"
msgstr ""
-#: common/models.py:1248
+#: common/models.py:1255
msgid "Show depleted stock"
msgstr ""
-#: common/models.py:1249
+#: common/models.py:1256
msgid "Show depleted stock items on the homepage"
msgstr ""
-#: common/models.py:1255
+#: common/models.py:1262
msgid "Show needed stock"
msgstr ""
-#: common/models.py:1256
+#: common/models.py:1263
msgid "Show stock items needed for builds on the homepage"
msgstr ""
-#: common/models.py:1262
+#: common/models.py:1269
msgid "Show expired stock"
msgstr ""
-#: common/models.py:1263
+#: common/models.py:1270
msgid "Show expired stock items on the homepage"
msgstr ""
-#: common/models.py:1269
+#: common/models.py:1276
msgid "Show stale stock"
msgstr ""
-#: common/models.py:1270
+#: common/models.py:1277
msgid "Show stale stock items on the homepage"
msgstr ""
-#: common/models.py:1276
+#: common/models.py:1283
msgid "Show pending builds"
msgstr ""
-#: common/models.py:1277
+#: common/models.py:1284
msgid "Show pending builds on the homepage"
msgstr ""
-#: common/models.py:1283
+#: common/models.py:1290
msgid "Show overdue builds"
msgstr ""
-#: common/models.py:1284
+#: common/models.py:1291
msgid "Show overdue builds on the homepage"
msgstr ""
-#: common/models.py:1290
+#: common/models.py:1297
msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:1291
+#: common/models.py:1298
msgid "Show outstanding POs on the homepage"
msgstr ""
-#: common/models.py:1297
+#: common/models.py:1304
msgid "Show overdue POs"
msgstr ""
-#: common/models.py:1298
+#: common/models.py:1305
msgid "Show overdue POs on the homepage"
msgstr ""
-#: common/models.py:1304
+#: common/models.py:1311
msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:1305
+#: common/models.py:1312
msgid "Show outstanding SOs on the homepage"
msgstr ""
-#: common/models.py:1311
+#: common/models.py:1318
msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:1312
+#: common/models.py:1319
msgid "Show overdue SOs on the homepage"
msgstr ""
-#: common/models.py:1317
+#: common/models.py:1324
msgid "Enable label printing"
msgstr ""
-#: common/models.py:1318
+#: common/models.py:1325
msgid "Enable label printing from the web interface"
msgstr ""
-#: common/models.py:1324
+#: common/models.py:1331
msgid "Inline label display"
msgstr ""
-#: common/models.py:1325
+#: common/models.py:1332
msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:1331
+#: common/models.py:1338
msgid "Inline report display"
msgstr ""
-#: common/models.py:1332
+#: common/models.py:1339
msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:1338
+#: common/models.py:1345
msgid "Search Parts"
msgstr ""
-#: common/models.py:1339
+#: common/models.py:1346
msgid "Display parts in search preview window"
msgstr ""
-#: common/models.py:1345
+#: common/models.py:1352
msgid "Seach Supplier Parts"
msgstr ""
-#: common/models.py:1346
+#: common/models.py:1353
msgid "Display supplier parts in search preview window"
msgstr ""
-#: common/models.py:1352
+#: common/models.py:1359
msgid "Search Manufacturer Parts"
msgstr ""
-#: common/models.py:1353
+#: common/models.py:1360
msgid "Display manufacturer parts in search preview window"
msgstr ""
-#: common/models.py:1359
+#: common/models.py:1366
msgid "Hide Inactive Parts"
msgstr ""
-#: common/models.py:1360
+#: common/models.py:1367
msgid "Excluded inactive parts from search preview window"
msgstr ""
-#: common/models.py:1366
+#: common/models.py:1373
msgid "Search Categories"
msgstr ""
-#: common/models.py:1367
+#: common/models.py:1374
msgid "Display part categories in search preview window"
msgstr ""
-#: common/models.py:1373
+#: common/models.py:1380
msgid "Search Stock"
msgstr ""
-#: common/models.py:1374
+#: common/models.py:1381
msgid "Display stock items in search preview window"
msgstr ""
-#: common/models.py:1380
+#: common/models.py:1387
msgid "Hide Unavailable Stock Items"
msgstr ""
-#: common/models.py:1381
+#: common/models.py:1388
msgid "Exclude stock items which are not available from the search preview window"
msgstr ""
-#: common/models.py:1387
+#: common/models.py:1394
msgid "Search Locations"
msgstr ""
-#: common/models.py:1388
+#: common/models.py:1395
msgid "Display stock locations in search preview window"
msgstr ""
-#: common/models.py:1394
+#: common/models.py:1401
msgid "Search Companies"
msgstr ""
-#: common/models.py:1395
+#: common/models.py:1402
msgid "Display companies in search preview window"
msgstr ""
-#: common/models.py:1401
+#: common/models.py:1408
msgid "Search Purchase Orders"
msgstr ""
-#: common/models.py:1402
+#: common/models.py:1409
msgid "Display purchase orders in search preview window"
msgstr ""
-#: common/models.py:1408
+#: common/models.py:1415
msgid "Exclude Inactive Purchase Orders"
msgstr ""
-#: common/models.py:1409
+#: common/models.py:1416
msgid "Exclude inactive purchase orders from search preview window"
msgstr ""
-#: common/models.py:1415
+#: common/models.py:1422
msgid "Search Sales Orders"
msgstr ""
-#: common/models.py:1416
+#: common/models.py:1423
msgid "Display sales orders in search preview window"
msgstr ""
-#: common/models.py:1422
+#: common/models.py:1429
msgid "Exclude Inactive Sales Orders"
msgstr ""
-#: common/models.py:1423
+#: common/models.py:1430
msgid "Exclude inactive sales orders from search preview window"
msgstr ""
-#: common/models.py:1429
+#: common/models.py:1436
msgid "Search Preview Results"
msgstr ""
-#: common/models.py:1430
+#: common/models.py:1437
msgid "Number of results to show in each section of the search preview window"
msgstr ""
-#: common/models.py:1436
+#: common/models.py:1443
msgid "Show Quantity in Forms"
msgstr "Formlarda Miktarı Göster"
-#: common/models.py:1437
+#: common/models.py:1444
msgid "Display available part quantity in some forms"
msgstr ""
-#: common/models.py:1443
+#: common/models.py:1450
msgid "Escape Key Closes Forms"
msgstr ""
-#: common/models.py:1444
+#: common/models.py:1451
msgid "Use the escape key to close modal forms"
msgstr ""
-#: common/models.py:1450
+#: common/models.py:1457
msgid "Fixed Navbar"
msgstr ""
-#: common/models.py:1451
+#: common/models.py:1458
msgid "The navbar position is fixed to the top of the screen"
msgstr ""
-#: common/models.py:1457
+#: common/models.py:1464
msgid "Date Format"
msgstr ""
-#: common/models.py:1458
+#: common/models.py:1465
msgid "Preferred format for displaying dates"
msgstr ""
-#: common/models.py:1472 part/templates/part/detail.html:39
+#: common/models.py:1479 part/templates/part/detail.html:39
msgid "Part Scheduling"
msgstr ""
-#: common/models.py:1473
+#: common/models.py:1480
msgid "Display part scheduling information"
msgstr ""
-#: common/models.py:1537 company/forms.py:37
+#: common/models.py:1544 company/forms.py:37
msgid "Price break quantity"
msgstr ""
-#: common/models.py:1544 company/serializers.py:288
-#: company/templates/company/supplier_part.html:263 order/models.py:949
-#: templates/js/translated/part.js:998 templates/js/translated/part.js:1974
+#: common/models.py:1551 company/serializers.py:290
+#: company/templates/company/supplier_part.html:263 order/models.py:965
+#: templates/js/translated/part.js:1042 templates/js/translated/part.js:2070
msgid "Price"
msgstr "Fiyat"
-#: common/models.py:1545
+#: common/models.py:1552
msgid "Unit price at specified quantity"
msgstr ""
-#: common/models.py:1705 common/models.py:1883
+#: common/models.py:1712 common/models.py:1890
msgid "Endpoint"
msgstr ""
-#: common/models.py:1706
+#: common/models.py:1713
msgid "Endpoint at which this webhook is received"
msgstr ""
-#: common/models.py:1715
+#: common/models.py:1722
msgid "Name for this webhook"
msgstr ""
-#: common/models.py:1720 part/models.py:911 plugin/models.py:99
+#: common/models.py:1727 part/models.py:911 plugin/models.py:99
#: templates/js/translated/table_filters.js:34
#: templates/js/translated/table_filters.js:96
#: templates/js/translated/table_filters.js:308
@@ -2457,79 +2474,89 @@ msgstr ""
msgid "Active"
msgstr "Aktif"
-#: common/models.py:1721
+#: common/models.py:1728
msgid "Is this webhook active"
msgstr ""
-#: common/models.py:1735
+#: common/models.py:1742
msgid "Token"
msgstr ""
-#: common/models.py:1736
+#: common/models.py:1743
msgid "Token for access"
msgstr ""
-#: common/models.py:1743
+#: common/models.py:1750
msgid "Secret"
msgstr ""
-#: common/models.py:1744
+#: common/models.py:1751
msgid "Shared secret for HMAC"
msgstr ""
-#: common/models.py:1850
+#: common/models.py:1857
msgid "Message ID"
msgstr ""
-#: common/models.py:1851
+#: common/models.py:1858
msgid "Unique identifier for this message"
msgstr ""
-#: common/models.py:1859
+#: common/models.py:1866
msgid "Host"
msgstr ""
-#: common/models.py:1860
+#: common/models.py:1867
msgid "Host from which this message was received"
msgstr ""
-#: common/models.py:1867
+#: common/models.py:1874
msgid "Header"
msgstr ""
-#: common/models.py:1868
+#: common/models.py:1875
msgid "Header of this message"
msgstr ""
-#: common/models.py:1874
+#: common/models.py:1881
msgid "Body"
msgstr ""
-#: common/models.py:1875
+#: common/models.py:1882
msgid "Body of this message"
msgstr ""
-#: common/models.py:1884
+#: common/models.py:1891
msgid "Endpoint on which this message was received"
msgstr ""
-#: common/models.py:1889
+#: common/models.py:1896
msgid "Worked on"
msgstr ""
-#: common/models.py:1890
+#: common/models.py:1897
msgid "Was the work on this message finished?"
msgstr ""
+#: common/notifications.py:292
+#, python-brace-format
+msgid "New {verbose_name}"
+msgstr ""
+
+#: common/notifications.py:294
+#, python-brace-format
+msgid "A new {verbose_name} has been created and ,assigned to you"
+msgstr ""
+
#: common/views.py:87 order/templates/order/purchase_order_detail.html:23
-#: order/views.py:102 part/views.py:191
+#: order/views.py:102 part/views.py:116
#: templates/patterns/wizard/upload.html:37
msgid "Upload File"
msgstr "Dosya Yükle"
#: common/views.py:88 order/views.py:103
#: part/templates/part/import_wizard/ajax_match_fields.html:45
-#: part/views.py:192 templates/patterns/wizard/match_fields.html:51
+#: part/views.py:117 templates/patterns/wizard/match_fields.html:51
msgid "Match Fields"
msgstr "Alanları Eşleştir"
@@ -2545,19 +2572,19 @@ msgstr ""
msgid "Parts imported"
msgstr ""
-#: common/views.py:507 order/templates/order/order_wizard/match_parts.html:19
+#: common/views.py:511 order/templates/order/order_wizard/match_parts.html:19
#: part/templates/part/import_wizard/match_references.html:19
#: templates/patterns/wizard/match_fields.html:26
#: templates/patterns/wizard/upload.html:35
msgid "Previous Step"
msgstr ""
-#: company/forms.py:16 part/forms.py:21
+#: company/forms.py:16 part/forms.py:18
#: templates/InvenTree/settings/mixins/urls.html:14
msgid "URL"
msgstr ""
-#: company/forms.py:17 part/forms.py:22
+#: company/forms.py:17 part/forms.py:19
msgid "Image URL"
msgstr ""
@@ -2571,7 +2598,7 @@ msgstr ""
#: company/models.py:104 company/templates/company/company_base.html:100
#: templates/InvenTree/settings/plugin_settings.html:55
-#: templates/js/translated/company.js:405
+#: templates/js/translated/company.js:399
msgid "Website"
msgstr ""
@@ -2644,9 +2671,9 @@ msgstr "üretici mi"
msgid "Does this company manufacture parts?"
msgstr "Bu şirket üretim yapıyor mu?"
-#: company/models.py:144 company/serializers.py:294
-#: company/templates/company/company_base.html:106 part/serializers.py:137
-#: part/serializers.py:168 stock/serializers.py:162
+#: company/models.py:144 company/serializers.py:296
+#: company/templates/company/company_base.html:106 part/serializers.py:139
+#: part/serializers.py:170 stock/serializers.py:162
msgid "Currency"
msgstr "Para birimi"
@@ -2667,10 +2694,10 @@ msgstr "Parça seçin"
#: company/templates/company/manufacturer_part.html:90
#: company/templates/company/supplier_part.html:103
#: stock/templates/stock/item_base.html:212
-#: templates/js/translated/company.js:389
-#: templates/js/translated/company.js:488
-#: templates/js/translated/company.js:632
-#: templates/js/translated/company.js:917 templates/js/translated/part.js:235
+#: templates/js/translated/company.js:383
+#: templates/js/translated/company.js:484
+#: templates/js/translated/company.js:617
+#: templates/js/translated/company.js:902 templates/js/translated/part.js:235
#: templates/js/translated/table_filters.js:411
msgid "Manufacturer"
msgstr "Üretici"
@@ -2681,11 +2708,11 @@ msgstr "Üretici seçin"
#: company/models.py:266 company/templates/company/manufacturer_part.html:101
#: company/templates/company/supplier_part.html:111
-#: templates/js/translated/company.js:255
-#: templates/js/translated/company.js:487
-#: templates/js/translated/company.js:648
-#: templates/js/translated/company.js:935 templates/js/translated/order.js:1907
-#: templates/js/translated/part.js:246 templates/js/translated/part.js:956
+#: templates/js/translated/company.js:256
+#: templates/js/translated/company.js:483
+#: templates/js/translated/company.js:633
+#: templates/js/translated/company.js:920 templates/js/translated/order.js:1907
+#: templates/js/translated/part.js:246 templates/js/translated/part.js:1000
msgid "MPN"
msgstr "ÜPN"
@@ -2714,9 +2741,9 @@ msgstr "Parametre adı"
#: company/models.py:361
#: report/templates/report/inventree_test_report_base.html:95
-#: stock/models.py:2080 templates/js/translated/company.js:540
-#: templates/js/translated/company.js:763 templates/js/translated/part.js:776
-#: templates/js/translated/stock.js:1294
+#: stock/models.py:2084 templates/js/translated/company.js:531
+#: templates/js/translated/company.js:748 templates/js/translated/part.js:820
+#: templates/js/translated/stock.js:1304
msgid "Value"
msgstr "Değer"
@@ -2724,10 +2751,10 @@ msgstr "Değer"
msgid "Parameter value"
msgstr "Parametre değeri"
-#: company/models.py:368 part/models.py:878 part/models.py:2339
+#: company/models.py:368 part/models.py:878 part/models.py:2327
#: part/templates/part/part_base.html:280
#: templates/InvenTree/settings/settings.html:351
-#: templates/js/translated/company.js:769 templates/js/translated/part.js:782
+#: templates/js/translated/company.js:754 templates/js/translated/part.js:826
msgid "Units"
msgstr ""
@@ -2740,13 +2767,14 @@ msgid "Linked manufacturer part must reference the same base part"
msgstr ""
#: company/models.py:487 company/templates/company/company_base.html:81
-#: company/templates/company/supplier_part.html:87 order/models.py:303
+#: company/templates/company/supplier_part.html:87 order/models.py:308
#: order/templates/order/order_base.html:112 part/bom.py:237 part/bom.py:265
#: stock/templates/stock/item_base.html:229
-#: templates/js/translated/company.js:254
-#: templates/js/translated/company.js:393
-#: templates/js/translated/company.js:891 templates/js/translated/order.js:1643
-#: templates/js/translated/part.js:216 templates/js/translated/part.js:924
+#: templates/email/overdue_purchase_order.html:16
+#: templates/js/translated/company.js:255
+#: templates/js/translated/company.js:387
+#: templates/js/translated/company.js:876 templates/js/translated/order.js:1643
+#: templates/js/translated/part.js:216 templates/js/translated/part.js:968
#: templates/js/translated/table_filters.js:415
msgid "Supplier"
msgstr "Tedarikçi"
@@ -2756,9 +2784,9 @@ msgid "Select supplier"
msgstr "Tedarikçi seçin"
#: company/models.py:493 company/templates/company/supplier_part.html:97
-#: part/bom.py:238 part/bom.py:266 templates/js/translated/company.js:253
+#: part/bom.py:238 part/bom.py:266 templates/js/translated/company.js:254
#: templates/js/translated/order.js:1894 templates/js/translated/part.js:227
-#: templates/js/translated/part.js:942
+#: templates/js/translated/part.js:986
msgid "SKU"
msgstr ""
@@ -2779,23 +2807,23 @@ msgid "Supplier part description"
msgstr ""
#: company/models.py:518 company/templates/company/supplier_part.html:125
-#: part/models.py:2573 part/templates/part/upload_bom.html:59
+#: part/models.py:2561 part/templates/part/upload_bom.html:59
#: report/templates/report/inventree_po_report.html:92
#: report/templates/report/inventree_so_report.html:93 stock/serializers.py:387
msgid "Note"
msgstr "Not"
-#: company/models.py:522 part/models.py:1688
+#: company/models.py:522 part/models.py:1683
msgid "base cost"
msgstr "temel maliyet"
-#: company/models.py:522 part/models.py:1688
+#: company/models.py:522 part/models.py:1683
msgid "Minimum charge (e.g. stocking fee)"
msgstr ""
#: company/models.py:524 company/templates/company/supplier_part.html:118
#: stock/models.py:608 stock/templates/stock/item_base.html:245
-#: templates/js/translated/company.js:967 templates/js/translated/stock.js:1912
+#: templates/js/translated/company.js:952 templates/js/translated/stock.js:1922
msgid "Packaging"
msgstr "Paketleme"
@@ -2803,7 +2831,7 @@ msgstr "Paketleme"
msgid "Part packaging"
msgstr ""
-#: company/models.py:526 part/models.py:1690
+#: company/models.py:526 part/models.py:1685
msgid "multiple"
msgstr "çoklu"
@@ -2825,7 +2853,7 @@ msgstr "Para Birimi Kodu"
#: company/templates/company/company_base.html:8
#: company/templates/company/company_base.html:12
-#: templates/InvenTree/search.html:177 templates/js/translated/company.js:378
+#: templates/InvenTree/search.html:177 templates/js/translated/company.js:372
msgid "Company"
msgstr ""
@@ -2843,7 +2871,7 @@ msgid "Edit company information"
msgstr ""
#: company/templates/company/company_base.html:34
-#: templates/js/translated/company.js:321
+#: templates/js/translated/company.js:315
msgid "Edit Company"
msgstr ""
@@ -2866,12 +2894,13 @@ msgstr ""
msgid "Download image from URL"
msgstr ""
-#: company/templates/company/company_base.html:86 order/models.py:649
+#: company/templates/company/company_base.html:86 order/models.py:665
#: order/templates/order/sales_order_base.html:116 stock/models.py:627
-#: stock/models.py:628 stock/serializers.py:758
+#: stock/models.py:628 stock/serializers.py:745
#: stock/templates/stock/item_base.html:401
-#: templates/js/translated/company.js:385 templates/js/translated/order.js:2458
-#: templates/js/translated/stock.js:2431
+#: templates/email/overdue_sales_order.html:16
+#: templates/js/translated/company.js:379 templates/js/translated/order.js:2458
+#: templates/js/translated/stock.js:2441
#: templates/js/translated/table_filters.js:419
msgid "Customer"
msgstr "Müşteri"
@@ -2999,7 +3028,7 @@ msgid "Supplier List"
msgstr ""
#: company/templates/company/manufacturer_part.html:15 company/views.py:45
-#: part/templates/part/prices.html:170 templates/InvenTree/search.html:179
+#: part/templates/part/prices.html:172 templates/InvenTree/search.html:179
#: templates/navbar.html:49
msgid "Manufacturers"
msgstr "Üreticiler"
@@ -3012,12 +3041,12 @@ msgid "Order part"
msgstr "Parça siparişi"
#: company/templates/company/manufacturer_part.html:39
-#: templates/js/translated/company.js:680
+#: templates/js/translated/company.js:665
msgid "Edit manufacturer part"
msgstr ""
#: company/templates/company/manufacturer_part.html:43
-#: templates/js/translated/company.js:681
+#: templates/js/translated/company.js:666
msgid "Delete manufacturer part"
msgstr ""
@@ -3032,7 +3061,7 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:119
#: company/templates/company/supplier_part.html:15 company/views.py:39
-#: part/templates/part/part_sidebar.html:35 part/templates/part/prices.html:166
+#: part/templates/part/part_sidebar.html:35 part/templates/part/prices.html:168
#: templates/InvenTree/search.html:189 templates/navbar.html:48
msgid "Suppliers"
msgstr ""
@@ -3092,18 +3121,18 @@ msgstr ""
#: company/templates/company/supplier_part.html:7
#: company/templates/company/supplier_part.html:24 stock/models.py:592
#: stock/templates/stock/item_base.html:238
-#: templates/js/translated/company.js:907 templates/js/translated/order.js:884
-#: templates/js/translated/stock.js:1869
+#: templates/js/translated/company.js:892 templates/js/translated/order.js:884
+#: templates/js/translated/stock.js:1879
msgid "Supplier Part"
msgstr "Tedarikçi Parçası"
#: company/templates/company/supplier_part.html:38
-#: templates/js/translated/company.js:980
+#: templates/js/translated/company.js:965
msgid "Edit supplier part"
msgstr "Tedarikçi parçasını düzenle"
#: company/templates/company/supplier_part.html:42
-#: templates/js/translated/company.js:981
+#: templates/js/translated/company.js:966
msgid "Delete supplier part"
msgstr "Tedarikçi parçasını sil"
@@ -3123,7 +3152,7 @@ msgstr ""
#: company/templates/company/supplier_part.html:148
#: part/templates/part/detail.html:24 stock/templates/stock/location.html:177
-#: templates/js/translated/stock.js:380
+#: templates/js/translated/stock.js:379
msgid "New Stock Item"
msgstr ""
@@ -3144,7 +3173,7 @@ msgstr "Fiyat Bilgisi"
#: company/templates/company/supplier_part.html:191
#: company/templates/company/supplier_part.html:305
-#: part/templates/part/prices.html:274 templates/js/translated/part.js:2046
+#: part/templates/part/prices.html:276 templates/js/translated/part.js:2142
msgid "Add Price Break"
msgstr ""
@@ -3153,12 +3182,12 @@ msgid "No price break information found"
msgstr ""
#: company/templates/company/supplier_part.html:231
-#: templates/js/translated/part.js:2056
+#: templates/js/translated/part.js:2152
msgid "Delete Price Break"
msgstr ""
#: company/templates/company/supplier_part.html:245
-#: templates/js/translated/part.js:2070
+#: templates/js/translated/part.js:2166
msgid "Edit Price Break"
msgstr ""
@@ -3180,9 +3209,9 @@ msgstr ""
#: stock/templates/stock/stock_app_base.html:10
#: templates/InvenTree/search.html:151
#: templates/InvenTree/settings/sidebar.html:43
-#: templates/js/translated/bom.js:554 templates/js/translated/part.js:678
-#: templates/js/translated/part.js:1226 templates/js/translated/part.js:1387
-#: templates/js/translated/stock.js:904 templates/js/translated/stock.js:1687
+#: templates/js/translated/bom.js:554 templates/js/translated/part.js:722
+#: templates/js/translated/part.js:1270 templates/js/translated/part.js:1431
+#: templates/js/translated/stock.js:903 templates/js/translated/stock.js:1697
#: templates/navbar.html:31
msgid "Stock"
msgstr "Stok"
@@ -3209,7 +3238,7 @@ msgstr "Fiyatlandırma"
#: stock/templates/stock/location.html:173
#: stock/templates/stock/location_sidebar.html:7
#: templates/InvenTree/search.html:153 templates/js/translated/search.js:223
-#: templates/js/translated/stock.js:2307 users/models.py:39
+#: templates/js/translated/stock.js:2317 users/models.py:39
msgid "Stock Items"
msgstr "Stok Kalemleri"
@@ -3238,20 +3267,20 @@ msgstr "Şirketler"
msgid "New Company"
msgstr "Yeni Şirket"
-#: company/views.py:112 part/views.py:576
+#: company/views.py:112 part/views.py:501
msgid "Download Image"
msgstr "Resmi İndirin"
-#: company/views.py:139 part/views.py:606
+#: company/views.py:139 part/views.py:531
msgid "Image size exceeds maximum allowable size for download"
msgstr ""
-#: company/views.py:146 part/views.py:613
+#: company/views.py:146 part/views.py:538
#, python-brace-format
msgid "Invalid response: {code}"
msgstr "Geçersiz yanıt: {code}"
-#: company/views.py:155 part/views.py:622
+#: company/views.py:155 part/views.py:547
msgid "Supplied URL is not a valid image file"
msgstr "Sağlanan URL geçerli bir resim dosyası değil"
@@ -3320,313 +3349,314 @@ msgstr ""
msgid "Part query filters (comma-separated value of key=value pairs)"
msgstr ""
-#: order/models.py:133
+#: order/models.py:134
msgid "Order description"
msgstr "Sipariş açıklaması"
-#: order/models.py:135 order/models.py:1236
+#: order/models.py:136 order/models.py:1252
msgid "Link to external page"
msgstr "Harici sayfaya bağlantı"
-#: order/models.py:143
+#: order/models.py:144
msgid "Created By"
msgstr "Oluşturan"
-#: order/models.py:150
+#: order/models.py:151
msgid "User or group responsible for this order"
msgstr ""
-#: order/models.py:155
+#: order/models.py:156
msgid "Order notes"
msgstr "Sipariş notları"
-#: order/models.py:289 order/models.py:639
+#: order/models.py:294 order/models.py:655
msgid "Order reference"
msgstr "Sipariş referansı"
-#: order/models.py:294 order/models.py:654
+#: order/models.py:299 order/models.py:670
msgid "Purchase order status"
msgstr ""
-#: order/models.py:304
+#: order/models.py:309
msgid "Company from which the items are being ordered"
msgstr ""
-#: order/models.py:307 order/templates/order/order_base.html:124
+#: order/models.py:312 order/templates/order/order_base.html:124
#: templates/js/translated/order.js:1652
msgid "Supplier Reference"
msgstr ""
-#: order/models.py:307
+#: order/models.py:312
msgid "Supplier order reference code"
msgstr ""
-#: order/models.py:314
+#: order/models.py:319
msgid "received by"
msgstr ""
-#: order/models.py:319
+#: order/models.py:324
msgid "Issue Date"
msgstr ""
-#: order/models.py:320
+#: order/models.py:325
msgid "Date order was issued"
msgstr ""
-#: order/models.py:325
+#: order/models.py:330
msgid "Target Delivery Date"
msgstr ""
-#: order/models.py:326
+#: order/models.py:331
msgid "Expected date for order delivery. Order will be overdue after this date."
msgstr ""
-#: order/models.py:332
+#: order/models.py:337
msgid "Date order was completed"
msgstr ""
-#: order/models.py:368
+#: order/models.py:373
msgid "Part supplier must match PO supplier"
msgstr ""
-#: order/models.py:512
+#: order/models.py:517
msgid "Quantity must be a positive number"
msgstr ""
-#: order/models.py:650
+#: order/models.py:666
msgid "Company to which the items are being sold"
msgstr ""
-#: order/models.py:656
+#: order/models.py:672
msgid "Customer Reference "
msgstr ""
-#: order/models.py:656
+#: order/models.py:672
msgid "Customer order reference code"
msgstr ""
-#: order/models.py:661
+#: order/models.py:677
msgid "Target date for order completion. Order will be overdue after this date."
msgstr ""
-#: order/models.py:664 order/models.py:1190
+#: order/models.py:680 order/models.py:1206
#: templates/js/translated/order.js:2505 templates/js/translated/order.js:2656
msgid "Shipment Date"
msgstr ""
-#: order/models.py:671
+#: order/models.py:687
msgid "shipped by"
msgstr ""
-#: order/models.py:726
+#: order/models.py:742
msgid "Order cannot be completed as no parts have been assigned"
msgstr ""
-#: order/models.py:730
+#: order/models.py:746
msgid "Only a pending order can be marked as complete"
msgstr ""
-#: order/models.py:733
+#: order/models.py:749
msgid "Order cannot be completed as there are incomplete shipments"
msgstr ""
-#: order/models.py:736
+#: order/models.py:752
msgid "Order cannot be completed as there are incomplete line items"
msgstr ""
-#: order/models.py:910
+#: order/models.py:926
msgid "Item quantity"
msgstr ""
-#: order/models.py:916
+#: order/models.py:932
msgid "Line item reference"
msgstr ""
-#: order/models.py:918
+#: order/models.py:934
msgid "Line item notes"
msgstr ""
-#: order/models.py:923
+#: order/models.py:939
msgid "Target shipping date for this line item"
msgstr ""
-#: order/models.py:941
+#: order/models.py:957
msgid "Context"
msgstr ""
-#: order/models.py:942
+#: order/models.py:958
msgid "Additional context for this line"
msgstr ""
-#: order/models.py:950
+#: order/models.py:966
msgid "Unit price"
msgstr ""
-#: order/models.py:980
+#: order/models.py:996
msgid "Supplier part must match supplier"
msgstr ""
-#: order/models.py:988
+#: order/models.py:1004
msgid "deleted"
msgstr ""
-#: order/models.py:994 order/models.py:1074 order/models.py:1099
-#: order/models.py:1184 order/models.py:1320
+#: order/models.py:1010 order/models.py:1090 order/models.py:1115
+#: order/models.py:1200 order/models.py:1336
#: templates/js/translated/order.js:3112
msgid "Order"
msgstr ""
-#: order/models.py:995 order/models.py:1074
+#: order/models.py:1011 order/models.py:1090
#: order/templates/order/order_base.html:9
#: order/templates/order/order_base.html:18
#: report/templates/report/inventree_po_report.html:76
#: stock/templates/stock/item_base.html:184
+#: templates/email/overdue_purchase_order.html:15
#: templates/js/translated/order.js:885 templates/js/translated/order.js:1621
-#: templates/js/translated/part.js:899 templates/js/translated/stock.js:1846
-#: templates/js/translated/stock.js:2412
+#: templates/js/translated/part.js:943 templates/js/translated/stock.js:1856
+#: templates/js/translated/stock.js:2422
msgid "Purchase Order"
msgstr ""
-#: order/models.py:1013
+#: order/models.py:1029
msgid "Supplier part"
msgstr ""
-#: order/models.py:1020 order/templates/order/order_base.html:169
+#: order/models.py:1036 order/templates/order/order_base.html:169
#: templates/js/translated/order.js:1318 templates/js/translated/order.js:2009
-#: templates/js/translated/part.js:993 templates/js/translated/part.js:1020
+#: templates/js/translated/part.js:1037 templates/js/translated/part.js:1064
#: templates/js/translated/table_filters.js:330
msgid "Received"
msgstr ""
-#: order/models.py:1021
+#: order/models.py:1037
msgid "Number of items received"
msgstr ""
-#: order/models.py:1028 part/templates/part/prices.html:179 stock/models.py:722
+#: order/models.py:1044 part/templates/part/prices.html:181 stock/models.py:722
#: stock/serializers.py:153 stock/templates/stock/item_base.html:191
-#: templates/js/translated/stock.js:1900
+#: templates/js/translated/stock.js:1910
msgid "Purchase Price"
msgstr ""
-#: order/models.py:1029
+#: order/models.py:1045
msgid "Unit purchase price"
msgstr ""
-#: order/models.py:1037
+#: order/models.py:1053
msgid "Where does the Purchaser want this item to be stored?"
msgstr ""
-#: order/models.py:1109 part/templates/part/part_pricing.html:112
-#: part/templates/part/prices.html:119 part/templates/part/prices.html:288
+#: order/models.py:1125 part/templates/part/part_pricing.html:115
+#: part/templates/part/prices.html:121 part/templates/part/prices.html:290
msgid "Sale Price"
msgstr ""
-#: order/models.py:1110
+#: order/models.py:1126
msgid "Unit sale price"
msgstr ""
-#: order/models.py:1115
+#: order/models.py:1131
msgid "Shipped quantity"
msgstr ""
-#: order/models.py:1191
+#: order/models.py:1207
msgid "Date of shipment"
msgstr ""
-#: order/models.py:1198
+#: order/models.py:1214
msgid "Checked By"
msgstr ""
-#: order/models.py:1199
+#: order/models.py:1215
msgid "User who checked this shipment"
msgstr ""
-#: order/models.py:1207
+#: order/models.py:1223
msgid "Shipment number"
msgstr ""
-#: order/models.py:1214
+#: order/models.py:1230
msgid "Shipment notes"
msgstr ""
-#: order/models.py:1221
+#: order/models.py:1237
msgid "Tracking Number"
msgstr ""
-#: order/models.py:1222
+#: order/models.py:1238
msgid "Shipment tracking information"
msgstr ""
-#: order/models.py:1229
+#: order/models.py:1245
msgid "Invoice Number"
msgstr ""
-#: order/models.py:1230
+#: order/models.py:1246
msgid "Reference number for associated invoice"
msgstr ""
-#: order/models.py:1248
+#: order/models.py:1264
msgid "Shipment has already been sent"
msgstr ""
-#: order/models.py:1251
+#: order/models.py:1267
msgid "Shipment has no allocated stock items"
msgstr ""
-#: order/models.py:1354 order/models.py:1356
+#: order/models.py:1370 order/models.py:1372
msgid "Stock item has not been assigned"
msgstr ""
-#: order/models.py:1360
+#: order/models.py:1376
msgid "Cannot allocate stock item to a line with a different part"
msgstr ""
-#: order/models.py:1362
+#: order/models.py:1378
msgid "Cannot allocate stock to a line without a part"
msgstr ""
-#: order/models.py:1365
+#: order/models.py:1381
msgid "Allocation quantity cannot exceed stock quantity"
msgstr "Tahsis miktarı stok miktarını aşamaz"
-#: order/models.py:1369
+#: order/models.py:1385
msgid "StockItem is over-allocated"
msgstr "Stok kalemi fazladan tahsis edilmiş"
-#: order/models.py:1375 order/serializers.py:1045
+#: order/models.py:1391 order/serializers.py:1047
msgid "Quantity must be 1 for serialized stock item"
msgstr "Seri numaralı stok kalemi için miktar bir olmalı"
-#: order/models.py:1378
+#: order/models.py:1394
msgid "Sales order does not match shipment"
msgstr ""
-#: order/models.py:1379
+#: order/models.py:1395
msgid "Shipment does not match sales order"
msgstr ""
-#: order/models.py:1387
+#: order/models.py:1403
msgid "Line"
msgstr ""
-#: order/models.py:1395 order/serializers.py:1149 order/serializers.py:1273
+#: order/models.py:1411 order/serializers.py:1151 order/serializers.py:1275
#: templates/js/translated/model_renderers.js:301
msgid "Shipment"
msgstr ""
-#: order/models.py:1396
+#: order/models.py:1412
msgid "Sales order shipment reference"
msgstr ""
-#: order/models.py:1408 templates/InvenTree/notifications/notifications.html:70
+#: order/models.py:1424 templates/InvenTree/notifications/notifications.html:70
msgid "Item"
msgstr ""
-#: order/models.py:1409
+#: order/models.py:1425
msgid "Select stock item to allocate"
msgstr ""
-#: order/models.py:1412
+#: order/models.py:1428
msgid "Enter stock allocation quantity"
msgstr "Stok tahsis miktarını girin"
@@ -3662,7 +3692,7 @@ msgstr ""
msgid "Purchase order must match supplier"
msgstr ""
-#: order/serializers.py:406 order/serializers.py:1117
+#: order/serializers.py:406 order/serializers.py:1119
msgid "Line Item"
msgstr ""
@@ -3710,42 +3740,60 @@ msgstr ""
msgid "Supplied barcode values must be unique"
msgstr ""
-#: order/serializers.py:866
+#: order/serializers.py:868
msgid "Sale price currency"
msgstr ""
-#: order/serializers.py:947
+#: order/serializers.py:949
msgid "No shipment details provided"
msgstr ""
-#: order/serializers.py:1006 order/serializers.py:1126
+#: order/serializers.py:1008 order/serializers.py:1128
msgid "Line item is not associated with this order"
msgstr ""
-#: order/serializers.py:1028
+#: order/serializers.py:1030
msgid "Quantity must be positive"
msgstr ""
-#: order/serializers.py:1139
+#: order/serializers.py:1141
msgid "Enter serial numbers to allocate"
msgstr ""
-#: order/serializers.py:1161 order/serializers.py:1281
+#: order/serializers.py:1163 order/serializers.py:1283
msgid "Shipment has already been shipped"
msgstr ""
-#: order/serializers.py:1164 order/serializers.py:1284
+#: order/serializers.py:1166 order/serializers.py:1286
msgid "Shipment is not associated with this order"
msgstr ""
-#: order/serializers.py:1214
+#: order/serializers.py:1216
msgid "No match found for the following serial numbers"
msgstr ""
-#: order/serializers.py:1224
+#: order/serializers.py:1226
msgid "The following serial numbers are already allocated"
msgstr ""
+#: order/tasks.py:26
+msgid "Overdue Purchase Order"
+msgstr ""
+
+#: order/tasks.py:31
+#, python-brace-format
+msgid "Purchase order {po} is now overdue"
+msgstr ""
+
+#: order/tasks.py:88
+msgid "Overdue Sales Order"
+msgstr ""
+
+#: order/tasks.py:93
+#, python-brace-format
+msgid "Sales order {so} is now overdue"
+msgstr ""
+
#: order/templates/order/order_base.html:33
msgid "Print purchase order report"
msgstr ""
@@ -3870,8 +3918,8 @@ msgstr "Tedarikçi Parçası Seçin"
#: templates/js/translated/bom.js:77 templates/js/translated/build.js:427
#: templates/js/translated/build.js:579 templates/js/translated/build.js:1972
#: templates/js/translated/order.js:833 templates/js/translated/order.js:1265
-#: templates/js/translated/order.js:2731 templates/js/translated/stock.js:570
-#: templates/js/translated/stock.js:738
+#: templates/js/translated/order.js:2731 templates/js/translated/stock.js:569
+#: templates/js/translated/stock.js:737
#: templates/patterns/wizard/match_fields.html:70
msgid "Remove row"
msgstr ""
@@ -3990,7 +4038,7 @@ msgid "Pending Shipments"
msgstr ""
#: order/templates/order/sales_order_detail.html:70
-#: templates/attachment_table.html:6 templates/js/translated/bom.js:1053
+#: templates/attachment_table.html:6 templates/js/translated/bom.js:1047
#: templates/js/translated/build.js:1880
msgid "Actions"
msgstr "İşlemler"
@@ -4021,47 +4069,47 @@ msgstr ""
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr ""
-#: part/api.py:481
+#: part/api.py:482
msgid "Incoming Purchase Order"
msgstr ""
-#: part/api.py:501
+#: part/api.py:502
msgid "Outgoing Sales Order"
msgstr ""
-#: part/api.py:519
+#: part/api.py:520
msgid "Stock produced by Build Order"
msgstr ""
-#: part/api.py:551
+#: part/api.py:552
msgid "Stock required for Build Order"
msgstr ""
-#: part/api.py:637
+#: part/api.py:638
msgid "Valid"
msgstr ""
-#: part/api.py:638
+#: part/api.py:639
msgid "Validate entire Bill of Materials"
msgstr ""
-#: part/api.py:644
+#: part/api.py:645
msgid "This option must be selected"
msgstr ""
-#: part/api.py:1010
+#: part/api.py:1011
msgid "Must be greater than zero"
msgstr ""
-#: part/api.py:1014
+#: part/api.py:1015
msgid "Must be a valid quantity"
msgstr ""
-#: part/api.py:1029
+#: part/api.py:1030
msgid "Specify location for initial part stock"
msgstr ""
-#: part/api.py:1060 part/api.py:1064 part/api.py:1079 part/api.py:1083
+#: part/api.py:1061 part/api.py:1065 part/api.py:1080 part/api.py:1084
msgid "This field is required"
msgstr ""
@@ -4080,17 +4128,13 @@ msgid "Available Stock"
msgstr ""
#: part/bom.py:130 part/templates/part/part_base.html:207
-#: templates/js/translated/part.js:517 templates/js/translated/part.js:537
-#: templates/js/translated/part.js:1229 templates/js/translated/part.js:1401
-#: templates/js/translated/part.js:1417
+#: templates/js/translated/part.js:561 templates/js/translated/part.js:581
+#: templates/js/translated/part.js:1273 templates/js/translated/part.js:1445
+#: templates/js/translated/part.js:1461
msgid "On Order"
msgstr ""
-#: part/forms.py:59
-msgid "Select part category"
-msgstr ""
-
-#: part/forms.py:69
+#: part/forms.py:60
msgid "Input quantity for price calculation"
msgstr ""
@@ -4106,7 +4150,7 @@ msgstr ""
msgid "Default keywords for parts in this category"
msgstr ""
-#: part/models.py:115 part/models.py:2415 part/templates/part/category.html:15
+#: part/models.py:115 part/models.py:2403 part/templates/part/category.html:15
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr ""
@@ -4123,7 +4167,7 @@ msgstr "Parça Kategorileri"
#: part/templates/part/category_sidebar.html:9
#: templates/InvenTree/index.html:85 templates/InvenTree/search.html:82
#: templates/InvenTree/settings/sidebar.html:39
-#: templates/js/translated/part.js:1768 templates/js/translated/search.js:144
+#: templates/js/translated/part.js:1864 templates/js/translated/search.js:144
#: templates/navbar.html:24 users/models.py:37
msgid "Parts"
msgstr "Parçalar"
@@ -4153,7 +4197,7 @@ msgstr "En son seri numarası"
msgid "Duplicate IPN not allowed in part settings"
msgstr "Yinelenen DPN'ye parça ayarlarında izin verilmiyor"
-#: part/models.py:738 part/models.py:2469
+#: part/models.py:738 part/models.py:2457
msgid "Part name"
msgstr "Parça adı"
@@ -4186,12 +4230,11 @@ msgstr "Anahtar kelimeler"
msgid "Part keywords to improve visibility in search results"
msgstr ""
-#: part/models.py:776 part/models.py:2171 part/models.py:2414
+#: part/models.py:776 part/models.py:2159 part/models.py:2402
#: part/templates/part/part_base.html:257
-#: part/templates/part/set_category.html:15
#: templates/InvenTree/notifications/notifications.html:65
#: templates/InvenTree/settings/settings.html:231
-#: templates/js/translated/part.js:1369
+#: templates/js/translated/part.js:1413 templates/js/translated/part.js:1639
msgid "Category"
msgstr ""
@@ -4200,8 +4243,8 @@ msgid "Part category"
msgstr ""
#: part/models.py:782 part/templates/part/part_base.html:266
-#: templates/js/translated/part.js:666 templates/js/translated/part.js:1322
-#: templates/js/translated/stock.js:1659
+#: templates/js/translated/part.js:710 templates/js/translated/part.js:1366
+#: templates/js/translated/stock.js:1669
msgid "IPN"
msgstr "DPN"
@@ -4214,7 +4257,7 @@ msgid "Part revision or version number"
msgstr "Parça revizyon veya versiyon numarası"
#: part/models.py:790 part/templates/part/part_base.html:273
-#: report/models.py:170 templates/js/translated/part.js:670
+#: report/models.py:170 templates/js/translated/part.js:714
msgid "Revision"
msgstr "Revizyon"
@@ -4302,317 +4345,321 @@ msgstr ""
msgid "Creation User"
msgstr "Oluşturan Kullanıcı"
-#: part/models.py:1690
+#: part/models.py:1685
msgid "Sell multiple"
msgstr ""
-#: part/models.py:2218
+#: part/models.py:2206
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:2235
+#: part/models.py:2223
msgid "Test with this name already exists for this part"
msgstr ""
-#: part/models.py:2255 templates/js/translated/part.js:1819
-#: templates/js/translated/stock.js:1274
+#: part/models.py:2243 templates/js/translated/part.js:1915
+#: templates/js/translated/stock.js:1284
msgid "Test Name"
msgstr "Test Adı"
-#: part/models.py:2256
+#: part/models.py:2244
msgid "Enter a name for the test"
msgstr ""
-#: part/models.py:2261
+#: part/models.py:2249
msgid "Test Description"
msgstr "Test Açıklaması"
-#: part/models.py:2262
+#: part/models.py:2250
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:2267 templates/js/translated/part.js:1828
+#: part/models.py:2255 templates/js/translated/part.js:1924
#: templates/js/translated/table_filters.js:294
msgid "Required"
msgstr "Gerekli"
-#: part/models.py:2268
+#: part/models.py:2256
msgid "Is this test required to pass?"
msgstr "Testi geçmesi için bu gerekli mi?"
-#: part/models.py:2273 templates/js/translated/part.js:1836
+#: part/models.py:2261 templates/js/translated/part.js:1932
msgid "Requires Value"
msgstr ""
-#: part/models.py:2274
+#: part/models.py:2262
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:2279 templates/js/translated/part.js:1843
+#: part/models.py:2267 templates/js/translated/part.js:1939
msgid "Requires Attachment"
msgstr ""
-#: part/models.py:2280
+#: part/models.py:2268
msgid "Does this test require a file attachment when adding a test result?"
msgstr ""
-#: part/models.py:2288
+#: part/models.py:2276
#, python-brace-format
msgid "Illegal character in template name ({c})"
msgstr ""
-#: part/models.py:2324
+#: part/models.py:2312
msgid "Parameter template name must be unique"
msgstr "Parametre şablon adı benzersiz olmalıdır"
-#: part/models.py:2332
+#: part/models.py:2320
msgid "Parameter Name"
msgstr ""
-#: part/models.py:2339
+#: part/models.py:2327
msgid "Parameter Units"
msgstr ""
-#: part/models.py:2370
+#: part/models.py:2358
msgid "Parent Part"
msgstr ""
-#: part/models.py:2372 part/models.py:2420 part/models.py:2421
+#: part/models.py:2360 part/models.py:2408 part/models.py:2409
#: templates/InvenTree/settings/settings.html:226
msgid "Parameter Template"
msgstr "Parametre Şablonu"
-#: part/models.py:2374
+#: part/models.py:2362
msgid "Data"
msgstr ""
-#: part/models.py:2374
+#: part/models.py:2362
msgid "Parameter Value"
msgstr ""
-#: part/models.py:2425 templates/InvenTree/settings/settings.html:235
+#: part/models.py:2413 templates/InvenTree/settings/settings.html:235
msgid "Default Value"
msgstr ""
-#: part/models.py:2426
+#: part/models.py:2414
msgid "Default Parameter Value"
msgstr ""
-#: part/models.py:2461
+#: part/models.py:2449
msgid "Part ID or part name"
msgstr ""
-#: part/models.py:2464 templates/js/translated/model_renderers.js:200
+#: part/models.py:2452 templates/js/translated/model_renderers.js:200
msgid "Part ID"
msgstr ""
-#: part/models.py:2465
+#: part/models.py:2453
msgid "Unique part ID value"
msgstr ""
-#: part/models.py:2468
+#: part/models.py:2456
msgid "Part Name"
msgstr ""
-#: part/models.py:2472
+#: part/models.py:2460
msgid "Part IPN"
msgstr ""
-#: part/models.py:2473
+#: part/models.py:2461
msgid "Part IPN value"
msgstr ""
-#: part/models.py:2476
+#: part/models.py:2464
msgid "Level"
msgstr ""
-#: part/models.py:2477
+#: part/models.py:2465
msgid "BOM level"
msgstr ""
-#: part/models.py:2546
+#: part/models.py:2534
msgid "Select parent part"
msgstr ""
-#: part/models.py:2554
+#: part/models.py:2542
msgid "Sub part"
msgstr ""
-#: part/models.py:2555
+#: part/models.py:2543
msgid "Select part to be used in BOM"
msgstr ""
-#: part/models.py:2561
+#: part/models.py:2549
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:2563 part/templates/part/upload_bom.html:58
-#: templates/js/translated/bom.js:877 templates/js/translated/bom.js:971
+#: part/models.py:2551 part/templates/part/upload_bom.html:58
+#: templates/js/translated/bom.js:871 templates/js/translated/bom.js:965
#: templates/js/translated/table_filters.js:92
msgid "Optional"
msgstr ""
-#: part/models.py:2563
+#: part/models.py:2551
msgid "This BOM item is optional"
msgstr ""
-#: part/models.py:2566 part/templates/part/upload_bom.html:55
+#: part/models.py:2554 part/templates/part/upload_bom.html:55
msgid "Overage"
msgstr ""
-#: part/models.py:2567
+#: part/models.py:2555
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr ""
-#: part/models.py:2570
+#: part/models.py:2558
msgid "BOM item reference"
msgstr ""
-#: part/models.py:2573
+#: part/models.py:2561
msgid "BOM item notes"
msgstr ""
-#: part/models.py:2575
+#: part/models.py:2563
msgid "Checksum"
msgstr ""
-#: part/models.py:2575
+#: part/models.py:2563
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:2579 part/templates/part/upload_bom.html:57
-#: templates/js/translated/bom.js:988
+#: part/models.py:2567 part/templates/part/upload_bom.html:57
+#: templates/js/translated/bom.js:982
#: templates/js/translated/table_filters.js:68
#: templates/js/translated/table_filters.js:88
msgid "Inherited"
msgstr ""
-#: part/models.py:2580
+#: part/models.py:2568
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:2585 part/templates/part/upload_bom.html:56
-#: templates/js/translated/bom.js:980
+#: part/models.py:2573 part/templates/part/upload_bom.html:56
+#: templates/js/translated/bom.js:974
msgid "Allow Variants"
msgstr "Çeşide İzin Ver"
-#: part/models.py:2586
+#: part/models.py:2574
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:2664 stock/models.py:460
+#: part/models.py:2652 stock/models.py:460
msgid "Quantity must be integer value for trackable parts"
msgstr ""
-#: part/models.py:2673 part/models.py:2675
+#: part/models.py:2661 part/models.py:2663
msgid "Sub part must be specified"
msgstr ""
-#: part/models.py:2780
+#: part/models.py:2768
msgid "BOM Item Substitute"
msgstr ""
-#: part/models.py:2801
+#: part/models.py:2789
msgid "Substitute part cannot be the same as the master part"
msgstr ""
-#: part/models.py:2814
+#: part/models.py:2802
msgid "Parent BOM item"
msgstr ""
-#: part/models.py:2822
+#: part/models.py:2810
msgid "Substitute part"
msgstr ""
-#: part/models.py:2833
+#: part/models.py:2825
msgid "Part 1"
msgstr ""
-#: part/models.py:2837
+#: part/models.py:2829
msgid "Part 2"
msgstr ""
-#: part/models.py:2837
+#: part/models.py:2829
msgid "Select Related Part"
msgstr ""
-#: part/models.py:2868
-msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique"
+#: part/models.py:2847
+msgid "Part relationship cannot be created between a part and itself"
msgstr ""
-#: part/serializers.py:138 part/serializers.py:169 stock/serializers.py:163
+#: part/models.py:2851
+msgid "Duplicate relationship already exists"
+msgstr ""
+
+#: part/serializers.py:140 part/serializers.py:171 stock/serializers.py:163
msgid "Purchase currency of this stock item"
msgstr ""
-#: part/serializers.py:794
+#: part/serializers.py:796
msgid "Select part to copy BOM from"
msgstr ""
-#: part/serializers.py:802
+#: part/serializers.py:804
msgid "Remove Existing Data"
msgstr ""
-#: part/serializers.py:803
+#: part/serializers.py:805
msgid "Remove existing BOM items before copying"
msgstr ""
-#: part/serializers.py:808
+#: part/serializers.py:810
msgid "Include Inherited"
msgstr ""
-#: part/serializers.py:809
+#: part/serializers.py:811
msgid "Include BOM items which are inherited from templated parts"
msgstr ""
-#: part/serializers.py:814
+#: part/serializers.py:816
msgid "Skip Invalid Rows"
msgstr ""
-#: part/serializers.py:815
+#: part/serializers.py:817
msgid "Enable this option to skip invalid rows"
msgstr ""
-#: part/serializers.py:820
+#: part/serializers.py:822
msgid "Copy Substitute Parts"
msgstr ""
-#: part/serializers.py:821
+#: part/serializers.py:823
msgid "Copy substitute parts when duplicate BOM items"
msgstr ""
-#: part/serializers.py:861
+#: part/serializers.py:863
msgid "Clear Existing BOM"
msgstr ""
-#: part/serializers.py:862
+#: part/serializers.py:864
msgid "Delete existing BOM items before uploading"
msgstr ""
-#: part/serializers.py:892
+#: part/serializers.py:894
msgid "No part column specified"
msgstr ""
-#: part/serializers.py:935
+#: part/serializers.py:937
msgid "Multiple matching parts found"
msgstr ""
-#: part/serializers.py:938
+#: part/serializers.py:940
msgid "No matching part found"
msgstr ""
-#: part/serializers.py:941
+#: part/serializers.py:943
msgid "Part is not designated as a component"
msgstr ""
-#: part/serializers.py:950
+#: part/serializers.py:952
msgid "Quantity not provided"
msgstr ""
-#: part/serializers.py:958
+#: part/serializers.py:960
msgid "Invalid quantity"
msgstr ""
-#: part/serializers.py:979
+#: part/serializers.py:981
msgid "At least one BOM item is required"
msgstr ""
@@ -5088,10 +5135,10 @@ msgid "Part is virtual (not a physical part)"
msgstr ""
#: part/templates/part/part_base.html:143
-#: templates/js/translated/company.js:623
-#: templates/js/translated/company.js:882
+#: templates/js/translated/company.js:608
+#: templates/js/translated/company.js:867
#: templates/js/translated/model_renderers.js:192
-#: templates/js/translated/part.js:581 templates/js/translated/part.js:658
+#: templates/js/translated/part.js:625 templates/js/translated/part.js:702
msgid "Inactive"
msgstr "Pasif"
@@ -5120,13 +5167,13 @@ msgstr ""
msgid "Allocated to Sales Orders"
msgstr ""
-#: part/templates/part/part_base.html:232 templates/js/translated/bom.js:1009
+#: part/templates/part/part_base.html:232 templates/js/translated/bom.js:1003
msgid "Can Build"
msgstr ""
-#: part/templates/part/part_base.html:238 templates/js/translated/part.js:520
-#: templates/js/translated/part.js:540 templates/js/translated/part.js:1233
-#: templates/js/translated/part.js:1405 templates/js/translated/part.js:1421
+#: part/templates/part/part_base.html:238 templates/js/translated/part.js:564
+#: templates/js/translated/part.js:584 templates/js/translated/part.js:1277
+#: templates/js/translated/part.js:1449 templates/js/translated/part.js:1465
msgid "Building"
msgstr ""
@@ -5143,7 +5190,7 @@ msgstr "Son Seri Numarası"
msgid "Search for serial number"
msgstr ""
-#: part/templates/part/part_base.html:443 part/templates/part/prices.html:147
+#: part/templates/part/part_base.html:443 part/templates/part/prices.html:149
msgid "Calculate"
msgstr "Hesapla"
@@ -5161,54 +5208,55 @@ msgstr ""
#: part/templates/part/part_pricing.html:26
#: part/templates/part/part_pricing.html:52
-#: part/templates/part/part_pricing.html:100
-#: part/templates/part/part_pricing.html:115 part/templates/part/prices.html:28
-#: part/templates/part/prices.html:55 part/templates/part/prices.html:106
-#: part/templates/part/prices.html:123
+#: part/templates/part/part_pricing.html:103
+#: part/templates/part/part_pricing.html:118 part/templates/part/prices.html:28
+#: part/templates/part/prices.html:55 part/templates/part/prices.html:108
+#: part/templates/part/prices.html:125
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:104
-#: part/templates/part/part_pricing.html:119 part/templates/part/prices.html:35
-#: part/templates/part/prices.html:62 part/templates/part/prices.html:111
-#: part/templates/part/prices.html:128
+#: part/templates/part/part_pricing.html:107
+#: part/templates/part/part_pricing.html:122 part/templates/part/prices.html:35
+#: part/templates/part/prices.html:62 part/templates/part/prices.html:113
+#: part/templates/part/prices.html:130
msgid "Total Cost"
msgstr "Toplam Maliyet"
#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:43
-#: templates/js/translated/bom.js:963
+#: templates/js/translated/bom.js:957
msgid "No supplier pricing available"
msgstr ""
#: part/templates/part/part_pricing.html:48 part/templates/part/prices.html:52
-#: part/templates/part/prices.html:246
+#: part/templates/part/prices.html:248
msgid "BOM Pricing"
msgstr ""
-#: part/templates/part/part_pricing.html:65 part/templates/part/prices.html:72
+#: part/templates/part/part_pricing.html:66 part/templates/part/prices.html:72
msgid "Unit Purchase Price"
msgstr ""
-#: part/templates/part/part_pricing.html:71 part/templates/part/prices.html:79
+#: part/templates/part/part_pricing.html:72 part/templates/part/prices.html:79
msgid "Total Purchase Price"
msgstr ""
-#: part/templates/part/part_pricing.html:81 part/templates/part/prices.html:89
+#: part/templates/part/part_pricing.html:82 part/templates/part/prices.html:89
msgid "Note: BOM pricing is incomplete for this part"
msgstr ""
-#: part/templates/part/part_pricing.html:88 part/templates/part/prices.html:96
+#: part/templates/part/part_pricing.html:91 part/templates/part/prices.html:98
msgid "No BOM pricing available"
msgstr ""
-#: part/templates/part/part_pricing.html:97 part/templates/part/prices.html:105
+#: part/templates/part/part_pricing.html:100
+#: part/templates/part/prices.html:107
msgid "Internal Price"
msgstr ""
-#: part/templates/part/part_pricing.html:128
-#: part/templates/part/prices.html:137
+#: part/templates/part/part_pricing.html:131
+#: part/templates/part/prices.html:139
msgid "No pricing information is available for this part."
msgstr ""
@@ -5232,43 +5280,6 @@ msgstr ""
msgid "Select from existing images"
msgstr ""
-#: part/templates/part/partial_delete.html:9
-#, python-format
-msgid "Part '%(full_name)s' cannot be deleted as it is still marked as active.\n"
-"
Disable the \"Active\" part attribute and re-try.\n"
-" "
-msgstr ""
-
-#: part/templates/part/partial_delete.html:17
-#, python-format
-msgid "Are you sure you want to delete part '%(full_name)s'?"
-msgstr ""
-
-#: part/templates/part/partial_delete.html:22
-#, python-format
-msgid "This part is used in BOMs for %(count)s other parts. If you delete this part, the BOMs for the following parts will be updated"
-msgstr ""
-
-#: part/templates/part/partial_delete.html:32
-#, python-format
-msgid "There are %(count)s stock entries defined for this part. If you delete this part, the following stock entries will also be deleted:"
-msgstr ""
-
-#: part/templates/part/partial_delete.html:43
-#, python-format
-msgid "There are %(count)s manufacturers defined for this part. If you delete this part, the following manufacturer parts will also be deleted:"
-msgstr ""
-
-#: part/templates/part/partial_delete.html:54
-#, python-format
-msgid "There are %(count)s suppliers defined for this part. If you delete this part, the following supplier parts will also be deleted:"
-msgstr "Bu parçası için tanımlanmış %(count)s tedarikçi bulunmaktadır. Bu parçayı silerseniz, aşağıdaki tedarikçi parçaları da silinecektir:"
-
-#: part/templates/part/partial_delete.html:67
-#, python-format
-msgid "There are %(count)s unique parts tracked for '%(full_name)s'. Deleting this part will permanently remove this tracking information."
-msgstr ""
-
#: part/templates/part/prices.html:19
msgid "Pricing ranges"
msgstr ""
@@ -5285,66 +5296,58 @@ msgstr ""
msgid "Show BOM cost"
msgstr ""
-#: part/templates/part/prices.html:120
+#: part/templates/part/prices.html:122
msgid "Show sale cost"
msgstr ""
-#: part/templates/part/prices.html:121
+#: part/templates/part/prices.html:123
msgid "Show sale price"
msgstr ""
-#: part/templates/part/prices.html:143
+#: part/templates/part/prices.html:145
msgid "Calculation parameters"
msgstr ""
-#: part/templates/part/prices.html:158 templates/js/translated/bom.js:957
+#: part/templates/part/prices.html:160 templates/js/translated/bom.js:951
msgid "Supplier Cost"
msgstr ""
-#: part/templates/part/prices.html:159 part/templates/part/prices.html:180
-#: part/templates/part/prices.html:204 part/templates/part/prices.html:234
-#: part/templates/part/prices.html:260 part/templates/part/prices.html:289
+#: part/templates/part/prices.html:161 part/templates/part/prices.html:182
+#: part/templates/part/prices.html:206 part/templates/part/prices.html:236
+#: part/templates/part/prices.html:262 part/templates/part/prices.html:291
msgid "Jump to overview"
msgstr ""
-#: part/templates/part/prices.html:184
+#: part/templates/part/prices.html:186
msgid "Stock Pricing"
msgstr ""
-#: part/templates/part/prices.html:193
+#: part/templates/part/prices.html:195
msgid "No stock pricing history is available for this part."
msgstr ""
-#: part/templates/part/prices.html:203
+#: part/templates/part/prices.html:205
msgid "Internal Cost"
msgstr ""
-#: part/templates/part/prices.html:218
+#: part/templates/part/prices.html:220
msgid "Add Internal Price Break"
msgstr ""
-#: part/templates/part/prices.html:233
+#: part/templates/part/prices.html:235
msgid "BOM Cost"
msgstr ""
-#: part/templates/part/prices.html:259
+#: part/templates/part/prices.html:261
msgid "Sale Cost"
msgstr ""
-#: part/templates/part/prices.html:300
+#: part/templates/part/prices.html:302
msgid "No sale pice history available for this part."
msgstr ""
-#: part/templates/part/set_category.html:9
-msgid "Set category for the following parts"
-msgstr "Aşağıdaki parçalara kategori ayarla"
-
-#: part/templates/part/set_category.html:32
-msgid "Remove part"
-msgstr ""
-
-#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:543
-#: templates/js/translated/part.js:1221 templates/js/translated/part.js:1425
+#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:587
+#: templates/js/translated/part.js:1265 templates/js/translated/part.js:1469
msgid "No Stock"
msgstr "Stok Yok"
@@ -5407,56 +5410,39 @@ msgstr ""
msgid "{title} v{version}"
msgstr ""
-#: part/views.py:74
-msgid "Set Part Category"
-msgstr ""
-
-#: part/views.py:122
-#, python-brace-format
-msgid "Set category for {n} parts"
-msgstr ""
-
-#: part/views.py:193
+#: part/views.py:118
msgid "Match References"
msgstr ""
-#: part/views.py:494
+#: part/views.py:419
msgid "None"
msgstr "Hiçbiri"
-#: part/views.py:556
+#: part/views.py:481
msgid "Part QR Code"
msgstr ""
-#: part/views.py:650
+#: part/views.py:575
msgid "Select Part Image"
msgstr ""
-#: part/views.py:676
+#: part/views.py:601
msgid "Updated part image"
msgstr ""
-#: part/views.py:679
+#: part/views.py:604
msgid "Part image not found"
msgstr ""
-#: part/views.py:768
-msgid "Confirm Part Deletion"
-msgstr ""
-
-#: part/views.py:776
-msgid "Part was deleted"
-msgstr ""
-
-#: part/views.py:785
+#: part/views.py:693
msgid "Part Pricing"
msgstr ""
-#: part/views.py:976
+#: part/views.py:884
msgid "Delete Part Category"
msgstr ""
-#: part/views.py:983
+#: part/views.py:891
msgid "Part category was deleted"
msgstr ""
@@ -5516,21 +5502,21 @@ msgstr ""
msgid "Label printing failed"
msgstr ""
-#: plugin/builtin/integration/core_notifications.py:28
+#: plugin/builtin/integration/core_notifications.py:29
msgid "InvenTree contributors"
msgstr ""
-#: plugin/builtin/integration/core_notifications.py:29
+#: plugin/builtin/integration/core_notifications.py:30
msgid "Integrated outgoing notificaton methods"
msgstr ""
-#: plugin/builtin/integration/core_notifications.py:33
-#: plugin/builtin/integration/core_notifications.py:52
-msgid "Enable email notifications"
-msgstr ""
-
#: plugin/builtin/integration/core_notifications.py:34
#: plugin/builtin/integration/core_notifications.py:53
+msgid "Enable email notifications"
+msgstr ""
+
+#: plugin/builtin/integration/core_notifications.py:35
+#: plugin/builtin/integration/core_notifications.py:54
msgid "Allow sending of emails for event notifications"
msgstr ""
@@ -5646,15 +5632,19 @@ msgstr ""
msgid "Either packagename of URL must be provided"
msgstr ""
-#: report/api.py:166
+#: report/api.py:179
msgid "No valid objects provided to template"
msgstr "Şablon için geçerli bir nesne sağlanmadı"
-#: report/api.py:198 report/api.py:239
+#: report/api.py:215 report/api.py:256
#, python-brace-format
msgid "Template file '{template}' is missing or does not exist"
msgstr ""
+#: report/api.py:359
+msgid "Test report"
+msgstr ""
+
#: report/models.py:152
msgid "Template name"
msgstr "Şablon adı"
@@ -5757,7 +5747,7 @@ msgstr ""
#: templates/js/translated/build.js:1173 templates/js/translated/build.js:1671
#: templates/js/translated/model_renderers.js:106
#: templates/js/translated/order.js:115 templates/js/translated/order.js:3229
-#: templates/js/translated/order.js:3318 templates/js/translated/stock.js:435
+#: templates/js/translated/order.js:3318 templates/js/translated/stock.js:434
msgid "Serial Number"
msgstr "Seri Numara"
@@ -5766,19 +5756,19 @@ msgid "Test Results"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:93
-#: stock/models.py:2068
+#: stock/models.py:2072
msgid "Test"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:94
-#: stock/models.py:2074
+#: stock/models.py:2078
msgid "Result"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:97
#: templates/InvenTree/settings/plugin.html:51
#: templates/InvenTree/settings/plugin_settings.html:38
-#: templates/js/translated/order.js:1669 templates/js/translated/stock.js:2340
+#: templates/js/translated/order.js:1669 templates/js/translated/stock.js:2350
msgid "Date"
msgstr ""
@@ -5796,20 +5786,20 @@ msgid "Installed Items"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:137
-#: templates/js/translated/stock.js:555 templates/js/translated/stock.js:725
-#: templates/js/translated/stock.js:2589
+#: templates/js/translated/stock.js:554 templates/js/translated/stock.js:724
+#: templates/js/translated/stock.js:2599
msgid "Serial"
msgstr "Seri No"
-#: stock/api.py:504
+#: stock/api.py:505
msgid "Quantity is required"
msgstr ""
-#: stock/api.py:511
+#: stock/api.py:512
msgid "Valid part must be supplied"
msgstr ""
-#: stock/api.py:536
+#: stock/api.py:537
msgid "Serial numbers cannot be supplied for a non-trackable part"
msgstr ""
@@ -5917,7 +5907,7 @@ msgid "Destination Sales Order"
msgstr ""
#: stock/models.py:690 stock/templates/stock/item_base.html:429
-#: templates/js/translated/stock.js:1816
+#: templates/js/translated/stock.js:1826
msgid "Expiry Date"
msgstr ""
@@ -5971,79 +5961,79 @@ msgstr "Miktar seri numaları ile eşleşmiyor"
msgid "Serial numbers already exist: {exists}"
msgstr "Seri numaraları zaten mevcut: {exists}"
-#: stock/models.py:1321
+#: stock/models.py:1325
msgid "Stock item has been assigned to a sales order"
msgstr ""
-#: stock/models.py:1324
+#: stock/models.py:1328
msgid "Stock item is installed in another item"
msgstr ""
-#: stock/models.py:1327
+#: stock/models.py:1331
msgid "Stock item contains other items"
msgstr ""
-#: stock/models.py:1330
+#: stock/models.py:1334
msgid "Stock item has been assigned to a customer"
msgstr ""
-#: stock/models.py:1333
+#: stock/models.py:1337
msgid "Stock item is currently in production"
msgstr ""
-#: stock/models.py:1336
+#: stock/models.py:1340
msgid "Serialized stock cannot be merged"
msgstr ""
-#: stock/models.py:1343 stock/serializers.py:908
+#: stock/models.py:1347 stock/serializers.py:895
msgid "Duplicate stock items"
msgstr ""
-#: stock/models.py:1347
+#: stock/models.py:1351
msgid "Stock items must refer to the same part"
msgstr ""
-#: stock/models.py:1351
+#: stock/models.py:1355
msgid "Stock items must refer to the same supplier part"
msgstr ""
-#: stock/models.py:1355
+#: stock/models.py:1359
msgid "Stock status codes must match"
msgstr ""
-#: stock/models.py:1524
+#: stock/models.py:1528
msgid "StockItem cannot be moved as it is not in stock"
msgstr "Stok kalemi stokta olmadığı için taşınamaz"
-#: stock/models.py:1986
+#: stock/models.py:1990
msgid "Entry notes"
msgstr ""
-#: stock/models.py:2044
+#: stock/models.py:2048
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:2050
+#: stock/models.py:2054
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:2069
+#: stock/models.py:2073
msgid "Test name"
msgstr ""
-#: stock/models.py:2075
+#: stock/models.py:2079
msgid "Test result"
msgstr ""
-#: stock/models.py:2081
+#: stock/models.py:2085
msgid "Test output value"
msgstr ""
-#: stock/models.py:2088
+#: stock/models.py:2092
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:2094
+#: stock/models.py:2098
msgid "Test notes"
msgstr ""
@@ -6064,7 +6054,7 @@ msgstr ""
msgid "Enter serial numbers for new items"
msgstr ""
-#: stock/serializers.py:309 stock/serializers.py:865 stock/serializers.py:1098
+#: stock/serializers.py:309 stock/serializers.py:852 stock/serializers.py:1085
msgid "Destination stock location"
msgstr ""
@@ -6104,63 +6094,63 @@ msgstr "İşlem notu ekle (isteğe bağlı)"
msgid "Destination location for returned item"
msgstr ""
-#: stock/serializers.py:720
+#: stock/serializers.py:707
msgid "Part must be salable"
msgstr ""
-#: stock/serializers.py:724
+#: stock/serializers.py:711
msgid "Item is allocated to a sales order"
msgstr ""
-#: stock/serializers.py:728
+#: stock/serializers.py:715
msgid "Item is allocated to a build order"
msgstr ""
-#: stock/serializers.py:759
+#: stock/serializers.py:746
msgid "Customer to assign stock items"
msgstr ""
-#: stock/serializers.py:765
+#: stock/serializers.py:752
msgid "Selected company is not a customer"
msgstr ""
-#: stock/serializers.py:773
+#: stock/serializers.py:760
msgid "Stock assignment notes"
msgstr ""
-#: stock/serializers.py:783 stock/serializers.py:1014
+#: stock/serializers.py:770 stock/serializers.py:1001
msgid "A list of stock items must be provided"
msgstr ""
-#: stock/serializers.py:872
+#: stock/serializers.py:859
msgid "Stock merging notes"
msgstr ""
-#: stock/serializers.py:877
+#: stock/serializers.py:864
msgid "Allow mismatched suppliers"
msgstr ""
-#: stock/serializers.py:878
+#: stock/serializers.py:865
msgid "Allow stock items with different supplier parts to be merged"
msgstr ""
-#: stock/serializers.py:883
+#: stock/serializers.py:870
msgid "Allow mismatched status"
msgstr ""
-#: stock/serializers.py:884
+#: stock/serializers.py:871
msgid "Allow stock items with different status codes to be merged"
msgstr ""
-#: stock/serializers.py:894
+#: stock/serializers.py:881
msgid "At least two stock items must be provided"
msgstr ""
-#: stock/serializers.py:976
+#: stock/serializers.py:963
msgid "StockItem primary key value"
msgstr ""
-#: stock/serializers.py:1004
+#: stock/serializers.py:991
msgid "Stock transaction notes"
msgstr ""
@@ -6185,7 +6175,7 @@ msgstr ""
msgid "Test Report"
msgstr ""
-#: stock/templates/stock/item.html:94
+#: stock/templates/stock/item.html:94 stock/templates/stock/item.html:298
msgid "Delete Test Data"
msgstr ""
@@ -6197,11 +6187,15 @@ msgstr ""
msgid "Installed Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:151 templates/js/translated/stock.js:2733
+#: stock/templates/stock/item.html:151 templates/js/translated/stock.js:2743
msgid "Install Stock Item"
msgstr ""
-#: stock/templates/stock/item.html:292 templates/js/translated/stock.js:1455
+#: stock/templates/stock/item.html:290
+msgid "Delete all test results for this stock item"
+msgstr ""
+
+#: stock/templates/stock/item.html:323 templates/js/translated/stock.js:1465
msgid "Add Test Result"
msgstr ""
@@ -6388,7 +6382,7 @@ msgid "Stale"
msgstr ""
#: stock/templates/stock/item_base.html:442
-#: templates/js/translated/stock.js:1832
+#: templates/js/translated/stock.js:1842
msgid "Last Updated"
msgstr ""
@@ -6529,7 +6523,7 @@ msgstr ""
msgid "Child Items"
msgstr ""
-#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:182
+#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:144
msgid "Convert Stock Item"
msgstr "Stok Kalemine Dönüştür"
@@ -6550,31 +6544,19 @@ msgstr "Uyarı"
msgid "This action cannot be easily undone"
msgstr "Bu işlem kolayca geri alınamaz"
-#: stock/views.py:113
+#: stock/views.py:111
msgid "Stock Location QR code"
msgstr "Stok Konumu QR Kodu"
-#: stock/views.py:131
-msgid "Delete All Test Data"
-msgstr ""
-
-#: stock/views.py:149
-msgid "Confirm test data deletion"
-msgstr ""
-
-#: stock/views.py:150
-msgid "Check the confirmation box"
-msgstr "Onay kutusunu işaretleyin"
-
-#: stock/views.py:165
+#: stock/views.py:127
msgid "Stock Item QR Code"
msgstr ""
-#: stock/views.py:216
+#: stock/views.py:178
msgid "Delete Stock Location"
msgstr "Stok Konumunu Sil"
-#: stock/views.py:229
+#: stock/views.py:191
msgid "Delete Stock Item"
msgstr ""
@@ -7317,8 +7299,8 @@ msgstr "InvenTree Sürüm Bilgisi"
#: templates/about.html:11 templates/about.html:105
#: templates/js/translated/bom.js:133 templates/js/translated/bom.js:621
-#: templates/js/translated/modals.js:56 templates/js/translated/modals.js:595
-#: templates/js/translated/modals.js:689 templates/js/translated/modals.js:997
+#: templates/js/translated/modals.js:56 templates/js/translated/modals.js:601
+#: templates/js/translated/modals.js:695 templates/js/translated/modals.js:1003
#: templates/js/translated/order.js:928 templates/modals.html:15
#: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50
msgid "Close"
@@ -7390,6 +7372,10 @@ msgstr ""
msgid "Please confirm that %(email)s is an email address for user %(user_display)s."
msgstr ""
+#: templates/account/email_confirm.html:20 templates/js/translated/forms.js:630
+msgid "Confirm"
+msgstr "Onay"
+
#: templates/account/email_confirm.html:27
#, python-format
msgid "This email confirmation link expired or is invalid. Please issue a new email confirmation request."
@@ -7562,7 +7548,7 @@ msgstr "Dosya Ekle"
msgid "Delete selected attachments"
msgstr ""
-#: templates/attachment_table.html:12 templates/js/translated/attachment.js:110
+#: templates/attachment_table.html:12 templates/js/translated/attachment.js:112
msgid "Delete Attachments"
msgstr ""
@@ -7596,15 +7582,15 @@ msgid "The following parts are low on required stock"
msgstr ""
#: templates/email/build_order_required_stock.html:18
-#: templates/js/translated/bom.js:1425
+#: templates/js/translated/bom.js:1419
msgid "Required Quantity"
msgstr ""
#: templates/email/build_order_required_stock.html:19
#: templates/email/low_stock_notification.html:18
-#: templates/js/translated/bom.js:890 templates/js/translated/build.js:1787
-#: templates/js/translated/build.js:2650 templates/js/translated/part.js:527
-#: templates/js/translated/part.js:530
+#: templates/js/translated/bom.js:884 templates/js/translated/build.js:1787
+#: templates/js/translated/build.js:2650 templates/js/translated/part.js:571
+#: templates/js/translated/part.js:574
#: templates/js/translated/table_filters.js:178
msgid "Available"
msgstr "Mevcut"
@@ -7622,6 +7608,13 @@ msgstr ""
msgid "Minimum Quantity"
msgstr ""
+#: templates/email/new_order_assigned.html:9
+#: templates/email/overdue_build_order.html:9
+#: templates/email/overdue_purchase_order.html:9
+#: templates/email/overdue_sales_order.html:9
+msgid "Click on the following link to view this order"
+msgstr ""
+
#: templates/image_download.html:8
msgid "Specify URL for downloading image"
msgstr ""
@@ -7638,91 +7631,91 @@ msgstr ""
msgid "Remote image must not exceed maximum allowable file size"
msgstr ""
-#: templates/js/translated/api.js:235 templates/js/translated/modals.js:1067
+#: templates/js/translated/api.js:195 templates/js/translated/modals.js:1073
msgid "No Response"
msgstr "Cevap Yok"
-#: templates/js/translated/api.js:236 templates/js/translated/modals.js:1068
+#: templates/js/translated/api.js:196 templates/js/translated/modals.js:1074
msgid "No response from the InvenTree server"
msgstr ""
-#: templates/js/translated/api.js:242
+#: templates/js/translated/api.js:202
msgid "Error 400: Bad request"
msgstr ""
-#: templates/js/translated/api.js:243
+#: templates/js/translated/api.js:203
msgid "API request returned error code 400"
msgstr ""
-#: templates/js/translated/api.js:247 templates/js/translated/modals.js:1077
+#: templates/js/translated/api.js:207 templates/js/translated/modals.js:1083
msgid "Error 401: Not Authenticated"
msgstr ""
-#: templates/js/translated/api.js:248 templates/js/translated/modals.js:1078
+#: templates/js/translated/api.js:208 templates/js/translated/modals.js:1084
msgid "Authentication credentials not supplied"
msgstr ""
-#: templates/js/translated/api.js:252 templates/js/translated/modals.js:1082
+#: templates/js/translated/api.js:212 templates/js/translated/modals.js:1088
msgid "Error 403: Permission Denied"
msgstr ""
-#: templates/js/translated/api.js:253 templates/js/translated/modals.js:1083
+#: templates/js/translated/api.js:213 templates/js/translated/modals.js:1089
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:257 templates/js/translated/modals.js:1087
+#: templates/js/translated/api.js:217 templates/js/translated/modals.js:1093
msgid "Error 404: Resource Not Found"
msgstr ""
-#: templates/js/translated/api.js:258 templates/js/translated/modals.js:1088
+#: templates/js/translated/api.js:218 templates/js/translated/modals.js:1094
msgid "The requested resource could not be located on the server"
msgstr ""
-#: templates/js/translated/api.js:262
+#: templates/js/translated/api.js:222
msgid "Error 405: Method Not Allowed"
msgstr ""
-#: templates/js/translated/api.js:263
+#: templates/js/translated/api.js:223
msgid "HTTP method not allowed at URL"
msgstr ""
-#: templates/js/translated/api.js:267 templates/js/translated/modals.js:1092
+#: templates/js/translated/api.js:227 templates/js/translated/modals.js:1098
msgid "Error 408: Timeout"
msgstr ""
-#: templates/js/translated/api.js:268 templates/js/translated/modals.js:1093
+#: templates/js/translated/api.js:228 templates/js/translated/modals.js:1099
msgid "Connection timeout while requesting data from server"
msgstr ""
-#: templates/js/translated/api.js:271
+#: templates/js/translated/api.js:231
msgid "Unhandled Error Code"
msgstr ""
-#: templates/js/translated/api.js:272
+#: templates/js/translated/api.js:232
msgid "Error code"
msgstr ""
-#: templates/js/translated/attachment.js:96
+#: templates/js/translated/attachment.js:98
msgid "All selected attachments will be deleted"
msgstr ""
-#: templates/js/translated/attachment.js:156
+#: templates/js/translated/attachment.js:152
msgid "No attachments found"
msgstr ""
-#: templates/js/translated/attachment.js:180
+#: templates/js/translated/attachment.js:176
msgid "Edit Attachment"
msgstr "Ek Düzenle"
-#: templates/js/translated/attachment.js:246
+#: templates/js/translated/attachment.js:242
msgid "Upload Date"
msgstr ""
-#: templates/js/translated/attachment.js:262
+#: templates/js/translated/attachment.js:264
msgid "Edit attachment"
msgstr ""
-#: templates/js/translated/attachment.js:269
+#: templates/js/translated/attachment.js:271
msgid "Delete attachment"
msgstr ""
@@ -7755,7 +7748,7 @@ msgid "Unknown response from server"
msgstr ""
#: templates/js/translated/barcode.js:182
-#: templates/js/translated/modals.js:1057
+#: templates/js/translated/modals.js:1063
msgid "Invalid server response"
msgstr ""
@@ -7783,7 +7776,7 @@ msgstr ""
msgid "Unlink"
msgstr ""
-#: templates/js/translated/barcode.js:456 templates/js/translated/stock.js:999
+#: templates/js/translated/barcode.js:456 templates/js/translated/stock.js:998
msgid "Remove stock item"
msgstr ""
@@ -7918,89 +7911,89 @@ msgstr ""
msgid "Edit BOM Item Substitutes"
msgstr ""
-#: templates/js/translated/bom.js:682
+#: templates/js/translated/bom.js:684
msgid "All selected BOM items will be deleted"
msgstr ""
-#: templates/js/translated/bom.js:697
+#: templates/js/translated/bom.js:699
msgid "Delete selected BOM items?"
msgstr ""
-#: templates/js/translated/bom.js:824
+#: templates/js/translated/bom.js:818
msgid "Load BOM for subassembly"
msgstr ""
-#: templates/js/translated/bom.js:834
+#: templates/js/translated/bom.js:828
msgid "Substitutes Available"
msgstr ""
-#: templates/js/translated/bom.js:838 templates/js/translated/build.js:1769
+#: templates/js/translated/bom.js:832 templates/js/translated/build.js:1769
msgid "Variant stock allowed"
msgstr ""
-#: templates/js/translated/bom.js:906 templates/js/translated/build.js:1814
+#: templates/js/translated/bom.js:900 templates/js/translated/build.js:1814
#: templates/js/translated/order.js:3562
msgid "No Stock Available"
msgstr ""
-#: templates/js/translated/bom.js:910 templates/js/translated/build.js:1818
+#: templates/js/translated/bom.js:904 templates/js/translated/build.js:1818
msgid "Includes variant and substitute stock"
msgstr ""
-#: templates/js/translated/bom.js:912 templates/js/translated/build.js:1820
-#: templates/js/translated/part.js:690
+#: templates/js/translated/bom.js:906 templates/js/translated/build.js:1820
+#: templates/js/translated/part.js:734
msgid "Includes variant stock"
msgstr ""
-#: templates/js/translated/bom.js:914 templates/js/translated/build.js:1822
+#: templates/js/translated/bom.js:908 templates/js/translated/build.js:1822
msgid "Includes substitute stock"
msgstr ""
-#: templates/js/translated/bom.js:928
+#: templates/js/translated/bom.js:922
msgid "Substitutes"
msgstr ""
-#: templates/js/translated/bom.js:943
+#: templates/js/translated/bom.js:937
msgid "Purchase Price Range"
msgstr ""
-#: templates/js/translated/bom.js:950
+#: templates/js/translated/bom.js:944
msgid "Purchase Price Average"
msgstr ""
-#: templates/js/translated/bom.js:999 templates/js/translated/bom.js:1090
+#: templates/js/translated/bom.js:993 templates/js/translated/bom.js:1084
msgid "View BOM"
msgstr ""
-#: templates/js/translated/bom.js:1061
+#: templates/js/translated/bom.js:1055
msgid "Validate BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:1063
+#: templates/js/translated/bom.js:1057
msgid "This line has been validated"
msgstr ""
-#: templates/js/translated/bom.js:1065
+#: templates/js/translated/bom.js:1059
msgid "Edit substitute parts"
msgstr ""
-#: templates/js/translated/bom.js:1067 templates/js/translated/bom.js:1228
+#: templates/js/translated/bom.js:1061 templates/js/translated/bom.js:1222
msgid "Edit BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:1069
+#: templates/js/translated/bom.js:1063
msgid "Delete BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:1164 templates/js/translated/build.js:1615
+#: templates/js/translated/bom.js:1158 templates/js/translated/build.js:1615
msgid "No BOM items found"
msgstr ""
-#: templates/js/translated/bom.js:1408 templates/js/translated/build.js:1753
+#: templates/js/translated/bom.js:1402 templates/js/translated/build.js:1753
msgid "Required Part"
msgstr "Gerekli Parça"
-#: templates/js/translated/bom.js:1430
+#: templates/js/translated/bom.js:1424
msgid "Inherited from parent BOM"
msgstr ""
@@ -8040,13 +8033,13 @@ msgstr "Yapım işi emri eksik"
msgid "Complete Build Order"
msgstr "Tamamlanmış Yapım İşi Emri"
-#: templates/js/translated/build.js:259 templates/js/translated/stock.js:91
-#: templates/js/translated/stock.js:181
+#: templates/js/translated/build.js:259 templates/js/translated/stock.js:90
+#: templates/js/translated/stock.js:180
msgid "Next available serial number"
msgstr ""
-#: templates/js/translated/build.js:261 templates/js/translated/stock.js:93
-#: templates/js/translated/stock.js:183
+#: templates/js/translated/build.js:261 templates/js/translated/stock.js:92
+#: templates/js/translated/stock.js:182
msgid "Latest serial number"
msgstr ""
@@ -8259,9 +8252,9 @@ msgstr ""
msgid "No builds matching query"
msgstr ""
-#: templates/js/translated/build.js:2448 templates/js/translated/part.js:1314
-#: templates/js/translated/part.js:1729 templates/js/translated/stock.js:1619
-#: templates/js/translated/stock.js:2277
+#: templates/js/translated/build.js:2448 templates/js/translated/part.js:1358
+#: templates/js/translated/part.js:1825 templates/js/translated/stock.js:1629
+#: templates/js/translated/stock.js:2287
msgid "Select"
msgstr ""
@@ -8273,7 +8266,7 @@ msgstr ""
msgid "Progress"
msgstr ""
-#: templates/js/translated/build.js:2532 templates/js/translated/stock.js:2519
+#: templates/js/translated/build.js:2532 templates/js/translated/stock.js:2529
msgid "No user information"
msgstr ""
@@ -8285,107 +8278,107 @@ msgstr ""
msgid "No parts allocated for"
msgstr ""
-#: templates/js/translated/company.js:66
+#: templates/js/translated/company.js:65
msgid "Add Manufacturer"
msgstr ""
-#: templates/js/translated/company.js:79 templates/js/translated/company.js:169
+#: templates/js/translated/company.js:78 templates/js/translated/company.js:168
msgid "Add Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:100
+#: templates/js/translated/company.js:99
msgid "Edit Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:157 templates/js/translated/order.js:506
+#: templates/js/translated/company.js:156 templates/js/translated/order.js:506
msgid "Add Supplier"
msgstr ""
-#: templates/js/translated/company.js:185
+#: templates/js/translated/company.js:184
msgid "Add Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:200
+#: templates/js/translated/company.js:199
msgid "Edit Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:248
+#: templates/js/translated/company.js:249
msgid "All selected supplier parts will be deleted"
msgstr ""
-#: templates/js/translated/company.js:263
+#: templates/js/translated/company.js:264
msgid "Delete Supplier Parts"
msgstr ""
-#: templates/js/translated/company.js:342
+#: templates/js/translated/company.js:336
msgid "Add new Company"
msgstr ""
-#: templates/js/translated/company.js:419
+#: templates/js/translated/company.js:413
msgid "Parts Supplied"
msgstr ""
-#: templates/js/translated/company.js:428
+#: templates/js/translated/company.js:422
msgid "Parts Manufactured"
msgstr ""
-#: templates/js/translated/company.js:443
+#: templates/js/translated/company.js:437
msgid "No company information found"
msgstr ""
-#: templates/js/translated/company.js:482
+#: templates/js/translated/company.js:478
msgid "All selected manufacturer parts will be deleted"
msgstr ""
-#: templates/js/translated/company.js:496
+#: templates/js/translated/company.js:492
msgid "Delete Manufacturer Parts"
msgstr ""
-#: templates/js/translated/company.js:535
+#: templates/js/translated/company.js:526
msgid "All selected parameters will be deleted"
msgstr ""
-#: templates/js/translated/company.js:548
+#: templates/js/translated/company.js:539
msgid "Delete Parameters"
msgstr ""
-#: templates/js/translated/company.js:595
+#: templates/js/translated/company.js:580
msgid "No manufacturer parts found"
msgstr ""
-#: templates/js/translated/company.js:615
-#: templates/js/translated/company.js:874 templates/js/translated/part.js:565
-#: templates/js/translated/part.js:650
+#: templates/js/translated/company.js:600
+#: templates/js/translated/company.js:859 templates/js/translated/part.js:609
+#: templates/js/translated/part.js:694
msgid "Template part"
msgstr "Şablon Parça"
-#: templates/js/translated/company.js:619
-#: templates/js/translated/company.js:878 templates/js/translated/part.js:569
-#: templates/js/translated/part.js:654
+#: templates/js/translated/company.js:604
+#: templates/js/translated/company.js:863 templates/js/translated/part.js:613
+#: templates/js/translated/part.js:698
msgid "Assembled part"
msgstr ""
-#: templates/js/translated/company.js:747 templates/js/translated/part.js:757
+#: templates/js/translated/company.js:732 templates/js/translated/part.js:801
msgid "No parameters found"
msgstr ""
-#: templates/js/translated/company.js:784 templates/js/translated/part.js:799
+#: templates/js/translated/company.js:769 templates/js/translated/part.js:843
msgid "Edit parameter"
msgstr ""
-#: templates/js/translated/company.js:785 templates/js/translated/part.js:800
+#: templates/js/translated/company.js:770 templates/js/translated/part.js:844
msgid "Delete parameter"
msgstr ""
-#: templates/js/translated/company.js:804 templates/js/translated/part.js:817
+#: templates/js/translated/company.js:789 templates/js/translated/part.js:861
msgid "Edit Parameter"
msgstr ""
-#: templates/js/translated/company.js:815 templates/js/translated/part.js:829
+#: templates/js/translated/company.js:800 templates/js/translated/part.js:873
msgid "Delete Parameter"
msgstr ""
-#: templates/js/translated/company.js:854
+#: templates/js/translated/company.js:839
msgid "No supplier parts found"
msgstr ""
@@ -8448,36 +8441,36 @@ msgstr ""
msgid "Keep this form open"
msgstr ""
-#: templates/js/translated/forms.js:756
+#: templates/js/translated/forms.js:757
msgid "Enter a valid number"
msgstr ""
-#: templates/js/translated/forms.js:1248 templates/modals.html:19
+#: templates/js/translated/forms.js:1249 templates/modals.html:19
#: templates/modals.html:43
msgid "Form errors exist"
msgstr ""
-#: templates/js/translated/forms.js:1681
+#: templates/js/translated/forms.js:1682
msgid "No results found"
msgstr ""
-#: templates/js/translated/forms.js:1896 templates/search.html:29
+#: templates/js/translated/forms.js:1897 templates/search.html:29
msgid "Searching"
msgstr ""
-#: templates/js/translated/forms.js:2149
+#: templates/js/translated/forms.js:2150
msgid "Clear input"
msgstr ""
-#: templates/js/translated/forms.js:2615
+#: templates/js/translated/forms.js:2616
msgid "File Column"
msgstr ""
-#: templates/js/translated/forms.js:2615
+#: templates/js/translated/forms.js:2616
msgid "Field Name"
msgstr ""
-#: templates/js/translated/forms.js:2627
+#: templates/js/translated/forms.js:2628
msgid "Select Columns"
msgstr ""
@@ -8498,7 +8491,7 @@ msgid "Labels sent to printer"
msgstr ""
#: templates/js/translated/label.js:60 templates/js/translated/report.js:118
-#: templates/js/translated/stock.js:1023
+#: templates/js/translated/stock.js:1022
msgid "Select Stock Items"
msgstr ""
@@ -8552,12 +8545,12 @@ msgid "Select Label Template"
msgstr "Etiket Şablonu Seç"
#: templates/js/translated/modals.js:82 templates/js/translated/modals.js:142
-#: templates/js/translated/modals.js:621
+#: templates/js/translated/modals.js:627
msgid "Cancel"
msgstr ""
#: templates/js/translated/modals.js:83 templates/js/translated/modals.js:141
-#: templates/js/translated/modals.js:688 templates/js/translated/modals.js:996
+#: templates/js/translated/modals.js:694 templates/js/translated/modals.js:1002
#: templates/modals.html:28 templates/modals.html:51
msgid "Submit"
msgstr ""
@@ -8566,47 +8559,47 @@ msgstr ""
msgid "Form Title"
msgstr ""
-#: templates/js/translated/modals.js:403
+#: templates/js/translated/modals.js:421
msgid "Waiting for server..."
msgstr ""
-#: templates/js/translated/modals.js:562
+#: templates/js/translated/modals.js:568
msgid "Show Error Information"
msgstr ""
-#: templates/js/translated/modals.js:620
+#: templates/js/translated/modals.js:626
msgid "Accept"
msgstr ""
-#: templates/js/translated/modals.js:677
+#: templates/js/translated/modals.js:683
msgid "Loading Data"
msgstr ""
-#: templates/js/translated/modals.js:948
+#: templates/js/translated/modals.js:954
msgid "Invalid response from server"
msgstr ""
-#: templates/js/translated/modals.js:948
+#: templates/js/translated/modals.js:954
msgid "Form data missing from server response"
msgstr ""
-#: templates/js/translated/modals.js:960
+#: templates/js/translated/modals.js:966
msgid "Error posting form data"
msgstr ""
-#: templates/js/translated/modals.js:1057
+#: templates/js/translated/modals.js:1063
msgid "JSON response missing form data"
msgstr ""
-#: templates/js/translated/modals.js:1072
+#: templates/js/translated/modals.js:1078
msgid "Error 400: Bad Request"
msgstr ""
-#: templates/js/translated/modals.js:1073
+#: templates/js/translated/modals.js:1079
msgid "Server returned error code 400"
msgstr ""
-#: templates/js/translated/modals.js:1096
+#: templates/js/translated/modals.js:1102
msgid "Error requesting form data"
msgstr ""
@@ -8656,11 +8649,11 @@ msgstr ""
msgid "Mark as read"
msgstr ""
-#: templates/js/translated/notification.js:259
+#: templates/js/translated/notification.js:260
msgid "No unread notifications"
msgstr ""
-#: templates/js/translated/notification.js:300 templates/notifications.html:10
+#: templates/js/translated/notification.js:302 templates/notifications.html:10
msgid "Notifications will load here"
msgstr ""
@@ -8804,7 +8797,7 @@ msgstr ""
msgid "Quantity to receive"
msgstr ""
-#: templates/js/translated/order.js:1225 templates/js/translated/stock.js:2080
+#: templates/js/translated/order.js:1225 templates/js/translated/stock.js:2090
msgid "Stock Status"
msgstr ""
@@ -8828,7 +8821,7 @@ msgstr ""
msgid "Receive Purchase Order Items"
msgstr ""
-#: templates/js/translated/order.js:1602 templates/js/translated/part.js:870
+#: templates/js/translated/order.js:1602 templates/js/translated/part.js:914
msgid "No purchase orders found"
msgstr ""
@@ -8863,7 +8856,7 @@ msgstr ""
#: templates/js/translated/order.js:1937 templates/js/translated/order.js:2139
#: templates/js/translated/order.js:3467 templates/js/translated/order.js:3978
-#: templates/js/translated/part.js:1948 templates/js/translated/part.js:2301
+#: templates/js/translated/part.js:2044 templates/js/translated/part.js:2397
msgid "Unit Price"
msgstr ""
@@ -8873,11 +8866,11 @@ msgid "Total Price"
msgstr ""
#: templates/js/translated/order.js:1993 templates/js/translated/order.js:3525
-#: templates/js/translated/part.js:979
+#: templates/js/translated/part.js:1023
msgid "This line item is overdue"
msgstr ""
-#: templates/js/translated/order.js:2052 templates/js/translated/part.js:1025
+#: templates/js/translated/order.js:2052 templates/js/translated/part.js:1069
msgid "Receive line item"
msgstr ""
@@ -8998,7 +8991,7 @@ msgid "Delete Stock Allocation"
msgstr ""
#: templates/js/translated/order.js:3243 templates/js/translated/order.js:3332
-#: templates/js/translated/stock.js:1535
+#: templates/js/translated/stock.js:1545
msgid "Shipped to customer"
msgstr ""
@@ -9138,165 +9131,209 @@ msgstr ""
msgid "Create Part Variant"
msgstr ""
+#: templates/js/translated/part.js:405
+msgid "Active Part"
+msgstr ""
+
+#: templates/js/translated/part.js:406
+msgid "Part cannot be deleted as it is currently active"
+msgstr ""
+
+#: templates/js/translated/part.js:420
+msgid "Deleting this part cannot be reversed"
+msgstr ""
+
+#: templates/js/translated/part.js:422
+msgid "Any stock items for this part will be deleted"
+msgstr ""
+
#: templates/js/translated/part.js:423
+msgid "This part will be removed from any Bills of Material"
+msgstr ""
+
+#: templates/js/translated/part.js:424
+msgid "All manufacturer and supplier information for this part will be deleted"
+msgstr ""
+
+#: templates/js/translated/part.js:431
+msgid "Delete Part"
+msgstr ""
+
+#: templates/js/translated/part.js:467
msgid "You are subscribed to notifications for this item"
msgstr ""
-#: templates/js/translated/part.js:425
+#: templates/js/translated/part.js:469
msgid "You have subscribed to notifications for this item"
msgstr ""
-#: templates/js/translated/part.js:430
+#: templates/js/translated/part.js:474
msgid "Subscribe to notifications for this item"
msgstr ""
-#: templates/js/translated/part.js:432
+#: templates/js/translated/part.js:476
msgid "You have unsubscribed to notifications for this item"
msgstr ""
-#: templates/js/translated/part.js:449
+#: templates/js/translated/part.js:493
msgid "Validating the BOM will mark each line item as valid"
msgstr ""
-#: templates/js/translated/part.js:459
+#: templates/js/translated/part.js:503
msgid "Validate Bill of Materials"
msgstr ""
-#: templates/js/translated/part.js:462
+#: templates/js/translated/part.js:506
msgid "Validated Bill of Materials"
msgstr ""
-#: templates/js/translated/part.js:487
+#: templates/js/translated/part.js:531
msgid "Copy Bill of Materials"
msgstr ""
-#: templates/js/translated/part.js:513 templates/js/translated/part.js:1397
+#: templates/js/translated/part.js:557 templates/js/translated/part.js:1441
#: templates/js/translated/table_filters.js:452
msgid "Low stock"
msgstr ""
-#: templates/js/translated/part.js:523 templates/js/translated/part.js:1409
+#: templates/js/translated/part.js:567 templates/js/translated/part.js:1453
msgid "No stock available"
msgstr ""
-#: templates/js/translated/part.js:557 templates/js/translated/part.js:642
+#: templates/js/translated/part.js:601 templates/js/translated/part.js:686
msgid "Trackable part"
msgstr ""
-#: templates/js/translated/part.js:561 templates/js/translated/part.js:646
+#: templates/js/translated/part.js:605 templates/js/translated/part.js:690
msgid "Virtual part"
msgstr ""
-#: templates/js/translated/part.js:573
+#: templates/js/translated/part.js:617
msgid "Subscribed part"
msgstr ""
-#: templates/js/translated/part.js:577
+#: templates/js/translated/part.js:621
msgid "Salable part"
msgstr ""
-#: templates/js/translated/part.js:705
+#: templates/js/translated/part.js:749
msgid "No variants found"
msgstr "Çeşit bulunamadı"
-#: templates/js/translated/part.js:1095
+#: templates/js/translated/part.js:1139
msgid "Delete part relationship"
msgstr ""
-#: templates/js/translated/part.js:1119
+#: templates/js/translated/part.js:1163
msgid "Delete Part Relationship"
msgstr ""
-#: templates/js/translated/part.js:1184 templates/js/translated/part.js:1480
+#: templates/js/translated/part.js:1228 templates/js/translated/part.js:1524
msgid "No parts found"
msgstr ""
-#: templates/js/translated/part.js:1223
+#: templates/js/translated/part.js:1267
msgid "Not available"
msgstr ""
-#: templates/js/translated/part.js:1374
+#: templates/js/translated/part.js:1418
msgid "No category"
msgstr "Katagori Yok"
-#: templates/js/translated/part.js:1504 templates/js/translated/part.js:1664
-#: templates/js/translated/stock.js:2238
+#: templates/js/translated/part.js:1548 templates/js/translated/part.js:1760
+#: templates/js/translated/stock.js:2248
msgid "Display as list"
msgstr ""
-#: templates/js/translated/part.js:1520
+#: templates/js/translated/part.js:1564
msgid "Display as grid"
msgstr ""
-#: templates/js/translated/part.js:1683 templates/js/translated/stock.js:2257
+#: templates/js/translated/part.js:1630
+msgid "Set the part category for the selected parts"
+msgstr ""
+
+#: templates/js/translated/part.js:1635
+msgid "Set Part Category"
+msgstr ""
+
+#: templates/js/translated/part.js:1640
+msgid "Select Part Category"
+msgstr ""
+
+#: templates/js/translated/part.js:1653
+msgid "Category is required"
+msgstr ""
+
+#: templates/js/translated/part.js:1779 templates/js/translated/stock.js:2267
msgid "Display as tree"
msgstr ""
-#: templates/js/translated/part.js:1747
+#: templates/js/translated/part.js:1843
msgid "Subscribed category"
msgstr ""
-#: templates/js/translated/part.js:1761 templates/js/translated/stock.js:2301
+#: templates/js/translated/part.js:1857 templates/js/translated/stock.js:2311
msgid "Path"
msgstr ""
-#: templates/js/translated/part.js:1805
+#: templates/js/translated/part.js:1901
msgid "No test templates matching query"
msgstr "Sorgu ile eşleşen test şablonu bulunamadı"
-#: templates/js/translated/part.js:1856 templates/js/translated/stock.js:1233
+#: templates/js/translated/part.js:1952 templates/js/translated/stock.js:1243
msgid "Edit test result"
msgstr ""
-#: templates/js/translated/part.js:1857 templates/js/translated/stock.js:1234
-#: templates/js/translated/stock.js:1493
+#: templates/js/translated/part.js:1953 templates/js/translated/stock.js:1244
+#: templates/js/translated/stock.js:1503
msgid "Delete test result"
msgstr ""
-#: templates/js/translated/part.js:1863
+#: templates/js/translated/part.js:1959
msgid "This test is defined for a parent part"
msgstr ""
-#: templates/js/translated/part.js:1885
+#: templates/js/translated/part.js:1981
msgid "Edit Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:1899
+#: templates/js/translated/part.js:1995
msgid "Delete Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:1924
+#: templates/js/translated/part.js:2020
#, python-brace-format
msgid "No ${human_name} information found"
msgstr ""
-#: templates/js/translated/part.js:1981
+#: templates/js/translated/part.js:2077
#, python-brace-format
msgid "Edit ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:1982
+#: templates/js/translated/part.js:2078
#, python-brace-format
msgid "Delete ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:2096
+#: templates/js/translated/part.js:2192
msgid "Current Stock"
msgstr ""
-#: templates/js/translated/part.js:2129
+#: templates/js/translated/part.js:2225
msgid "No scheduling information available for this part"
msgstr ""
-#: templates/js/translated/part.js:2155
+#: templates/js/translated/part.js:2251
msgid "Scheduled Stock Quantities"
msgstr ""
-#: templates/js/translated/part.js:2225
+#: templates/js/translated/part.js:2321
msgid "Single Price"
msgstr ""
-#: templates/js/translated/part.js:2244
+#: templates/js/translated/part.js:2340
msgid "Single Price Difference"
msgstr ""
@@ -9378,360 +9415,360 @@ msgstr ""
msgid "Remove results"
msgstr ""
-#: templates/js/translated/stock.js:73
+#: templates/js/translated/stock.js:72
msgid "Serialize Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:101
+#: templates/js/translated/stock.js:100
msgid "Confirm Stock Serialization"
msgstr ""
-#: templates/js/translated/stock.js:110
+#: templates/js/translated/stock.js:109
msgid "Parent stock location"
msgstr ""
-#: templates/js/translated/stock.js:139
+#: templates/js/translated/stock.js:138
msgid "Edit Stock Location"
msgstr "Stok konumunu düzenle"
-#: templates/js/translated/stock.js:154
+#: templates/js/translated/stock.js:153
msgid "New Stock Location"
msgstr ""
-#: templates/js/translated/stock.js:194
+#: templates/js/translated/stock.js:193
msgid "This part cannot be serialized"
msgstr ""
-#: templates/js/translated/stock.js:233
+#: templates/js/translated/stock.js:232
msgid "Enter initial quantity for this stock item"
msgstr ""
-#: templates/js/translated/stock.js:239
+#: templates/js/translated/stock.js:238
msgid "Enter serial numbers for new stock (or leave blank)"
msgstr ""
-#: templates/js/translated/stock.js:304
+#: templates/js/translated/stock.js:303
msgid "Stock item duplicated"
msgstr ""
-#: templates/js/translated/stock.js:324
+#: templates/js/translated/stock.js:323
msgid "Duplicate Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:344
+#: templates/js/translated/stock.js:343
msgid "Edit Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:394
+#: templates/js/translated/stock.js:393
msgid "Created new stock item"
msgstr ""
-#: templates/js/translated/stock.js:407
+#: templates/js/translated/stock.js:406
msgid "Created multiple stock items"
msgstr ""
-#: templates/js/translated/stock.js:432
+#: templates/js/translated/stock.js:431
msgid "Find Serial Number"
msgstr ""
-#: templates/js/translated/stock.js:436 templates/js/translated/stock.js:437
+#: templates/js/translated/stock.js:435 templates/js/translated/stock.js:436
msgid "Enter serial number"
msgstr ""
-#: templates/js/translated/stock.js:453
+#: templates/js/translated/stock.js:452
msgid "Enter a serial number"
msgstr ""
-#: templates/js/translated/stock.js:473
+#: templates/js/translated/stock.js:472
msgid "No matching serial number"
msgstr ""
-#: templates/js/translated/stock.js:482
+#: templates/js/translated/stock.js:481
msgid "More than one matching result found"
msgstr ""
-#: templates/js/translated/stock.js:605
+#: templates/js/translated/stock.js:604
msgid "Confirm stock assignment"
msgstr ""
-#: templates/js/translated/stock.js:606
+#: templates/js/translated/stock.js:605
msgid "Assign Stock to Customer"
msgstr ""
-#: templates/js/translated/stock.js:683
+#: templates/js/translated/stock.js:682
msgid "Warning: Merge operation cannot be reversed"
msgstr ""
-#: templates/js/translated/stock.js:684
+#: templates/js/translated/stock.js:683
msgid "Some information will be lost when merging stock items"
msgstr ""
-#: templates/js/translated/stock.js:686
+#: templates/js/translated/stock.js:685
msgid "Stock transaction history will be deleted for merged items"
msgstr ""
-#: templates/js/translated/stock.js:687
+#: templates/js/translated/stock.js:686
msgid "Supplier part information will be deleted for merged items"
msgstr ""
-#: templates/js/translated/stock.js:773
+#: templates/js/translated/stock.js:772
msgid "Confirm stock item merge"
msgstr ""
-#: templates/js/translated/stock.js:774
+#: templates/js/translated/stock.js:773
msgid "Merge Stock Items"
msgstr ""
-#: templates/js/translated/stock.js:869
+#: templates/js/translated/stock.js:868
msgid "Transfer Stock"
msgstr ""
-#: templates/js/translated/stock.js:870
+#: templates/js/translated/stock.js:869
msgid "Move"
msgstr ""
-#: templates/js/translated/stock.js:876
+#: templates/js/translated/stock.js:875
msgid "Count Stock"
msgstr ""
-#: templates/js/translated/stock.js:877
+#: templates/js/translated/stock.js:876
msgid "Count"
msgstr ""
-#: templates/js/translated/stock.js:881
+#: templates/js/translated/stock.js:880
msgid "Remove Stock"
msgstr ""
-#: templates/js/translated/stock.js:882
+#: templates/js/translated/stock.js:881
msgid "Take"
msgstr ""
-#: templates/js/translated/stock.js:886
+#: templates/js/translated/stock.js:885
msgid "Add Stock"
msgstr ""
-#: templates/js/translated/stock.js:887 users/models.py:215
+#: templates/js/translated/stock.js:886 users/models.py:215
msgid "Add"
msgstr ""
-#: templates/js/translated/stock.js:891
+#: templates/js/translated/stock.js:890
msgid "Delete Stock"
msgstr ""
-#: templates/js/translated/stock.js:984
+#: templates/js/translated/stock.js:983
msgid "Quantity cannot be adjusted for serialized stock"
msgstr ""
-#: templates/js/translated/stock.js:984
+#: templates/js/translated/stock.js:983
msgid "Specify stock quantity"
msgstr ""
-#: templates/js/translated/stock.js:1024
+#: templates/js/translated/stock.js:1023
msgid "You must select at least one available stock item"
msgstr ""
-#: templates/js/translated/stock.js:1047
+#: templates/js/translated/stock.js:1046
msgid "Confirm stock adjustment"
msgstr "Stok ayarlamasını onayla"
-#: templates/js/translated/stock.js:1172
+#: templates/js/translated/stock.js:1182
msgid "PASS"
msgstr ""
-#: templates/js/translated/stock.js:1174
+#: templates/js/translated/stock.js:1184
msgid "FAIL"
msgstr ""
-#: templates/js/translated/stock.js:1179
+#: templates/js/translated/stock.js:1189
msgid "NO RESULT"
msgstr ""
-#: templates/js/translated/stock.js:1226
+#: templates/js/translated/stock.js:1236
msgid "Pass test"
msgstr ""
-#: templates/js/translated/stock.js:1229
+#: templates/js/translated/stock.js:1239
msgid "Add test result"
msgstr ""
-#: templates/js/translated/stock.js:1255
+#: templates/js/translated/stock.js:1265
msgid "No test results found"
msgstr ""
-#: templates/js/translated/stock.js:1311
+#: templates/js/translated/stock.js:1321
msgid "Test Date"
msgstr ""
-#: templates/js/translated/stock.js:1476
+#: templates/js/translated/stock.js:1486
msgid "Edit Test Result"
msgstr ""
-#: templates/js/translated/stock.js:1498
+#: templates/js/translated/stock.js:1508
msgid "Delete Test Result"
msgstr ""
-#: templates/js/translated/stock.js:1527
+#: templates/js/translated/stock.js:1537
msgid "In production"
msgstr ""
-#: templates/js/translated/stock.js:1531
+#: templates/js/translated/stock.js:1541
msgid "Installed in Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:1539
+#: templates/js/translated/stock.js:1549
msgid "Assigned to Sales Order"
msgstr ""
-#: templates/js/translated/stock.js:1545
+#: templates/js/translated/stock.js:1555
msgid "No stock location set"
msgstr "Stok konumu ayarlanmadı"
-#: templates/js/translated/stock.js:1712
+#: templates/js/translated/stock.js:1722
msgid "Stock item is in production"
msgstr ""
-#: templates/js/translated/stock.js:1717
+#: templates/js/translated/stock.js:1727
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:1720
+#: templates/js/translated/stock.js:1730
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:1723
+#: templates/js/translated/stock.js:1733
msgid "Serialized stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:1725
+#: templates/js/translated/stock.js:1735
msgid "Stock item has been fully allocated"
msgstr ""
-#: templates/js/translated/stock.js:1727
+#: templates/js/translated/stock.js:1737
msgid "Stock item has been partially allocated"
msgstr ""
-#: templates/js/translated/stock.js:1730
+#: templates/js/translated/stock.js:1740
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:1734
+#: templates/js/translated/stock.js:1744
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:1736
+#: templates/js/translated/stock.js:1746
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:1743
+#: templates/js/translated/stock.js:1753
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:1745
+#: templates/js/translated/stock.js:1755
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:1747
+#: templates/js/translated/stock.js:1757
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:1751
+#: templates/js/translated/stock.js:1761
#: templates/js/translated/table_filters.js:188
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:1802
+#: templates/js/translated/stock.js:1812
msgid "Stocktake"
msgstr ""
-#: templates/js/translated/stock.js:1884
+#: templates/js/translated/stock.js:1894
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:1922
+#: templates/js/translated/stock.js:1932
msgid "No stock items matching query"
msgstr ""
-#: templates/js/translated/stock.js:2095
+#: templates/js/translated/stock.js:2105
msgid "Set Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:2109
+#: templates/js/translated/stock.js:2119
msgid "Select Status Code"
msgstr ""
-#: templates/js/translated/stock.js:2110
+#: templates/js/translated/stock.js:2120
msgid "Status code must be selected"
msgstr ""
-#: templates/js/translated/stock.js:2365
+#: templates/js/translated/stock.js:2375
msgid "Details"
msgstr "Detaylar"
-#: templates/js/translated/stock.js:2381
+#: templates/js/translated/stock.js:2391
msgid "Part information unavailable"
msgstr ""
-#: templates/js/translated/stock.js:2403
+#: templates/js/translated/stock.js:2413
msgid "Location no longer exists"
msgstr "Konum artık yok"
-#: templates/js/translated/stock.js:2422
+#: templates/js/translated/stock.js:2432
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2441
+#: templates/js/translated/stock.js:2451
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2459
+#: templates/js/translated/stock.js:2469
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2482
+#: templates/js/translated/stock.js:2492
msgid "Added"
msgstr ""
-#: templates/js/translated/stock.js:2490
+#: templates/js/translated/stock.js:2500
msgid "Removed"
msgstr ""
-#: templates/js/translated/stock.js:2566
+#: templates/js/translated/stock.js:2576
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:2617 templates/js/translated/stock.js:2653
+#: templates/js/translated/stock.js:2627 templates/js/translated/stock.js:2663
msgid "Uninstall Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:2666
+#: templates/js/translated/stock.js:2676
msgid "Select stock item to uninstall"
msgstr ""
-#: templates/js/translated/stock.js:2687
+#: templates/js/translated/stock.js:2697
msgid "Install another stock item into this item"
msgstr ""
-#: templates/js/translated/stock.js:2688
+#: templates/js/translated/stock.js:2698
msgid "Stock items can only be installed if they meet the following criteria"
msgstr ""
-#: templates/js/translated/stock.js:2690
+#: templates/js/translated/stock.js:2700
msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:2691
+#: templates/js/translated/stock.js:2701
msgid "The Stock Item is currently available in stock"
msgstr ""
-#: templates/js/translated/stock.js:2692
+#: templates/js/translated/stock.js:2702
msgid "The Stock Item is not already installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:2693
+#: templates/js/translated/stock.js:2703
msgid "The Stock Item is tracked by either a batch code or serial number"
msgstr ""
-#: templates/js/translated/stock.js:2706
+#: templates/js/translated/stock.js:2716
msgid "Select part to install"
msgstr ""
diff --git a/InvenTree/locale/vi/LC_MESSAGES/django.po b/InvenTree/locale/vi/LC_MESSAGES/django.po
index ea80c61690..e1bab96356 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: 2022-06-05 14:26+0000\n"
-"PO-Revision-Date: 2022-06-05 14:34\n"
+"POT-Creation-Date: 2022-06-06 22:59+0000\n"
+"PO-Revision-Date: 2022-06-07 14:34\n"
"Last-Translator: \n"
"Language-Team: Vietnamese\n"
"Language: vi_VN\n"
@@ -17,7 +17,7 @@ msgstr ""
"X-Crowdin-File: /[inventree.InvenTree] l10/InvenTree/locale/en/LC_MESSAGES/django.po\n"
"X-Crowdin-File-ID: 154\n"
-#: InvenTree/api.py:46
+#: InvenTree/api.py:49
msgid "API endpoint not found"
msgstr ""
@@ -29,275 +29,273 @@ msgstr ""
msgid "Enter date"
msgstr ""
-#: InvenTree/forms.py:117 templates/account/email_confirm.html:20
-#: templates/js/translated/forms.js:630
-msgid "Confirm"
-msgstr ""
-
-#: InvenTree/forms.py:134
+#: InvenTree/forms.py:117
msgid "Confirm delete"
msgstr ""
-#: InvenTree/forms.py:135
+#: InvenTree/forms.py:118
msgid "Confirm item deletion"
msgstr ""
-#: InvenTree/forms.py:167
+#: InvenTree/forms.py:150
msgid "Enter password"
msgstr ""
-#: InvenTree/forms.py:168
+#: InvenTree/forms.py:151
msgid "Enter new password"
msgstr ""
-#: InvenTree/forms.py:175
+#: InvenTree/forms.py:158
msgid "Confirm password"
msgstr "Xác nhận mật khẩu"
-#: InvenTree/forms.py:176
+#: InvenTree/forms.py:159
msgid "Confirm new password"
msgstr "Xác nhận mật khẩu mới"
-#: InvenTree/forms.py:213
-msgid "Select Category"
-msgstr "Chọn danh mục"
-
-#: InvenTree/forms.py:234
+#: InvenTree/forms.py:184
msgid "Email (again)"
msgstr ""
-#: InvenTree/forms.py:238
+#: InvenTree/forms.py:188
msgid "Email address confirmation"
msgstr ""
-#: InvenTree/forms.py:259
+#: InvenTree/forms.py:209
msgid "You must type the same email each time."
msgstr ""
-#: InvenTree/helpers.py:402
+#: InvenTree/helpers.py:404
#, python-brace-format
msgid "Duplicate serial: {sn}"
msgstr ""
-#: InvenTree/helpers.py:409 order/models.py:365 order/models.py:517
+#: InvenTree/helpers.py:411 order/models.py:370 order/models.py:522
msgid "Invalid quantity provided"
msgstr ""
-#: InvenTree/helpers.py:412
+#: InvenTree/helpers.py:414
msgid "Empty serial number string"
msgstr ""
-#: InvenTree/helpers.py:444
+#: InvenTree/helpers.py:446
#, python-brace-format
msgid "Invalid group range: {g}"
msgstr ""
-#: InvenTree/helpers.py:447
+#: InvenTree/helpers.py:449
#, python-brace-format
msgid "Invalid group: {g}"
msgstr ""
-#: InvenTree/helpers.py:475
+#: InvenTree/helpers.py:477
#, python-brace-format
msgid "Invalid group sequence: {g}"
msgstr ""
-#: InvenTree/helpers.py:483
+#: InvenTree/helpers.py:485
#, python-brace-format
msgid "Invalid/no group {group}"
msgstr ""
-#: InvenTree/helpers.py:489
+#: InvenTree/helpers.py:491
msgid "No serial numbers found"
msgstr ""
-#: InvenTree/helpers.py:493
+#: InvenTree/helpers.py:495
#, python-brace-format
msgid "Number of unique serial numbers ({s}) must match quantity ({q})"
msgstr ""
-#: InvenTree/models.py:174
+#: InvenTree/models.py:178
msgid "Missing file"
msgstr ""
-#: InvenTree/models.py:175
+#: InvenTree/models.py:179
msgid "Missing external link"
msgstr ""
-#: InvenTree/models.py:187 stock/models.py:2087
-#: templates/js/translated/attachment.js:101
-#: templates/js/translated/attachment.js:198
+#: InvenTree/models.py:191 stock/models.py:2091
+#: templates/js/translated/attachment.js:103
+#: templates/js/translated/attachment.js:194
msgid "Attachment"
msgstr ""
-#: InvenTree/models.py:188
+#: InvenTree/models.py:192
msgid "Select file to attach"
msgstr ""
-#: InvenTree/models.py:194 company/models.py:123 company/models.py:272
-#: company/models.py:506 order/models.py:135 order/models.py:1235
+#: InvenTree/models.py:198 company/models.py:123 company/models.py:272
+#: company/models.py:506 order/models.py:136 order/models.py:1251
#: part/models.py:795
#: report/templates/report/inventree_build_order_base.html:165
-#: templates/js/translated/company.js:655
-#: templates/js/translated/company.js:946 templates/js/translated/order.js:2676
-#: templates/js/translated/part.js:1441
+#: templates/js/translated/company.js:640
+#: templates/js/translated/company.js:931 templates/js/translated/order.js:2676
+#: templates/js/translated/part.js:1485
msgid "Link"
msgstr ""
-#: InvenTree/models.py:195 build/models.py:320 part/models.py:796
+#: InvenTree/models.py:199 build/models.py:320 part/models.py:796
#: stock/models.py:642
msgid "Link to external URL"
msgstr ""
-#: InvenTree/models.py:198 templates/js/translated/attachment.js:102
-#: templates/js/translated/attachment.js:242
+#: InvenTree/models.py:202 templates/js/translated/attachment.js:104
+#: templates/js/translated/attachment.js:238
msgid "Comment"
msgstr "Bình luận"
-#: InvenTree/models.py:198
+#: InvenTree/models.py:202
msgid "File comment"
msgstr ""
-#: InvenTree/models.py:204 InvenTree/models.py:205 common/models.py:1499
-#: common/models.py:1500 common/models.py:1728 common/models.py:1729
-#: common/models.py:1991 common/models.py:1992 part/models.py:2153
-#: part/models.py:2173 plugin/models.py:238 plugin/models.py:239
+#: InvenTree/models.py:208 InvenTree/models.py:209 common/models.py:1506
+#: common/models.py:1507 common/models.py:1735 common/models.py:1736
+#: common/models.py:1998 common/models.py:1999 part/models.py:2141
+#: part/models.py:2161 plugin/models.py:238 plugin/models.py:239
#: report/templates/report/inventree_test_report_base.html:96
-#: templates/js/translated/stock.js:2513
+#: templates/js/translated/stock.js:2523
msgid "User"
msgstr "Người dùng"
-#: InvenTree/models.py:208
+#: InvenTree/models.py:212
msgid "upload date"
msgstr "Ngày tải lên"
-#: InvenTree/models.py:230
+#: InvenTree/models.py:234
msgid "Filename must not be empty"
msgstr "Tên tập tin không được để trống"
-#: InvenTree/models.py:253
+#: InvenTree/models.py:257
msgid "Invalid attachment directory"
msgstr ""
-#: InvenTree/models.py:263
+#: InvenTree/models.py:267
#, python-brace-format
msgid "Filename contains illegal character '{c}'"
msgstr ""
-#: InvenTree/models.py:266
+#: InvenTree/models.py:270
msgid "Filename missing extension"
msgstr ""
-#: InvenTree/models.py:273
+#: InvenTree/models.py:277
msgid "Attachment with this filename already exists"
msgstr ""
-#: InvenTree/models.py:280
+#: InvenTree/models.py:284
msgid "Error renaming file"
msgstr ""
-#: InvenTree/models.py:314
+#: InvenTree/models.py:318
msgid "Invalid choice"
msgstr ""
-#: InvenTree/models.py:333 InvenTree/models.py:334 common/models.py:1714
+#: InvenTree/models.py:337 InvenTree/models.py:338 common/models.py:1721
#: company/models.py:354 label/models.py:101 part/models.py:739
-#: part/models.py:2331 plugin/models.py:93 report/models.py:151
+#: part/models.py:2319 plugin/models.py:93 report/models.py:151
#: templates/InvenTree/notifications/notifications.html:84
#: templates/InvenTree/settings/mixins/urls.html:13
#: templates/InvenTree/settings/plugin.html:49
#: templates/InvenTree/settings/plugin.html:132
#: templates/InvenTree/settings/plugin_settings.html:23
#: templates/InvenTree/settings/settings.html:346
-#: templates/js/translated/company.js:539
-#: templates/js/translated/company.js:757 templates/js/translated/part.js:615
-#: templates/js/translated/part.js:767 templates/js/translated/part.js:1736
-#: templates/js/translated/stock.js:2283
+#: templates/js/translated/company.js:530
+#: templates/js/translated/company.js:742 templates/js/translated/part.js:659
+#: templates/js/translated/part.js:811 templates/js/translated/part.js:1832
+#: templates/js/translated/stock.js:2293
msgid "Name"
msgstr ""
-#: InvenTree/models.py:340 build/models.py:197
+#: InvenTree/models.py:344 build/models.py:197
#: build/templates/build/detail.html:24 company/models.py:278
#: company/models.py:512 company/templates/company/company_base.html:71
#: company/templates/company/manufacturer_part.html:75
#: company/templates/company/supplier_part.html:73 label/models.py:108
-#: order/models.py:133 part/models.py:762 part/templates/part/category.html:74
-#: part/templates/part/part_base.html:167
-#: part/templates/part/set_category.html:14 report/models.py:164
+#: order/models.py:134 part/models.py:762 part/templates/part/category.html:74
+#: part/templates/part/part_base.html:167 report/models.py:164
#: report/models.py:509 report/models.py:550
#: report/templates/report/inventree_build_order_base.html:118
#: stock/templates/stock/location.html:103
#: templates/InvenTree/settings/plugin_settings.html:33
-#: templates/js/translated/bom.js:553 templates/js/translated/bom.js:851
-#: templates/js/translated/build.js:2476 templates/js/translated/company.js:401
-#: templates/js/translated/company.js:666
-#: templates/js/translated/company.js:957 templates/js/translated/order.js:1656
+#: templates/js/translated/bom.js:553 templates/js/translated/bom.js:845
+#: templates/js/translated/build.js:2476 templates/js/translated/company.js:395
+#: templates/js/translated/company.js:651
+#: templates/js/translated/company.js:942 templates/js/translated/order.js:1656
#: templates/js/translated/order.js:1888 templates/js/translated/order.js:2476
-#: templates/js/translated/part.js:674 templates/js/translated/part.js:1082
-#: templates/js/translated/part.js:1355 templates/js/translated/part.js:1755
-#: templates/js/translated/part.js:1824 templates/js/translated/stock.js:1676
-#: templates/js/translated/stock.js:2295 templates/js/translated/stock.js:2350
+#: templates/js/translated/part.js:718 templates/js/translated/part.js:1126
+#: templates/js/translated/part.js:1399 templates/js/translated/part.js:1851
+#: templates/js/translated/part.js:1920 templates/js/translated/stock.js:1686
+#: templates/js/translated/stock.js:2305 templates/js/translated/stock.js:2360
msgid "Description"
msgstr "Mô tả"
-#: InvenTree/models.py:341
+#: InvenTree/models.py:345
msgid "Description (optional)"
msgstr "Mô tả (tùy chọn)"
-#: InvenTree/models.py:349
+#: InvenTree/models.py:353
msgid "parent"
msgstr ""
-#: InvenTree/serializers.py:52 part/models.py:2652
+#: InvenTree/models.py:466
+msgid "Server Error"
+msgstr ""
+
+#: InvenTree/models.py:467
+msgid "An error has been logged by the server."
+msgstr ""
+
+#: InvenTree/serializers.py:52 part/models.py:2640
msgid "Must be a valid number"
msgstr ""
-#: InvenTree/serializers.py:271
+#: InvenTree/serializers.py:263
msgid "Filename"
msgstr "Tên tập tin"
-#: InvenTree/serializers.py:306
+#: InvenTree/serializers.py:298
msgid "Invalid value"
msgstr ""
-#: InvenTree/serializers.py:328
+#: InvenTree/serializers.py:320
msgid "Data File"
msgstr ""
-#: InvenTree/serializers.py:329
+#: InvenTree/serializers.py:321
msgid "Select data file for upload"
msgstr ""
-#: InvenTree/serializers.py:350
+#: InvenTree/serializers.py:342
msgid "Unsupported file type"
msgstr ""
-#: InvenTree/serializers.py:356
+#: InvenTree/serializers.py:348
msgid "File is too large"
msgstr ""
-#: InvenTree/serializers.py:377
+#: InvenTree/serializers.py:369
msgid "No columns found in file"
msgstr ""
-#: InvenTree/serializers.py:380
+#: InvenTree/serializers.py:372
msgid "No data rows found in file"
msgstr ""
-#: InvenTree/serializers.py:503
+#: InvenTree/serializers.py:495
msgid "No data rows provided"
msgstr ""
-#: InvenTree/serializers.py:506
+#: InvenTree/serializers.py:498
msgid "No data columns supplied"
msgstr ""
-#: InvenTree/serializers.py:583
+#: InvenTree/serializers.py:575
#, python-brace-format
msgid "Missing required column: '{name}'"
msgstr ""
-#: InvenTree/serializers.py:592
+#: InvenTree/serializers.py:584
#, python-brace-format
msgid "Duplicate column: '{col}'"
msgstr ""
@@ -440,7 +438,7 @@ msgstr ""
msgid "Returned"
msgstr ""
-#: InvenTree/status_codes.py:141 order/models.py:1114
+#: InvenTree/status_codes.py:141 order/models.py:1130
#: templates/js/translated/order.js:3264 templates/js/translated/order.js:3607
msgid "Shipped"
msgstr ""
@@ -525,7 +523,7 @@ msgstr ""
msgid "Split child item"
msgstr ""
-#: InvenTree/status_codes.py:281 templates/js/translated/stock.js:2020
+#: InvenTree/status_codes.py:281 templates/js/translated/stock.js:2030
msgid "Merged stock items"
msgstr ""
@@ -597,27 +595,27 @@ msgstr ""
msgid "Invalid value for overage"
msgstr ""
-#: InvenTree/views.py:522
+#: InvenTree/views.py:521
msgid "Delete Item"
msgstr ""
-#: InvenTree/views.py:571
+#: InvenTree/views.py:570
msgid "Check box to confirm item deletion"
msgstr ""
-#: InvenTree/views.py:586 templates/InvenTree/settings/user.html:22
+#: InvenTree/views.py:585 templates/InvenTree/settings/user.html:22
msgid "Edit User Information"
msgstr ""
-#: InvenTree/views.py:598 templates/InvenTree/settings/user.html:19
+#: InvenTree/views.py:597 templates/InvenTree/settings/user.html:19
msgid "Set Password"
msgstr ""
-#: InvenTree/views.py:618
+#: InvenTree/views.py:617
msgid "Password fields must match"
msgstr ""
-#: InvenTree/views.py:842 templates/navbar.html:152
+#: InvenTree/views.py:807 templates/navbar.html:152
msgid "System Information"
msgstr "Thông tin hệ thống"
@@ -628,6 +626,7 @@ msgstr ""
#: build/models.py:131 build/templates/build/build_base.html:9
#: build/templates/build/build_base.html:27
#: report/templates/report/inventree_build_order_base.html:106
+#: templates/email/overdue_build_order.html:15
#: templates/js/translated/build.js:727
msgid "Build Order"
msgstr "Tạo đơn hàng"
@@ -646,12 +645,12 @@ msgstr "Tạo đơn hàng"
msgid "Build Order Reference"
msgstr ""
-#: build/models.py:189 order/models.py:288 order/models.py:638
-#: order/models.py:916 part/models.py:2570
+#: build/models.py:189 order/models.py:293 order/models.py:654
+#: order/models.py:932 part/models.py:2558
#: part/templates/part/upload_bom.html:54
#: report/templates/report/inventree_po_report.html:91
#: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:688 templates/js/translated/bom.js:858
+#: templates/js/translated/bom.js:690 templates/js/translated/bom.js:852
#: templates/js/translated/build.js:1777 templates/js/translated/order.js:1919
#: templates/js/translated/order.js:2120 templates/js/translated/order.js:3448
#: templates/js/translated/order.js:3959
@@ -673,13 +672,12 @@ msgstr ""
#: build/models.py:215 build/templates/build/build_base.html:77
#: build/templates/build/detail.html:29 company/models.py:647
-#: order/models.py:1012 order/models.py:1103 part/models.py:336
-#: part/models.py:2099 part/models.py:2114 part/models.py:2133
-#: part/models.py:2151 part/models.py:2250 part/models.py:2370
-#: part/models.py:2460 part/models.py:2545 part/models.py:2821
-#: part/serializers.py:793 part/templates/part/part_app_base.html:8
+#: order/models.py:1028 order/models.py:1119 part/models.py:336
+#: part/models.py:2087 part/models.py:2102 part/models.py:2121
+#: part/models.py:2139 part/models.py:2238 part/models.py:2358
+#: part/models.py:2448 part/models.py:2533 part/models.py:2809
+#: part/serializers.py:795 part/templates/part/part_app_base.html:8
#: part/templates/part/part_pricing.html:12
-#: part/templates/part/set_category.html:13
#: part/templates/part/upload_bom.html:52
#: report/templates/report/inventree_build_order_base.html:110
#: report/templates/report/inventree_po_report.html:89
@@ -687,22 +685,23 @@ msgstr ""
#: templates/InvenTree/search.html:80
#: templates/email/build_order_required_stock.html:17
#: templates/email/low_stock_notification.html:16
+#: templates/email/overdue_build_order.html:16
#: templates/js/translated/barcode.js:435 templates/js/translated/bom.js:552
-#: templates/js/translated/bom.js:687 templates/js/translated/bom.js:805
+#: templates/js/translated/bom.js:689 templates/js/translated/bom.js:799
#: templates/js/translated/build.js:1153 templates/js/translated/build.js:1647
#: templates/js/translated/build.js:2083 templates/js/translated/build.js:2481
-#: templates/js/translated/company.js:252
-#: templates/js/translated/company.js:486
-#: templates/js/translated/company.js:607
-#: templates/js/translated/company.js:866 templates/js/translated/order.js:100
+#: templates/js/translated/company.js:253
+#: templates/js/translated/company.js:482
+#: templates/js/translated/company.js:592
+#: templates/js/translated/company.js:851 templates/js/translated/order.js:100
#: templates/js/translated/order.js:883 templates/js/translated/order.js:1315
#: templates/js/translated/order.js:1873 templates/js/translated/order.js:2819
#: templates/js/translated/order.js:3217 templates/js/translated/order.js:3432
-#: templates/js/translated/part.js:1067 templates/js/translated/part.js:1137
-#: templates/js/translated/part.js:1333 templates/js/translated/stock.js:531
-#: templates/js/translated/stock.js:696 templates/js/translated/stock.js:903
-#: templates/js/translated/stock.js:1633 templates/js/translated/stock.js:2376
-#: templates/js/translated/stock.js:2571 templates/js/translated/stock.js:2705
+#: templates/js/translated/part.js:1111 templates/js/translated/part.js:1181
+#: templates/js/translated/part.js:1377 templates/js/translated/stock.js:530
+#: templates/js/translated/stock.js:695 templates/js/translated/stock.js:902
+#: templates/js/translated/stock.js:1643 templates/js/translated/stock.js:2386
+#: templates/js/translated/stock.js:2581 templates/js/translated/stock.js:2715
msgid "Part"
msgstr "Nguyên liệu"
@@ -768,12 +767,12 @@ msgstr ""
msgid "Batch code for this build output"
msgstr ""
-#: build/models.py:282 order/models.py:137 part/models.py:932
+#: build/models.py:282 order/models.py:138 part/models.py:932
#: part/templates/part/part_base.html:305 templates/js/translated/order.js:2489
msgid "Creation Date"
msgstr ""
-#: build/models.py:286 order/models.py:660
+#: build/models.py:286 order/models.py:676
msgid "Target completion date"
msgstr ""
@@ -781,7 +780,7 @@ msgstr ""
msgid "Target date for build completion. Build will be overdue after this date."
msgstr ""
-#: build/models.py:290 order/models.py:331
+#: build/models.py:290 order/models.py:336
#: templates/js/translated/build.js:2558
msgid "Completion Date"
msgstr "Ngày hoàn thành"
@@ -799,7 +798,7 @@ msgid "User who issued this build order"
msgstr ""
#: build/models.py:313 build/templates/build/build_base.html:190
-#: build/templates/build/detail.html:115 order/models.py:151
+#: build/templates/build/detail.html:115 order/models.py:152
#: order/templates/order/order_base.html:176
#: order/templates/order/sales_order_base.html:183 part/models.py:936
#: report/templates/report/inventree_build_order_base.html:159
@@ -822,20 +821,20 @@ msgstr ""
#: build/models.py:324 build/serializers.py:374
#: build/templates/build/sidebar.html:21 company/models.py:134
#: company/models.py:519 company/templates/company/sidebar.html:25
-#: order/models.py:155 order/models.py:918 order/models.py:1213
+#: order/models.py:156 order/models.py:934 order/models.py:1229
#: order/templates/order/po_sidebar.html:11
#: order/templates/order/so_sidebar.html:17 part/models.py:921
#: part/templates/part/part_sidebar.html:59
#: report/templates/report/inventree_build_order_base.html:173
-#: stock/models.py:713 stock/models.py:1985 stock/models.py:2093
+#: stock/models.py:713 stock/models.py:1989 stock/models.py:2097
#: stock/serializers.py:315 stock/serializers.py:444 stock/serializers.py:486
-#: stock/serializers.py:772 stock/serializers.py:871 stock/serializers.py:1003
+#: stock/serializers.py:759 stock/serializers.py:858 stock/serializers.py:990
#: stock/templates/stock/stock_sidebar.html:25
-#: templates/js/translated/barcode.js:100 templates/js/translated/bom.js:1044
-#: templates/js/translated/company.js:962 templates/js/translated/order.js:2040
+#: templates/js/translated/barcode.js:100 templates/js/translated/bom.js:1038
+#: templates/js/translated/company.js:947 templates/js/translated/order.js:2040
#: templates/js/translated/order.js:2191 templates/js/translated/order.js:2687
#: templates/js/translated/order.js:3632 templates/js/translated/order.js:4030
-#: templates/js/translated/stock.js:1307 templates/js/translated/stock.js:1916
+#: templates/js/translated/stock.js:1317 templates/js/translated/stock.js:1926
msgid "Notes"
msgstr ""
@@ -855,44 +854,44 @@ msgstr ""
msgid "Build output does not match Build Order"
msgstr ""
-#: build/models.py:1108
+#: build/models.py:1111
msgid "Build item must specify a build output, as master part is marked as trackable"
msgstr ""
-#: build/models.py:1117
+#: build/models.py:1120
#, python-brace-format
msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})"
msgstr ""
-#: build/models.py:1127
+#: build/models.py:1130
msgid "Stock item is over-allocated"
msgstr ""
-#: build/models.py:1133 order/models.py:1372
+#: build/models.py:1136 order/models.py:1388
msgid "Allocation quantity must be greater than zero"
msgstr ""
-#: build/models.py:1139
+#: build/models.py:1142
msgid "Quantity must be 1 for serialized stock"
msgstr ""
-#: build/models.py:1196
+#: build/models.py:1199
msgid "Selected stock item not found in BOM"
msgstr ""
-#: build/models.py:1265 stock/templates/stock/item_base.html:177
+#: build/models.py:1268 stock/templates/stock/item_base.html:177
#: templates/InvenTree/search.html:137 templates/js/translated/build.js:2454
#: templates/navbar.html:38
msgid "Build"
msgstr ""
-#: build/models.py:1266
+#: build/models.py:1269
msgid "Build to allocate parts"
msgstr ""
-#: build/models.py:1282 build/serializers.py:603 order/serializers.py:994
-#: order/serializers.py:1015 stock/serializers.py:382 stock/serializers.py:703
-#: stock/serializers.py:829 stock/templates/stock/item_base.html:10
+#: build/models.py:1285 build/serializers.py:603 order/serializers.py:996
+#: order/serializers.py:1017 stock/serializers.py:382 stock/serializers.py:690
+#: stock/serializers.py:816 stock/templates/stock/item_base.html:10
#: stock/templates/stock/item_base.html:23
#: stock/templates/stock/item_base.html:199
#: templates/js/translated/build.js:738 templates/js/translated/build.js:743
@@ -900,22 +899,22 @@ msgstr ""
#: templates/js/translated/order.js:101 templates/js/translated/order.js:2820
#: templates/js/translated/order.js:3124 templates/js/translated/order.js:3129
#: templates/js/translated/order.js:3224 templates/js/translated/order.js:3314
-#: templates/js/translated/stock.js:532 templates/js/translated/stock.js:697
-#: templates/js/translated/stock.js:2449
+#: templates/js/translated/stock.js:531 templates/js/translated/stock.js:696
+#: templates/js/translated/stock.js:2459
msgid "Stock Item"
msgstr ""
-#: build/models.py:1283
+#: build/models.py:1286
msgid "Source stock item"
msgstr ""
-#: build/models.py:1295 build/serializers.py:183
+#: build/models.py:1298 build/serializers.py:183
#: build/templates/build/build_base.html:82
-#: build/templates/build/detail.html:34 common/models.py:1536
+#: build/templates/build/detail.html:34 common/models.py:1543
#: company/forms.py:36 company/templates/company/supplier_part.html:258
-#: order/models.py:909 order/models.py:1412 order/serializers.py:1134
-#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:68
-#: part/forms.py:83 part/forms.py:98 part/models.py:2561
+#: order/models.py:925 order/models.py:1428 order/serializers.py:1136
+#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:59
+#: part/forms.py:74 part/forms.py:89 part/models.py:2549
#: part/templates/part/detail.html:935 part/templates/part/detail.html:1021
#: part/templates/part/part_pricing.html:16
#: part/templates/part/upload_bom.html:53
@@ -926,8 +925,8 @@ msgstr ""
#: report/templates/report/inventree_test_report_base.html:139
#: stock/serializers.py:279 stock/templates/stock/item_base.html:292
#: stock/templates/stock/item_base.html:300
-#: templates/js/translated/barcode.js:437 templates/js/translated/bom.js:689
-#: templates/js/translated/bom.js:866 templates/js/translated/build.js:422
+#: templates/js/translated/barcode.js:437 templates/js/translated/bom.js:691
+#: templates/js/translated/bom.js:860 templates/js/translated/build.js:422
#: templates/js/translated/build.js:574 templates/js/translated/build.js:765
#: templates/js/translated/build.js:1175 templates/js/translated/build.js:1673
#: templates/js/translated/build.js:2086
@@ -937,23 +936,23 @@ msgstr ""
#: templates/js/translated/order.js:2821 templates/js/translated/order.js:3143
#: templates/js/translated/order.js:3231 templates/js/translated/order.js:3320
#: templates/js/translated/order.js:3454 templates/js/translated/order.js:3965
-#: templates/js/translated/part.js:967 templates/js/translated/part.js:1969
-#: templates/js/translated/part.js:2200 templates/js/translated/part.js:2234
-#: templates/js/translated/part.js:2312 templates/js/translated/stock.js:403
-#: templates/js/translated/stock.js:557 templates/js/translated/stock.js:727
-#: templates/js/translated/stock.js:2498 templates/js/translated/stock.js:2583
+#: templates/js/translated/part.js:1011 templates/js/translated/part.js:2065
+#: templates/js/translated/part.js:2296 templates/js/translated/part.js:2330
+#: templates/js/translated/part.js:2408 templates/js/translated/stock.js:402
+#: templates/js/translated/stock.js:556 templates/js/translated/stock.js:726
+#: templates/js/translated/stock.js:2508 templates/js/translated/stock.js:2593
msgid "Quantity"
msgstr ""
-#: build/models.py:1296
+#: build/models.py:1299
msgid "Stock quantity to allocate to build"
msgstr ""
-#: build/models.py:1304
+#: build/models.py:1307
msgid "Install into"
msgstr ""
-#: build/models.py:1305
+#: build/models.py:1308
msgid "Destination stock item"
msgstr ""
@@ -982,9 +981,9 @@ msgstr ""
msgid "Enter quantity for build output"
msgstr ""
-#: build/serializers.py:198 build/serializers.py:623 order/models.py:363
-#: order/serializers.py:280 order/serializers.py:435 part/serializers.py:512
-#: part/serializers.py:956 stock/models.py:470 stock/models.py:1239
+#: build/serializers.py:198 build/serializers.py:623 order/models.py:368
+#: order/serializers.py:280 order/serializers.py:435 part/serializers.py:514
+#: part/serializers.py:958 stock/models.py:470 stock/models.py:1239
#: stock/serializers.py:288
msgid "Quantity must be greater than zero"
msgstr ""
@@ -997,9 +996,9 @@ msgstr ""
msgid "Integer quantity required, as the bill of materials contains trackable parts"
msgstr ""
-#: build/serializers.py:222 order/serializers.py:448 order/serializers.py:1138
+#: build/serializers.py:222 order/serializers.py:448 order/serializers.py:1140
#: stock/serializers.py:297 templates/js/translated/order.js:1186
-#: templates/js/translated/stock.js:238 templates/js/translated/stock.js:404
+#: templates/js/translated/stock.js:237 templates/js/translated/stock.js:403
msgid "Serial Numbers"
msgstr ""
@@ -1015,7 +1014,7 @@ msgstr ""
msgid "Automatically allocate required items with matching serial numbers"
msgstr ""
-#: build/serializers.py:268 stock/api.py:552
+#: build/serializers.py:268 stock/api.py:553
msgid "The following serial numbers already exist"
msgstr ""
@@ -1025,16 +1024,16 @@ msgstr ""
#: build/serializers.py:356 order/serializers.py:421 order/serializers.py:525
#: stock/serializers.py:308 stock/serializers.py:439 stock/serializers.py:481
-#: stock/serializers.py:864 stock/serializers.py:1097
+#: stock/serializers.py:851 stock/serializers.py:1084
#: stock/templates/stock/item_base.html:390
#: templates/js/translated/barcode.js:436
#: templates/js/translated/barcode.js:618 templates/js/translated/build.js:750
#: templates/js/translated/build.js:1685 templates/js/translated/order.js:1213
#: templates/js/translated/order.js:3136 templates/js/translated/order.js:3239
#: templates/js/translated/order.js:3247 templates/js/translated/order.js:3328
-#: templates/js/translated/part.js:180 templates/js/translated/stock.js:533
-#: templates/js/translated/stock.js:698 templates/js/translated/stock.js:905
-#: templates/js/translated/stock.js:1787 templates/js/translated/stock.js:2390
+#: templates/js/translated/part.js:180 templates/js/translated/stock.js:532
+#: templates/js/translated/stock.js:697 templates/js/translated/stock.js:904
+#: templates/js/translated/stock.js:1797 templates/js/translated/stock.js:2400
msgid "Location"
msgstr ""
@@ -1043,12 +1042,12 @@ msgid "Location for completed build outputs"
msgstr ""
#: build/serializers.py:363 build/templates/build/build_base.html:142
-#: build/templates/build/detail.html:62 order/models.py:654
+#: build/templates/build/detail.html:62 order/models.py:670
#: order/serializers.py:458 stock/templates/stock/item_base.html:423
#: templates/js/translated/barcode.js:182 templates/js/translated/build.js:2510
#: templates/js/translated/order.js:1320 templates/js/translated/order.js:1660
-#: templates/js/translated/order.js:2481 templates/js/translated/stock.js:1762
-#: templates/js/translated/stock.js:2467 templates/js/translated/stock.js:2599
+#: templates/js/translated/order.js:2481 templates/js/translated/stock.js:1772
+#: templates/js/translated/stock.js:2477 templates/js/translated/stock.js:2609
msgid "Status"
msgstr "Trạng thái"
@@ -1108,8 +1107,8 @@ msgstr ""
msgid "No build outputs have been created for this build order"
msgstr ""
-#: build/serializers.py:535 build/serializers.py:580 part/models.py:2679
-#: part/models.py:2813
+#: build/serializers.py:535 build/serializers.py:580 part/models.py:2667
+#: part/models.py:2801
msgid "BOM Item"
msgstr ""
@@ -1125,11 +1124,11 @@ msgstr ""
msgid "bom_item.part must point to the same part as the build order"
msgstr ""
-#: build/serializers.py:609 stock/serializers.py:716
+#: build/serializers.py:609 stock/serializers.py:703
msgid "Item must be in stock"
msgstr ""
-#: build/serializers.py:667 order/serializers.py:1052
+#: build/serializers.py:667 order/serializers.py:1054
#, python-brace-format
msgid "Available quantity ({q}) exceeded"
msgstr ""
@@ -1146,7 +1145,7 @@ msgstr ""
msgid "This stock item has already been allocated to this build output"
msgstr ""
-#: build/serializers.py:708 order/serializers.py:1298
+#: build/serializers.py:708 order/serializers.py:1300
msgid "Allocation items must be provided"
msgstr ""
@@ -1178,10 +1177,19 @@ msgstr ""
msgid "Allow allocation of substitute parts"
msgstr ""
-#: build/tasks.py:96
+#: build/tasks.py:100
msgid "Stock required for build order"
msgstr ""
+#: build/tasks.py:118
+msgid "Overdue Build Order"
+msgstr ""
+
+#: build/tasks.py:123
+#, python-brace-format
+msgid "Build order {bo} is now overdue"
+msgstr ""
+
#: build/templates/build/build_base.html:39
#: order/templates/order/order_base.html:28
#: order/templates/order/sales_order_base.html:38
@@ -1244,13 +1252,13 @@ msgid "Stock has not been fully allocated to this Build Order"
msgstr ""
#: build/templates/build/build_base.html:151
-#: build/templates/build/detail.html:131 order/models.py:922
+#: build/templates/build/detail.html:131 order/models.py:938
#: order/templates/order/order_base.html:162
#: order/templates/order/sales_order_base.html:164
#: report/templates/report/inventree_build_order_base.html:126
#: templates/js/translated/build.js:2550 templates/js/translated/order.js:1677
#: templates/js/translated/order.js:1987 templates/js/translated/order.js:2497
-#: templates/js/translated/order.js:3517 templates/js/translated/part.js:971
+#: templates/js/translated/order.js:3517 templates/js/translated/part.js:1015
msgid "Target Date"
msgstr ""
@@ -1277,13 +1285,14 @@ msgid "Completed"
msgstr "Đã hoàn thành"
#: build/templates/build/build_base.html:176
-#: build/templates/build/detail.html:94 order/models.py:1100
-#: order/models.py:1185 order/models.py:1320
+#: build/templates/build/detail.html:94 order/models.py:1116
+#: order/models.py:1201 order/models.py:1336
#: order/templates/order/sales_order_base.html:9
#: order/templates/order/sales_order_base.html:28
#: report/templates/report/inventree_build_order_base.html:136
#: report/templates/report/inventree_so_report.html:77
#: stock/templates/stock/item_base.html:370
+#: templates/email/overdue_sales_order.html:15
#: templates/js/translated/order.js:2436
msgid "Sales Order"
msgstr ""
@@ -1319,7 +1328,7 @@ msgstr ""
msgid "Stock can be taken from any available location."
msgstr ""
-#: build/templates/build/detail.html:49 order/models.py:1034
+#: build/templates/build/detail.html:49 order/models.py:1050
#: templates/js/translated/order.js:1321 templates/js/translated/order.js:2029
msgid "Destination"
msgstr ""
@@ -1336,8 +1345,8 @@ msgstr ""
#: stock/templates/stock/item_base.html:170
#: templates/js/translated/build.js:1179
#: templates/js/translated/model_renderers.js:112
-#: templates/js/translated/stock.js:971 templates/js/translated/stock.js:1776
-#: templates/js/translated/stock.js:2606
+#: templates/js/translated/stock.js:970 templates/js/translated/stock.js:1786
+#: templates/js/translated/stock.js:2616
#: templates/js/translated/table_filters.js:151
#: templates/js/translated/table_filters.js:242
msgid "Batch"
@@ -1716,7 +1725,7 @@ msgstr ""
msgid "Copy category parameter templates when creating a part"
msgstr ""
-#: common/models.py:820 part/models.py:2372 report/models.py:157
+#: common/models.py:820 part/models.py:2360 report/models.py:157
#: templates/js/translated/table_filters.js:38
#: templates/js/translated/table_filters.js:444
msgid "Template"
@@ -1726,7 +1735,7 @@ msgstr ""
msgid "Parts are templates by default"
msgstr ""
-#: common/models.py:827 part/models.py:884 templates/js/translated/bom.js:1390
+#: common/models.py:827 part/models.py:884 templates/js/translated/bom.js:1384
#: templates/js/translated/table_filters.js:168
#: templates/js/translated/table_filters.js:460
msgid "Assembly"
@@ -1880,7 +1889,7 @@ msgid "Default page size for PDF reports"
msgstr ""
#: common/models.py:968
-msgid "Test Reports"
+msgid "Enable Test Reports"
msgstr ""
#: common/models.py:969
@@ -1888,568 +1897,576 @@ msgid "Enable generation of test reports"
msgstr ""
#: common/models.py:975
-msgid "Batch Code Template"
+msgid "Attach Test Reports"
msgstr ""
#: common/models.py:976
-msgid "Template for generating default batch codes for stock items"
-msgstr ""
-
-#: common/models.py:981
-msgid "Stock Expiry"
+msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item"
msgstr ""
#: common/models.py:982
-msgid "Enable stock expiry functionality"
+msgid "Batch Code Template"
+msgstr ""
+
+#: common/models.py:983
+msgid "Template for generating default batch codes for stock items"
msgstr ""
#: common/models.py:988
-msgid "Sell Expired Stock"
+msgid "Stock Expiry"
msgstr ""
#: common/models.py:989
-msgid "Allow sale of expired stock"
+msgid "Enable stock expiry functionality"
msgstr ""
#: common/models.py:995
-msgid "Stock Stale Time"
+msgid "Sell Expired Stock"
msgstr ""
#: common/models.py:996
-msgid "Number of days stock items are considered stale before expiring"
+msgid "Allow sale of expired stock"
msgstr ""
-#: common/models.py:998
-msgid "days"
+#: common/models.py:1002
+msgid "Stock Stale Time"
msgstr ""
#: common/models.py:1003
-msgid "Build Expired Stock"
+msgid "Number of days stock items are considered stale before expiring"
msgstr ""
-#: common/models.py:1004
-msgid "Allow building with expired stock"
+#: common/models.py:1005
+msgid "days"
msgstr ""
#: common/models.py:1010
-msgid "Stock Ownership Control"
+msgid "Build Expired Stock"
msgstr ""
#: common/models.py:1011
-msgid "Enable ownership control over stock locations and items"
+msgid "Allow building with expired stock"
msgstr ""
#: common/models.py:1017
-msgid "Build Order Reference Prefix"
+msgid "Stock Ownership Control"
msgstr ""
#: common/models.py:1018
-msgid "Prefix value for build order reference"
-msgstr ""
-
-#: common/models.py:1023
-msgid "Build Order Reference Regex"
+msgid "Enable ownership control over stock locations and items"
msgstr ""
#: common/models.py:1024
+msgid "Build Order Reference Prefix"
+msgstr ""
+
+#: common/models.py:1025
+msgid "Prefix value for build order reference"
+msgstr ""
+
+#: common/models.py:1030
+msgid "Build Order Reference Regex"
+msgstr ""
+
+#: common/models.py:1031
msgid "Regular expression pattern for matching build order reference"
msgstr ""
-#: common/models.py:1028
+#: common/models.py:1035
msgid "Sales Order Reference Prefix"
msgstr ""
-#: common/models.py:1029
+#: common/models.py:1036
msgid "Prefix value for sales order reference"
msgstr ""
-#: common/models.py:1034
+#: common/models.py:1041
msgid "Sales Order Default Shipment"
msgstr ""
-#: common/models.py:1035
+#: common/models.py:1042
msgid "Enable creation of default shipment with sales orders"
msgstr ""
-#: common/models.py:1041
+#: common/models.py:1048
msgid "Purchase Order Reference Prefix"
msgstr ""
-#: common/models.py:1042
+#: common/models.py:1049
msgid "Prefix value for purchase order reference"
msgstr ""
-#: common/models.py:1048
+#: common/models.py:1055
msgid "Enable password forgot"
msgstr ""
-#: common/models.py:1049
+#: common/models.py:1056
msgid "Enable password forgot function on the login pages"
msgstr ""
-#: common/models.py:1055
+#: common/models.py:1062
msgid "Enable registration"
msgstr ""
-#: common/models.py:1056
+#: common/models.py:1063
msgid "Enable self-registration for users on the login pages"
msgstr ""
-#: common/models.py:1062
+#: common/models.py:1069
msgid "Enable SSO"
msgstr ""
-#: common/models.py:1063
+#: common/models.py:1070
msgid "Enable SSO on the login pages"
msgstr ""
-#: common/models.py:1069
+#: common/models.py:1076
msgid "Email required"
msgstr ""
-#: common/models.py:1070
+#: common/models.py:1077
msgid "Require user to supply mail on signup"
msgstr ""
-#: common/models.py:1076
+#: common/models.py:1083
msgid "Auto-fill SSO users"
msgstr ""
-#: common/models.py:1077
+#: common/models.py:1084
msgid "Automatically fill out user-details from SSO account-data"
msgstr ""
-#: common/models.py:1083
+#: common/models.py:1090
msgid "Mail twice"
msgstr ""
-#: common/models.py:1084
+#: common/models.py:1091
msgid "On signup ask users twice for their mail"
msgstr ""
-#: common/models.py:1090
+#: common/models.py:1097
msgid "Password twice"
msgstr ""
-#: common/models.py:1091
+#: common/models.py:1098
msgid "On signup ask users twice for their password"
msgstr ""
-#: common/models.py:1097
+#: common/models.py:1104
msgid "Group on signup"
msgstr ""
-#: common/models.py:1098
+#: common/models.py:1105
msgid "Group to which new users are assigned on registration"
msgstr ""
-#: common/models.py:1104
+#: common/models.py:1111
msgid "Enforce MFA"
msgstr ""
-#: common/models.py:1105
+#: common/models.py:1112
msgid "Users must use multifactor security."
msgstr ""
-#: common/models.py:1111
+#: common/models.py:1118
msgid "Check plugins on startup"
msgstr ""
-#: common/models.py:1112
+#: common/models.py:1119
msgid "Check that all plugins are installed on startup - enable in container enviroments"
msgstr ""
-#: common/models.py:1120
+#: common/models.py:1127
msgid "Enable URL integration"
msgstr ""
-#: common/models.py:1121
+#: common/models.py:1128
msgid "Enable plugins to add URL routes"
msgstr ""
-#: common/models.py:1128
+#: common/models.py:1135
msgid "Enable navigation integration"
msgstr ""
-#: common/models.py:1129
+#: common/models.py:1136
msgid "Enable plugins to integrate into navigation"
msgstr ""
-#: common/models.py:1136
+#: common/models.py:1143
msgid "Enable app integration"
msgstr ""
-#: common/models.py:1137
+#: common/models.py:1144
msgid "Enable plugins to add apps"
msgstr ""
-#: common/models.py:1144
+#: common/models.py:1151
msgid "Enable schedule integration"
msgstr ""
-#: common/models.py:1145
+#: common/models.py:1152
msgid "Enable plugins to run scheduled tasks"
msgstr ""
-#: common/models.py:1152
+#: common/models.py:1159
msgid "Enable event integration"
msgstr ""
-#: common/models.py:1153
+#: common/models.py:1160
msgid "Enable plugins to respond to internal events"
msgstr ""
-#: common/models.py:1170 common/models.py:1492
+#: common/models.py:1177 common/models.py:1499
msgid "Settings key (must be unique - case insensitive"
msgstr ""
-#: common/models.py:1192
+#: common/models.py:1199
msgid "Show subscribed parts"
msgstr ""
-#: common/models.py:1193
+#: common/models.py:1200
msgid "Show subscribed parts on the homepage"
msgstr ""
-#: common/models.py:1199
+#: common/models.py:1206
msgid "Show subscribed categories"
msgstr ""
-#: common/models.py:1200
+#: common/models.py:1207
msgid "Show subscribed part categories on the homepage"
msgstr ""
-#: common/models.py:1206
+#: common/models.py:1213
msgid "Show latest parts"
msgstr "Hiển thị nguyên liệu mới nhất"
-#: common/models.py:1207
+#: common/models.py:1214
msgid "Show latest parts on the homepage"
msgstr "Hiển thị nguyên liệu mới nhất trên trang chủ"
-#: common/models.py:1213
+#: common/models.py:1220
msgid "Recent Part Count"
msgstr ""
-#: common/models.py:1214
+#: common/models.py:1221
msgid "Number of recent parts to display on index page"
msgstr ""
-#: common/models.py:1220
+#: common/models.py:1227
msgid "Show unvalidated BOMs"
msgstr ""
-#: common/models.py:1221
+#: common/models.py:1228
msgid "Show BOMs that await validation on the homepage"
msgstr ""
-#: common/models.py:1227
+#: common/models.py:1234
msgid "Show recent stock changes"
msgstr ""
-#: common/models.py:1228
+#: common/models.py:1235
msgid "Show recently changed stock items on the homepage"
msgstr ""
-#: common/models.py:1234
+#: common/models.py:1241
msgid "Recent Stock Count"
msgstr ""
-#: common/models.py:1235
+#: common/models.py:1242
msgid "Number of recent stock items to display on index page"
msgstr ""
-#: common/models.py:1241
+#: common/models.py:1248
msgid "Show low stock"
msgstr ""
-#: common/models.py:1242
+#: common/models.py:1249
msgid "Show low stock items on the homepage"
msgstr ""
-#: common/models.py:1248
+#: common/models.py:1255
msgid "Show depleted stock"
msgstr ""
-#: common/models.py:1249
+#: common/models.py:1256
msgid "Show depleted stock items on the homepage"
msgstr ""
-#: common/models.py:1255
+#: common/models.py:1262
msgid "Show needed stock"
msgstr ""
-#: common/models.py:1256
+#: common/models.py:1263
msgid "Show stock items needed for builds on the homepage"
msgstr ""
-#: common/models.py:1262
+#: common/models.py:1269
msgid "Show expired stock"
msgstr ""
-#: common/models.py:1263
+#: common/models.py:1270
msgid "Show expired stock items on the homepage"
msgstr ""
-#: common/models.py:1269
+#: common/models.py:1276
msgid "Show stale stock"
msgstr ""
-#: common/models.py:1270
+#: common/models.py:1277
msgid "Show stale stock items on the homepage"
msgstr ""
-#: common/models.py:1276
+#: common/models.py:1283
msgid "Show pending builds"
msgstr ""
-#: common/models.py:1277
+#: common/models.py:1284
msgid "Show pending builds on the homepage"
msgstr ""
-#: common/models.py:1283
+#: common/models.py:1290
msgid "Show overdue builds"
msgstr ""
-#: common/models.py:1284
+#: common/models.py:1291
msgid "Show overdue builds on the homepage"
msgstr ""
-#: common/models.py:1290
+#: common/models.py:1297
msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:1291
+#: common/models.py:1298
msgid "Show outstanding POs on the homepage"
msgstr ""
-#: common/models.py:1297
+#: common/models.py:1304
msgid "Show overdue POs"
msgstr ""
-#: common/models.py:1298
+#: common/models.py:1305
msgid "Show overdue POs on the homepage"
msgstr ""
-#: common/models.py:1304
+#: common/models.py:1311
msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:1305
+#: common/models.py:1312
msgid "Show outstanding SOs on the homepage"
msgstr ""
-#: common/models.py:1311
+#: common/models.py:1318
msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:1312
+#: common/models.py:1319
msgid "Show overdue SOs on the homepage"
msgstr ""
-#: common/models.py:1317
+#: common/models.py:1324
msgid "Enable label printing"
msgstr ""
-#: common/models.py:1318
+#: common/models.py:1325
msgid "Enable label printing from the web interface"
msgstr ""
-#: common/models.py:1324
+#: common/models.py:1331
msgid "Inline label display"
msgstr ""
-#: common/models.py:1325
+#: common/models.py:1332
msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:1331
+#: common/models.py:1338
msgid "Inline report display"
msgstr ""
-#: common/models.py:1332
+#: common/models.py:1339
msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:1338
+#: common/models.py:1345
msgid "Search Parts"
msgstr ""
-#: common/models.py:1339
+#: common/models.py:1346
msgid "Display parts in search preview window"
msgstr ""
-#: common/models.py:1345
+#: common/models.py:1352
msgid "Seach Supplier Parts"
msgstr ""
-#: common/models.py:1346
+#: common/models.py:1353
msgid "Display supplier parts in search preview window"
msgstr ""
-#: common/models.py:1352
+#: common/models.py:1359
msgid "Search Manufacturer Parts"
msgstr ""
-#: common/models.py:1353
+#: common/models.py:1360
msgid "Display manufacturer parts in search preview window"
msgstr ""
-#: common/models.py:1359
+#: common/models.py:1366
msgid "Hide Inactive Parts"
msgstr ""
-#: common/models.py:1360
+#: common/models.py:1367
msgid "Excluded inactive parts from search preview window"
msgstr ""
-#: common/models.py:1366
+#: common/models.py:1373
msgid "Search Categories"
msgstr ""
-#: common/models.py:1367
+#: common/models.py:1374
msgid "Display part categories in search preview window"
msgstr ""
-#: common/models.py:1373
+#: common/models.py:1380
msgid "Search Stock"
msgstr ""
-#: common/models.py:1374
+#: common/models.py:1381
msgid "Display stock items in search preview window"
msgstr ""
-#: common/models.py:1380
+#: common/models.py:1387
msgid "Hide Unavailable Stock Items"
msgstr ""
-#: common/models.py:1381
+#: common/models.py:1388
msgid "Exclude stock items which are not available from the search preview window"
msgstr ""
-#: common/models.py:1387
+#: common/models.py:1394
msgid "Search Locations"
msgstr ""
-#: common/models.py:1388
+#: common/models.py:1395
msgid "Display stock locations in search preview window"
msgstr ""
-#: common/models.py:1394
+#: common/models.py:1401
msgid "Search Companies"
msgstr ""
-#: common/models.py:1395
+#: common/models.py:1402
msgid "Display companies in search preview window"
msgstr ""
-#: common/models.py:1401
+#: common/models.py:1408
msgid "Search Purchase Orders"
msgstr ""
-#: common/models.py:1402
+#: common/models.py:1409
msgid "Display purchase orders in search preview window"
msgstr ""
-#: common/models.py:1408
+#: common/models.py:1415
msgid "Exclude Inactive Purchase Orders"
msgstr ""
-#: common/models.py:1409
+#: common/models.py:1416
msgid "Exclude inactive purchase orders from search preview window"
msgstr ""
-#: common/models.py:1415
+#: common/models.py:1422
msgid "Search Sales Orders"
msgstr ""
-#: common/models.py:1416
+#: common/models.py:1423
msgid "Display sales orders in search preview window"
msgstr ""
-#: common/models.py:1422
+#: common/models.py:1429
msgid "Exclude Inactive Sales Orders"
msgstr ""
-#: common/models.py:1423
+#: common/models.py:1430
msgid "Exclude inactive sales orders from search preview window"
msgstr ""
-#: common/models.py:1429
+#: common/models.py:1436
msgid "Search Preview Results"
msgstr ""
-#: common/models.py:1430
+#: common/models.py:1437
msgid "Number of results to show in each section of the search preview window"
msgstr ""
-#: common/models.py:1436
+#: common/models.py:1443
msgid "Show Quantity in Forms"
msgstr ""
-#: common/models.py:1437
+#: common/models.py:1444
msgid "Display available part quantity in some forms"
msgstr ""
-#: common/models.py:1443
+#: common/models.py:1450
msgid "Escape Key Closes Forms"
msgstr ""
-#: common/models.py:1444
+#: common/models.py:1451
msgid "Use the escape key to close modal forms"
msgstr ""
-#: common/models.py:1450
+#: common/models.py:1457
msgid "Fixed Navbar"
msgstr ""
-#: common/models.py:1451
+#: common/models.py:1458
msgid "The navbar position is fixed to the top of the screen"
msgstr ""
-#: common/models.py:1457
+#: common/models.py:1464
msgid "Date Format"
msgstr ""
-#: common/models.py:1458
+#: common/models.py:1465
msgid "Preferred format for displaying dates"
msgstr ""
-#: common/models.py:1472 part/templates/part/detail.html:39
+#: common/models.py:1479 part/templates/part/detail.html:39
msgid "Part Scheduling"
msgstr ""
-#: common/models.py:1473
+#: common/models.py:1480
msgid "Display part scheduling information"
msgstr ""
-#: common/models.py:1537 company/forms.py:37
+#: common/models.py:1544 company/forms.py:37
msgid "Price break quantity"
msgstr ""
-#: common/models.py:1544 company/serializers.py:288
-#: company/templates/company/supplier_part.html:263 order/models.py:949
-#: templates/js/translated/part.js:998 templates/js/translated/part.js:1974
+#: common/models.py:1551 company/serializers.py:290
+#: company/templates/company/supplier_part.html:263 order/models.py:965
+#: templates/js/translated/part.js:1042 templates/js/translated/part.js:2070
msgid "Price"
msgstr ""
-#: common/models.py:1545
+#: common/models.py:1552
msgid "Unit price at specified quantity"
msgstr ""
-#: common/models.py:1705 common/models.py:1883
+#: common/models.py:1712 common/models.py:1890
msgid "Endpoint"
msgstr ""
-#: common/models.py:1706
+#: common/models.py:1713
msgid "Endpoint at which this webhook is received"
msgstr ""
-#: common/models.py:1715
+#: common/models.py:1722
msgid "Name for this webhook"
msgstr ""
-#: common/models.py:1720 part/models.py:911 plugin/models.py:99
+#: common/models.py:1727 part/models.py:911 plugin/models.py:99
#: templates/js/translated/table_filters.js:34
#: templates/js/translated/table_filters.js:96
#: templates/js/translated/table_filters.js:308
@@ -2457,79 +2474,89 @@ msgstr ""
msgid "Active"
msgstr ""
-#: common/models.py:1721
+#: common/models.py:1728
msgid "Is this webhook active"
msgstr ""
-#: common/models.py:1735
+#: common/models.py:1742
msgid "Token"
msgstr ""
-#: common/models.py:1736
+#: common/models.py:1743
msgid "Token for access"
msgstr ""
-#: common/models.py:1743
+#: common/models.py:1750
msgid "Secret"
msgstr ""
-#: common/models.py:1744
+#: common/models.py:1751
msgid "Shared secret for HMAC"
msgstr ""
-#: common/models.py:1850
+#: common/models.py:1857
msgid "Message ID"
msgstr ""
-#: common/models.py:1851
+#: common/models.py:1858
msgid "Unique identifier for this message"
msgstr ""
-#: common/models.py:1859
+#: common/models.py:1866
msgid "Host"
msgstr ""
-#: common/models.py:1860
+#: common/models.py:1867
msgid "Host from which this message was received"
msgstr ""
-#: common/models.py:1867
+#: common/models.py:1874
msgid "Header"
msgstr ""
-#: common/models.py:1868
+#: common/models.py:1875
msgid "Header of this message"
msgstr ""
-#: common/models.py:1874
+#: common/models.py:1881
msgid "Body"
msgstr ""
-#: common/models.py:1875
+#: common/models.py:1882
msgid "Body of this message"
msgstr ""
-#: common/models.py:1884
+#: common/models.py:1891
msgid "Endpoint on which this message was received"
msgstr ""
-#: common/models.py:1889
+#: common/models.py:1896
msgid "Worked on"
msgstr ""
-#: common/models.py:1890
+#: common/models.py:1897
msgid "Was the work on this message finished?"
msgstr ""
+#: common/notifications.py:292
+#, python-brace-format
+msgid "New {verbose_name}"
+msgstr ""
+
+#: common/notifications.py:294
+#, python-brace-format
+msgid "A new {verbose_name} has been created and ,assigned to you"
+msgstr ""
+
#: common/views.py:87 order/templates/order/purchase_order_detail.html:23
-#: order/views.py:102 part/views.py:191
+#: order/views.py:102 part/views.py:116
#: templates/patterns/wizard/upload.html:37
msgid "Upload File"
msgstr ""
#: common/views.py:88 order/views.py:103
#: part/templates/part/import_wizard/ajax_match_fields.html:45
-#: part/views.py:192 templates/patterns/wizard/match_fields.html:51
+#: part/views.py:117 templates/patterns/wizard/match_fields.html:51
msgid "Match Fields"
msgstr ""
@@ -2545,19 +2572,19 @@ msgstr ""
msgid "Parts imported"
msgstr ""
-#: common/views.py:507 order/templates/order/order_wizard/match_parts.html:19
+#: common/views.py:511 order/templates/order/order_wizard/match_parts.html:19
#: part/templates/part/import_wizard/match_references.html:19
#: templates/patterns/wizard/match_fields.html:26
#: templates/patterns/wizard/upload.html:35
msgid "Previous Step"
msgstr ""
-#: company/forms.py:16 part/forms.py:21
+#: company/forms.py:16 part/forms.py:18
#: templates/InvenTree/settings/mixins/urls.html:14
msgid "URL"
msgstr ""
-#: company/forms.py:17 part/forms.py:22
+#: company/forms.py:17 part/forms.py:19
msgid "Image URL"
msgstr ""
@@ -2571,7 +2598,7 @@ msgstr ""
#: company/models.py:104 company/templates/company/company_base.html:100
#: templates/InvenTree/settings/plugin_settings.html:55
-#: templates/js/translated/company.js:405
+#: templates/js/translated/company.js:399
msgid "Website"
msgstr ""
@@ -2644,9 +2671,9 @@ msgstr ""
msgid "Does this company manufacture parts?"
msgstr ""
-#: company/models.py:144 company/serializers.py:294
-#: company/templates/company/company_base.html:106 part/serializers.py:137
-#: part/serializers.py:168 stock/serializers.py:162
+#: company/models.py:144 company/serializers.py:296
+#: company/templates/company/company_base.html:106 part/serializers.py:139
+#: part/serializers.py:170 stock/serializers.py:162
msgid "Currency"
msgstr ""
@@ -2667,10 +2694,10 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:90
#: company/templates/company/supplier_part.html:103
#: stock/templates/stock/item_base.html:212
-#: templates/js/translated/company.js:389
-#: templates/js/translated/company.js:488
-#: templates/js/translated/company.js:632
-#: templates/js/translated/company.js:917 templates/js/translated/part.js:235
+#: templates/js/translated/company.js:383
+#: templates/js/translated/company.js:484
+#: templates/js/translated/company.js:617
+#: templates/js/translated/company.js:902 templates/js/translated/part.js:235
#: templates/js/translated/table_filters.js:411
msgid "Manufacturer"
msgstr "Nhà sản xuất"
@@ -2681,11 +2708,11 @@ msgstr ""
#: company/models.py:266 company/templates/company/manufacturer_part.html:101
#: company/templates/company/supplier_part.html:111
-#: templates/js/translated/company.js:255
-#: templates/js/translated/company.js:487
-#: templates/js/translated/company.js:648
-#: templates/js/translated/company.js:935 templates/js/translated/order.js:1907
-#: templates/js/translated/part.js:246 templates/js/translated/part.js:956
+#: templates/js/translated/company.js:256
+#: templates/js/translated/company.js:483
+#: templates/js/translated/company.js:633
+#: templates/js/translated/company.js:920 templates/js/translated/order.js:1907
+#: templates/js/translated/part.js:246 templates/js/translated/part.js:1000
msgid "MPN"
msgstr ""
@@ -2714,9 +2741,9 @@ msgstr ""
#: company/models.py:361
#: report/templates/report/inventree_test_report_base.html:95
-#: stock/models.py:2080 templates/js/translated/company.js:540
-#: templates/js/translated/company.js:763 templates/js/translated/part.js:776
-#: templates/js/translated/stock.js:1294
+#: stock/models.py:2084 templates/js/translated/company.js:531
+#: templates/js/translated/company.js:748 templates/js/translated/part.js:820
+#: templates/js/translated/stock.js:1304
msgid "Value"
msgstr ""
@@ -2724,10 +2751,10 @@ msgstr ""
msgid "Parameter value"
msgstr ""
-#: company/models.py:368 part/models.py:878 part/models.py:2339
+#: company/models.py:368 part/models.py:878 part/models.py:2327
#: part/templates/part/part_base.html:280
#: templates/InvenTree/settings/settings.html:351
-#: templates/js/translated/company.js:769 templates/js/translated/part.js:782
+#: templates/js/translated/company.js:754 templates/js/translated/part.js:826
msgid "Units"
msgstr ""
@@ -2740,13 +2767,14 @@ msgid "Linked manufacturer part must reference the same base part"
msgstr ""
#: company/models.py:487 company/templates/company/company_base.html:81
-#: company/templates/company/supplier_part.html:87 order/models.py:303
+#: company/templates/company/supplier_part.html:87 order/models.py:308
#: order/templates/order/order_base.html:112 part/bom.py:237 part/bom.py:265
#: stock/templates/stock/item_base.html:229
-#: templates/js/translated/company.js:254
-#: templates/js/translated/company.js:393
-#: templates/js/translated/company.js:891 templates/js/translated/order.js:1643
-#: templates/js/translated/part.js:216 templates/js/translated/part.js:924
+#: templates/email/overdue_purchase_order.html:16
+#: templates/js/translated/company.js:255
+#: templates/js/translated/company.js:387
+#: templates/js/translated/company.js:876 templates/js/translated/order.js:1643
+#: templates/js/translated/part.js:216 templates/js/translated/part.js:968
#: templates/js/translated/table_filters.js:415
msgid "Supplier"
msgstr "Nhà cung cấp"
@@ -2756,9 +2784,9 @@ msgid "Select supplier"
msgstr ""
#: company/models.py:493 company/templates/company/supplier_part.html:97
-#: part/bom.py:238 part/bom.py:266 templates/js/translated/company.js:253
+#: part/bom.py:238 part/bom.py:266 templates/js/translated/company.js:254
#: templates/js/translated/order.js:1894 templates/js/translated/part.js:227
-#: templates/js/translated/part.js:942
+#: templates/js/translated/part.js:986
msgid "SKU"
msgstr ""
@@ -2779,23 +2807,23 @@ msgid "Supplier part description"
msgstr ""
#: company/models.py:518 company/templates/company/supplier_part.html:125
-#: part/models.py:2573 part/templates/part/upload_bom.html:59
+#: part/models.py:2561 part/templates/part/upload_bom.html:59
#: report/templates/report/inventree_po_report.html:92
#: report/templates/report/inventree_so_report.html:93 stock/serializers.py:387
msgid "Note"
msgstr ""
-#: company/models.py:522 part/models.py:1688
+#: company/models.py:522 part/models.py:1683
msgid "base cost"
msgstr ""
-#: company/models.py:522 part/models.py:1688
+#: company/models.py:522 part/models.py:1683
msgid "Minimum charge (e.g. stocking fee)"
msgstr ""
#: company/models.py:524 company/templates/company/supplier_part.html:118
#: stock/models.py:608 stock/templates/stock/item_base.html:245
-#: templates/js/translated/company.js:967 templates/js/translated/stock.js:1912
+#: templates/js/translated/company.js:952 templates/js/translated/stock.js:1922
msgid "Packaging"
msgstr ""
@@ -2803,7 +2831,7 @@ msgstr ""
msgid "Part packaging"
msgstr ""
-#: company/models.py:526 part/models.py:1690
+#: company/models.py:526 part/models.py:1685
msgid "multiple"
msgstr ""
@@ -2825,7 +2853,7 @@ msgstr ""
#: company/templates/company/company_base.html:8
#: company/templates/company/company_base.html:12
-#: templates/InvenTree/search.html:177 templates/js/translated/company.js:378
+#: templates/InvenTree/search.html:177 templates/js/translated/company.js:372
msgid "Company"
msgstr ""
@@ -2843,7 +2871,7 @@ msgid "Edit company information"
msgstr ""
#: company/templates/company/company_base.html:34
-#: templates/js/translated/company.js:321
+#: templates/js/translated/company.js:315
msgid "Edit Company"
msgstr ""
@@ -2866,12 +2894,13 @@ msgstr ""
msgid "Download image from URL"
msgstr ""
-#: company/templates/company/company_base.html:86 order/models.py:649
+#: company/templates/company/company_base.html:86 order/models.py:665
#: order/templates/order/sales_order_base.html:116 stock/models.py:627
-#: stock/models.py:628 stock/serializers.py:758
+#: stock/models.py:628 stock/serializers.py:745
#: stock/templates/stock/item_base.html:401
-#: templates/js/translated/company.js:385 templates/js/translated/order.js:2458
-#: templates/js/translated/stock.js:2431
+#: templates/email/overdue_sales_order.html:16
+#: templates/js/translated/company.js:379 templates/js/translated/order.js:2458
+#: templates/js/translated/stock.js:2441
#: templates/js/translated/table_filters.js:419
msgid "Customer"
msgstr ""
@@ -2999,7 +3028,7 @@ msgid "Supplier List"
msgstr ""
#: company/templates/company/manufacturer_part.html:15 company/views.py:45
-#: part/templates/part/prices.html:170 templates/InvenTree/search.html:179
+#: part/templates/part/prices.html:172 templates/InvenTree/search.html:179
#: templates/navbar.html:49
msgid "Manufacturers"
msgstr ""
@@ -3012,12 +3041,12 @@ msgid "Order part"
msgstr ""
#: company/templates/company/manufacturer_part.html:39
-#: templates/js/translated/company.js:680
+#: templates/js/translated/company.js:665
msgid "Edit manufacturer part"
msgstr ""
#: company/templates/company/manufacturer_part.html:43
-#: templates/js/translated/company.js:681
+#: templates/js/translated/company.js:666
msgid "Delete manufacturer part"
msgstr ""
@@ -3032,7 +3061,7 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:119
#: company/templates/company/supplier_part.html:15 company/views.py:39
-#: part/templates/part/part_sidebar.html:35 part/templates/part/prices.html:166
+#: part/templates/part/part_sidebar.html:35 part/templates/part/prices.html:168
#: templates/InvenTree/search.html:189 templates/navbar.html:48
msgid "Suppliers"
msgstr ""
@@ -3092,18 +3121,18 @@ msgstr ""
#: company/templates/company/supplier_part.html:7
#: company/templates/company/supplier_part.html:24 stock/models.py:592
#: stock/templates/stock/item_base.html:238
-#: templates/js/translated/company.js:907 templates/js/translated/order.js:884
-#: templates/js/translated/stock.js:1869
+#: templates/js/translated/company.js:892 templates/js/translated/order.js:884
+#: templates/js/translated/stock.js:1879
msgid "Supplier Part"
msgstr ""
#: company/templates/company/supplier_part.html:38
-#: templates/js/translated/company.js:980
+#: templates/js/translated/company.js:965
msgid "Edit supplier part"
msgstr ""
#: company/templates/company/supplier_part.html:42
-#: templates/js/translated/company.js:981
+#: templates/js/translated/company.js:966
msgid "Delete supplier part"
msgstr ""
@@ -3123,7 +3152,7 @@ msgstr ""
#: company/templates/company/supplier_part.html:148
#: part/templates/part/detail.html:24 stock/templates/stock/location.html:177
-#: templates/js/translated/stock.js:380
+#: templates/js/translated/stock.js:379
msgid "New Stock Item"
msgstr ""
@@ -3144,7 +3173,7 @@ msgstr ""
#: company/templates/company/supplier_part.html:191
#: company/templates/company/supplier_part.html:305
-#: part/templates/part/prices.html:274 templates/js/translated/part.js:2046
+#: part/templates/part/prices.html:276 templates/js/translated/part.js:2142
msgid "Add Price Break"
msgstr ""
@@ -3153,12 +3182,12 @@ msgid "No price break information found"
msgstr ""
#: company/templates/company/supplier_part.html:231
-#: templates/js/translated/part.js:2056
+#: templates/js/translated/part.js:2152
msgid "Delete Price Break"
msgstr ""
#: company/templates/company/supplier_part.html:245
-#: templates/js/translated/part.js:2070
+#: templates/js/translated/part.js:2166
msgid "Edit Price Break"
msgstr ""
@@ -3180,9 +3209,9 @@ msgstr ""
#: stock/templates/stock/stock_app_base.html:10
#: templates/InvenTree/search.html:151
#: templates/InvenTree/settings/sidebar.html:43
-#: templates/js/translated/bom.js:554 templates/js/translated/part.js:678
-#: templates/js/translated/part.js:1226 templates/js/translated/part.js:1387
-#: templates/js/translated/stock.js:904 templates/js/translated/stock.js:1687
+#: templates/js/translated/bom.js:554 templates/js/translated/part.js:722
+#: templates/js/translated/part.js:1270 templates/js/translated/part.js:1431
+#: templates/js/translated/stock.js:903 templates/js/translated/stock.js:1697
#: templates/navbar.html:31
msgid "Stock"
msgstr "Kiện hàng"
@@ -3209,7 +3238,7 @@ msgstr ""
#: stock/templates/stock/location.html:173
#: stock/templates/stock/location_sidebar.html:7
#: templates/InvenTree/search.html:153 templates/js/translated/search.js:223
-#: templates/js/translated/stock.js:2307 users/models.py:39
+#: templates/js/translated/stock.js:2317 users/models.py:39
msgid "Stock Items"
msgstr ""
@@ -3238,20 +3267,20 @@ msgstr ""
msgid "New Company"
msgstr ""
-#: company/views.py:112 part/views.py:576
+#: company/views.py:112 part/views.py:501
msgid "Download Image"
msgstr ""
-#: company/views.py:139 part/views.py:606
+#: company/views.py:139 part/views.py:531
msgid "Image size exceeds maximum allowable size for download"
msgstr ""
-#: company/views.py:146 part/views.py:613
+#: company/views.py:146 part/views.py:538
#, python-brace-format
msgid "Invalid response: {code}"
msgstr ""
-#: company/views.py:155 part/views.py:622
+#: company/views.py:155 part/views.py:547
msgid "Supplied URL is not a valid image file"
msgstr ""
@@ -3320,313 +3349,314 @@ msgstr ""
msgid "Part query filters (comma-separated value of key=value pairs)"
msgstr ""
-#: order/models.py:133
+#: order/models.py:134
msgid "Order description"
msgstr ""
-#: order/models.py:135 order/models.py:1236
+#: order/models.py:136 order/models.py:1252
msgid "Link to external page"
msgstr ""
-#: order/models.py:143
+#: order/models.py:144
msgid "Created By"
msgstr ""
-#: order/models.py:150
+#: order/models.py:151
msgid "User or group responsible for this order"
msgstr ""
-#: order/models.py:155
+#: order/models.py:156
msgid "Order notes"
msgstr ""
-#: order/models.py:289 order/models.py:639
+#: order/models.py:294 order/models.py:655
msgid "Order reference"
msgstr ""
-#: order/models.py:294 order/models.py:654
+#: order/models.py:299 order/models.py:670
msgid "Purchase order status"
msgstr ""
-#: order/models.py:304
+#: order/models.py:309
msgid "Company from which the items are being ordered"
msgstr ""
-#: order/models.py:307 order/templates/order/order_base.html:124
+#: order/models.py:312 order/templates/order/order_base.html:124
#: templates/js/translated/order.js:1652
msgid "Supplier Reference"
msgstr ""
-#: order/models.py:307
+#: order/models.py:312
msgid "Supplier order reference code"
msgstr ""
-#: order/models.py:314
+#: order/models.py:319
msgid "received by"
msgstr ""
-#: order/models.py:319
+#: order/models.py:324
msgid "Issue Date"
msgstr ""
-#: order/models.py:320
+#: order/models.py:325
msgid "Date order was issued"
msgstr ""
-#: order/models.py:325
+#: order/models.py:330
msgid "Target Delivery Date"
msgstr ""
-#: order/models.py:326
+#: order/models.py:331
msgid "Expected date for order delivery. Order will be overdue after this date."
msgstr ""
-#: order/models.py:332
+#: order/models.py:337
msgid "Date order was completed"
msgstr ""
-#: order/models.py:368
+#: order/models.py:373
msgid "Part supplier must match PO supplier"
msgstr ""
-#: order/models.py:512
+#: order/models.py:517
msgid "Quantity must be a positive number"
msgstr ""
-#: order/models.py:650
+#: order/models.py:666
msgid "Company to which the items are being sold"
msgstr ""
-#: order/models.py:656
+#: order/models.py:672
msgid "Customer Reference "
msgstr ""
-#: order/models.py:656
+#: order/models.py:672
msgid "Customer order reference code"
msgstr ""
-#: order/models.py:661
+#: order/models.py:677
msgid "Target date for order completion. Order will be overdue after this date."
msgstr ""
-#: order/models.py:664 order/models.py:1190
+#: order/models.py:680 order/models.py:1206
#: templates/js/translated/order.js:2505 templates/js/translated/order.js:2656
msgid "Shipment Date"
msgstr ""
-#: order/models.py:671
+#: order/models.py:687
msgid "shipped by"
msgstr ""
-#: order/models.py:726
+#: order/models.py:742
msgid "Order cannot be completed as no parts have been assigned"
msgstr ""
-#: order/models.py:730
+#: order/models.py:746
msgid "Only a pending order can be marked as complete"
msgstr ""
-#: order/models.py:733
+#: order/models.py:749
msgid "Order cannot be completed as there are incomplete shipments"
msgstr ""
-#: order/models.py:736
+#: order/models.py:752
msgid "Order cannot be completed as there are incomplete line items"
msgstr ""
-#: order/models.py:910
+#: order/models.py:926
msgid "Item quantity"
msgstr ""
-#: order/models.py:916
+#: order/models.py:932
msgid "Line item reference"
msgstr ""
-#: order/models.py:918
+#: order/models.py:934
msgid "Line item notes"
msgstr ""
-#: order/models.py:923
+#: order/models.py:939
msgid "Target shipping date for this line item"
msgstr ""
-#: order/models.py:941
+#: order/models.py:957
msgid "Context"
msgstr ""
-#: order/models.py:942
+#: order/models.py:958
msgid "Additional context for this line"
msgstr ""
-#: order/models.py:950
+#: order/models.py:966
msgid "Unit price"
msgstr ""
-#: order/models.py:980
+#: order/models.py:996
msgid "Supplier part must match supplier"
msgstr ""
-#: order/models.py:988
+#: order/models.py:1004
msgid "deleted"
msgstr ""
-#: order/models.py:994 order/models.py:1074 order/models.py:1099
-#: order/models.py:1184 order/models.py:1320
+#: order/models.py:1010 order/models.py:1090 order/models.py:1115
+#: order/models.py:1200 order/models.py:1336
#: templates/js/translated/order.js:3112
msgid "Order"
msgstr ""
-#: order/models.py:995 order/models.py:1074
+#: order/models.py:1011 order/models.py:1090
#: order/templates/order/order_base.html:9
#: order/templates/order/order_base.html:18
#: report/templates/report/inventree_po_report.html:76
#: stock/templates/stock/item_base.html:184
+#: templates/email/overdue_purchase_order.html:15
#: templates/js/translated/order.js:885 templates/js/translated/order.js:1621
-#: templates/js/translated/part.js:899 templates/js/translated/stock.js:1846
-#: templates/js/translated/stock.js:2412
+#: templates/js/translated/part.js:943 templates/js/translated/stock.js:1856
+#: templates/js/translated/stock.js:2422
msgid "Purchase Order"
msgstr "Đơn hàng"
-#: order/models.py:1013
+#: order/models.py:1029
msgid "Supplier part"
msgstr ""
-#: order/models.py:1020 order/templates/order/order_base.html:169
+#: order/models.py:1036 order/templates/order/order_base.html:169
#: templates/js/translated/order.js:1318 templates/js/translated/order.js:2009
-#: templates/js/translated/part.js:993 templates/js/translated/part.js:1020
+#: templates/js/translated/part.js:1037 templates/js/translated/part.js:1064
#: templates/js/translated/table_filters.js:330
msgid "Received"
msgstr ""
-#: order/models.py:1021
+#: order/models.py:1037
msgid "Number of items received"
msgstr ""
-#: order/models.py:1028 part/templates/part/prices.html:179 stock/models.py:722
+#: order/models.py:1044 part/templates/part/prices.html:181 stock/models.py:722
#: stock/serializers.py:153 stock/templates/stock/item_base.html:191
-#: templates/js/translated/stock.js:1900
+#: templates/js/translated/stock.js:1910
msgid "Purchase Price"
msgstr "Giá mua"
-#: order/models.py:1029
+#: order/models.py:1045
msgid "Unit purchase price"
msgstr ""
-#: order/models.py:1037
+#: order/models.py:1053
msgid "Where does the Purchaser want this item to be stored?"
msgstr ""
-#: order/models.py:1109 part/templates/part/part_pricing.html:112
-#: part/templates/part/prices.html:119 part/templates/part/prices.html:288
+#: order/models.py:1125 part/templates/part/part_pricing.html:115
+#: part/templates/part/prices.html:121 part/templates/part/prices.html:290
msgid "Sale Price"
msgstr ""
-#: order/models.py:1110
+#: order/models.py:1126
msgid "Unit sale price"
msgstr ""
-#: order/models.py:1115
+#: order/models.py:1131
msgid "Shipped quantity"
msgstr ""
-#: order/models.py:1191
+#: order/models.py:1207
msgid "Date of shipment"
msgstr ""
-#: order/models.py:1198
+#: order/models.py:1214
msgid "Checked By"
msgstr ""
-#: order/models.py:1199
+#: order/models.py:1215
msgid "User who checked this shipment"
msgstr ""
-#: order/models.py:1207
+#: order/models.py:1223
msgid "Shipment number"
msgstr ""
-#: order/models.py:1214
+#: order/models.py:1230
msgid "Shipment notes"
msgstr ""
-#: order/models.py:1221
+#: order/models.py:1237
msgid "Tracking Number"
msgstr ""
-#: order/models.py:1222
+#: order/models.py:1238
msgid "Shipment tracking information"
msgstr ""
-#: order/models.py:1229
+#: order/models.py:1245
msgid "Invoice Number"
msgstr ""
-#: order/models.py:1230
+#: order/models.py:1246
msgid "Reference number for associated invoice"
msgstr ""
-#: order/models.py:1248
+#: order/models.py:1264
msgid "Shipment has already been sent"
msgstr ""
-#: order/models.py:1251
+#: order/models.py:1267
msgid "Shipment has no allocated stock items"
msgstr ""
-#: order/models.py:1354 order/models.py:1356
+#: order/models.py:1370 order/models.py:1372
msgid "Stock item has not been assigned"
msgstr ""
-#: order/models.py:1360
+#: order/models.py:1376
msgid "Cannot allocate stock item to a line with a different part"
msgstr ""
-#: order/models.py:1362
+#: order/models.py:1378
msgid "Cannot allocate stock to a line without a part"
msgstr ""
-#: order/models.py:1365
+#: order/models.py:1381
msgid "Allocation quantity cannot exceed stock quantity"
msgstr ""
-#: order/models.py:1369
+#: order/models.py:1385
msgid "StockItem is over-allocated"
msgstr ""
-#: order/models.py:1375 order/serializers.py:1045
+#: order/models.py:1391 order/serializers.py:1047
msgid "Quantity must be 1 for serialized stock item"
msgstr ""
-#: order/models.py:1378
+#: order/models.py:1394
msgid "Sales order does not match shipment"
msgstr ""
-#: order/models.py:1379
+#: order/models.py:1395
msgid "Shipment does not match sales order"
msgstr ""
-#: order/models.py:1387
+#: order/models.py:1403
msgid "Line"
msgstr ""
-#: order/models.py:1395 order/serializers.py:1149 order/serializers.py:1273
+#: order/models.py:1411 order/serializers.py:1151 order/serializers.py:1275
#: templates/js/translated/model_renderers.js:301
msgid "Shipment"
msgstr ""
-#: order/models.py:1396
+#: order/models.py:1412
msgid "Sales order shipment reference"
msgstr ""
-#: order/models.py:1408 templates/InvenTree/notifications/notifications.html:70
+#: order/models.py:1424 templates/InvenTree/notifications/notifications.html:70
msgid "Item"
msgstr ""
-#: order/models.py:1409
+#: order/models.py:1425
msgid "Select stock item to allocate"
msgstr ""
-#: order/models.py:1412
+#: order/models.py:1428
msgid "Enter stock allocation quantity"
msgstr ""
@@ -3662,7 +3692,7 @@ msgstr ""
msgid "Purchase order must match supplier"
msgstr ""
-#: order/serializers.py:406 order/serializers.py:1117
+#: order/serializers.py:406 order/serializers.py:1119
msgid "Line Item"
msgstr ""
@@ -3710,42 +3740,60 @@ msgstr ""
msgid "Supplied barcode values must be unique"
msgstr ""
-#: order/serializers.py:866
+#: order/serializers.py:868
msgid "Sale price currency"
msgstr ""
-#: order/serializers.py:947
+#: order/serializers.py:949
msgid "No shipment details provided"
msgstr ""
-#: order/serializers.py:1006 order/serializers.py:1126
+#: order/serializers.py:1008 order/serializers.py:1128
msgid "Line item is not associated with this order"
msgstr ""
-#: order/serializers.py:1028
+#: order/serializers.py:1030
msgid "Quantity must be positive"
msgstr ""
-#: order/serializers.py:1139
+#: order/serializers.py:1141
msgid "Enter serial numbers to allocate"
msgstr ""
-#: order/serializers.py:1161 order/serializers.py:1281
+#: order/serializers.py:1163 order/serializers.py:1283
msgid "Shipment has already been shipped"
msgstr ""
-#: order/serializers.py:1164 order/serializers.py:1284
+#: order/serializers.py:1166 order/serializers.py:1286
msgid "Shipment is not associated with this order"
msgstr ""
-#: order/serializers.py:1214
+#: order/serializers.py:1216
msgid "No match found for the following serial numbers"
msgstr ""
-#: order/serializers.py:1224
+#: order/serializers.py:1226
msgid "The following serial numbers are already allocated"
msgstr ""
+#: order/tasks.py:26
+msgid "Overdue Purchase Order"
+msgstr ""
+
+#: order/tasks.py:31
+#, python-brace-format
+msgid "Purchase order {po} is now overdue"
+msgstr ""
+
+#: order/tasks.py:88
+msgid "Overdue Sales Order"
+msgstr ""
+
+#: order/tasks.py:93
+#, python-brace-format
+msgid "Sales order {so} is now overdue"
+msgstr ""
+
#: order/templates/order/order_base.html:33
msgid "Print purchase order report"
msgstr ""
@@ -3870,8 +3918,8 @@ msgstr ""
#: templates/js/translated/bom.js:77 templates/js/translated/build.js:427
#: templates/js/translated/build.js:579 templates/js/translated/build.js:1972
#: templates/js/translated/order.js:833 templates/js/translated/order.js:1265
-#: templates/js/translated/order.js:2731 templates/js/translated/stock.js:570
-#: templates/js/translated/stock.js:738
+#: templates/js/translated/order.js:2731 templates/js/translated/stock.js:569
+#: templates/js/translated/stock.js:737
#: templates/patterns/wizard/match_fields.html:70
msgid "Remove row"
msgstr ""
@@ -3990,7 +4038,7 @@ msgid "Pending Shipments"
msgstr ""
#: order/templates/order/sales_order_detail.html:70
-#: templates/attachment_table.html:6 templates/js/translated/bom.js:1053
+#: templates/attachment_table.html:6 templates/js/translated/bom.js:1047
#: templates/js/translated/build.js:1880
msgid "Actions"
msgstr ""
@@ -4021,47 +4069,47 @@ msgstr ""
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr ""
-#: part/api.py:481
+#: part/api.py:482
msgid "Incoming Purchase Order"
msgstr ""
-#: part/api.py:501
+#: part/api.py:502
msgid "Outgoing Sales Order"
msgstr ""
-#: part/api.py:519
+#: part/api.py:520
msgid "Stock produced by Build Order"
msgstr ""
-#: part/api.py:551
+#: part/api.py:552
msgid "Stock required for Build Order"
msgstr ""
-#: part/api.py:637
+#: part/api.py:638
msgid "Valid"
msgstr ""
-#: part/api.py:638
+#: part/api.py:639
msgid "Validate entire Bill of Materials"
msgstr ""
-#: part/api.py:644
+#: part/api.py:645
msgid "This option must be selected"
msgstr ""
-#: part/api.py:1010
+#: part/api.py:1011
msgid "Must be greater than zero"
msgstr ""
-#: part/api.py:1014
+#: part/api.py:1015
msgid "Must be a valid quantity"
msgstr ""
-#: part/api.py:1029
+#: part/api.py:1030
msgid "Specify location for initial part stock"
msgstr ""
-#: part/api.py:1060 part/api.py:1064 part/api.py:1079 part/api.py:1083
+#: part/api.py:1061 part/api.py:1065 part/api.py:1080 part/api.py:1084
msgid "This field is required"
msgstr ""
@@ -4080,17 +4128,13 @@ msgid "Available Stock"
msgstr ""
#: part/bom.py:130 part/templates/part/part_base.html:207
-#: templates/js/translated/part.js:517 templates/js/translated/part.js:537
-#: templates/js/translated/part.js:1229 templates/js/translated/part.js:1401
-#: templates/js/translated/part.js:1417
+#: templates/js/translated/part.js:561 templates/js/translated/part.js:581
+#: templates/js/translated/part.js:1273 templates/js/translated/part.js:1445
+#: templates/js/translated/part.js:1461
msgid "On Order"
msgstr ""
-#: part/forms.py:59
-msgid "Select part category"
-msgstr ""
-
-#: part/forms.py:69
+#: part/forms.py:60
msgid "Input quantity for price calculation"
msgstr ""
@@ -4106,7 +4150,7 @@ msgstr ""
msgid "Default keywords for parts in this category"
msgstr ""
-#: part/models.py:115 part/models.py:2415 part/templates/part/category.html:15
+#: part/models.py:115 part/models.py:2403 part/templates/part/category.html:15
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr ""
@@ -4123,7 +4167,7 @@ msgstr ""
#: part/templates/part/category_sidebar.html:9
#: templates/InvenTree/index.html:85 templates/InvenTree/search.html:82
#: templates/InvenTree/settings/sidebar.html:39
-#: templates/js/translated/part.js:1768 templates/js/translated/search.js:144
+#: templates/js/translated/part.js:1864 templates/js/translated/search.js:144
#: templates/navbar.html:24 users/models.py:37
msgid "Parts"
msgstr "Nguyên liệu"
@@ -4153,7 +4197,7 @@ msgstr ""
msgid "Duplicate IPN not allowed in part settings"
msgstr ""
-#: part/models.py:738 part/models.py:2469
+#: part/models.py:738 part/models.py:2457
msgid "Part name"
msgstr ""
@@ -4186,12 +4230,11 @@ msgstr ""
msgid "Part keywords to improve visibility in search results"
msgstr ""
-#: part/models.py:776 part/models.py:2171 part/models.py:2414
+#: part/models.py:776 part/models.py:2159 part/models.py:2402
#: part/templates/part/part_base.html:257
-#: part/templates/part/set_category.html:15
#: templates/InvenTree/notifications/notifications.html:65
#: templates/InvenTree/settings/settings.html:231
-#: templates/js/translated/part.js:1369
+#: templates/js/translated/part.js:1413 templates/js/translated/part.js:1639
msgid "Category"
msgstr ""
@@ -4200,8 +4243,8 @@ msgid "Part category"
msgstr ""
#: part/models.py:782 part/templates/part/part_base.html:266
-#: templates/js/translated/part.js:666 templates/js/translated/part.js:1322
-#: templates/js/translated/stock.js:1659
+#: templates/js/translated/part.js:710 templates/js/translated/part.js:1366
+#: templates/js/translated/stock.js:1669
msgid "IPN"
msgstr ""
@@ -4214,7 +4257,7 @@ msgid "Part revision or version number"
msgstr ""
#: part/models.py:790 part/templates/part/part_base.html:273
-#: report/models.py:170 templates/js/translated/part.js:670
+#: report/models.py:170 templates/js/translated/part.js:714
msgid "Revision"
msgstr ""
@@ -4302,317 +4345,321 @@ msgstr ""
msgid "Creation User"
msgstr ""
-#: part/models.py:1690
+#: part/models.py:1685
msgid "Sell multiple"
msgstr ""
-#: part/models.py:2218
+#: part/models.py:2206
msgid "Test templates can only be created for trackable parts"
msgstr ""
-#: part/models.py:2235
+#: part/models.py:2223
msgid "Test with this name already exists for this part"
msgstr ""
-#: part/models.py:2255 templates/js/translated/part.js:1819
-#: templates/js/translated/stock.js:1274
+#: part/models.py:2243 templates/js/translated/part.js:1915
+#: templates/js/translated/stock.js:1284
msgid "Test Name"
msgstr ""
-#: part/models.py:2256
+#: part/models.py:2244
msgid "Enter a name for the test"
msgstr ""
-#: part/models.py:2261
+#: part/models.py:2249
msgid "Test Description"
msgstr ""
-#: part/models.py:2262
+#: part/models.py:2250
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:2267 templates/js/translated/part.js:1828
+#: part/models.py:2255 templates/js/translated/part.js:1924
#: templates/js/translated/table_filters.js:294
msgid "Required"
msgstr ""
-#: part/models.py:2268
+#: part/models.py:2256
msgid "Is this test required to pass?"
msgstr ""
-#: part/models.py:2273 templates/js/translated/part.js:1836
+#: part/models.py:2261 templates/js/translated/part.js:1932
msgid "Requires Value"
msgstr ""
-#: part/models.py:2274
+#: part/models.py:2262
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:2279 templates/js/translated/part.js:1843
+#: part/models.py:2267 templates/js/translated/part.js:1939
msgid "Requires Attachment"
msgstr ""
-#: part/models.py:2280
+#: part/models.py:2268
msgid "Does this test require a file attachment when adding a test result?"
msgstr ""
-#: part/models.py:2288
+#: part/models.py:2276
#, python-brace-format
msgid "Illegal character in template name ({c})"
msgstr ""
-#: part/models.py:2324
+#: part/models.py:2312
msgid "Parameter template name must be unique"
msgstr ""
-#: part/models.py:2332
+#: part/models.py:2320
msgid "Parameter Name"
msgstr ""
-#: part/models.py:2339
+#: part/models.py:2327
msgid "Parameter Units"
msgstr ""
-#: part/models.py:2370
+#: part/models.py:2358
msgid "Parent Part"
msgstr ""
-#: part/models.py:2372 part/models.py:2420 part/models.py:2421
+#: part/models.py:2360 part/models.py:2408 part/models.py:2409
#: templates/InvenTree/settings/settings.html:226
msgid "Parameter Template"
msgstr ""
-#: part/models.py:2374
+#: part/models.py:2362
msgid "Data"
msgstr ""
-#: part/models.py:2374
+#: part/models.py:2362
msgid "Parameter Value"
msgstr ""
-#: part/models.py:2425 templates/InvenTree/settings/settings.html:235
+#: part/models.py:2413 templates/InvenTree/settings/settings.html:235
msgid "Default Value"
msgstr ""
-#: part/models.py:2426
+#: part/models.py:2414
msgid "Default Parameter Value"
msgstr ""
-#: part/models.py:2461
+#: part/models.py:2449
msgid "Part ID or part name"
msgstr ""
-#: part/models.py:2464 templates/js/translated/model_renderers.js:200
+#: part/models.py:2452 templates/js/translated/model_renderers.js:200
msgid "Part ID"
msgstr ""
-#: part/models.py:2465
+#: part/models.py:2453
msgid "Unique part ID value"
msgstr ""
-#: part/models.py:2468
+#: part/models.py:2456
msgid "Part Name"
msgstr ""
-#: part/models.py:2472
+#: part/models.py:2460
msgid "Part IPN"
msgstr ""
-#: part/models.py:2473
+#: part/models.py:2461
msgid "Part IPN value"
msgstr ""
-#: part/models.py:2476
+#: part/models.py:2464
msgid "Level"
msgstr ""
-#: part/models.py:2477
+#: part/models.py:2465
msgid "BOM level"
msgstr ""
-#: part/models.py:2546
+#: part/models.py:2534
msgid "Select parent part"
msgstr ""
-#: part/models.py:2554
+#: part/models.py:2542
msgid "Sub part"
msgstr ""
-#: part/models.py:2555
+#: part/models.py:2543
msgid "Select part to be used in BOM"
msgstr ""
-#: part/models.py:2561
+#: part/models.py:2549
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:2563 part/templates/part/upload_bom.html:58
-#: templates/js/translated/bom.js:877 templates/js/translated/bom.js:971
+#: part/models.py:2551 part/templates/part/upload_bom.html:58
+#: templates/js/translated/bom.js:871 templates/js/translated/bom.js:965
#: templates/js/translated/table_filters.js:92
msgid "Optional"
msgstr ""
-#: part/models.py:2563
+#: part/models.py:2551
msgid "This BOM item is optional"
msgstr ""
-#: part/models.py:2566 part/templates/part/upload_bom.html:55
+#: part/models.py:2554 part/templates/part/upload_bom.html:55
msgid "Overage"
msgstr ""
-#: part/models.py:2567
+#: part/models.py:2555
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr ""
-#: part/models.py:2570
+#: part/models.py:2558
msgid "BOM item reference"
msgstr ""
-#: part/models.py:2573
+#: part/models.py:2561
msgid "BOM item notes"
msgstr ""
-#: part/models.py:2575
+#: part/models.py:2563
msgid "Checksum"
msgstr ""
-#: part/models.py:2575
+#: part/models.py:2563
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:2579 part/templates/part/upload_bom.html:57
-#: templates/js/translated/bom.js:988
+#: part/models.py:2567 part/templates/part/upload_bom.html:57
+#: templates/js/translated/bom.js:982
#: templates/js/translated/table_filters.js:68
#: templates/js/translated/table_filters.js:88
msgid "Inherited"
msgstr ""
-#: part/models.py:2580
+#: part/models.py:2568
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr ""
-#: part/models.py:2585 part/templates/part/upload_bom.html:56
-#: templates/js/translated/bom.js:980
+#: part/models.py:2573 part/templates/part/upload_bom.html:56
+#: templates/js/translated/bom.js:974
msgid "Allow Variants"
msgstr ""
-#: part/models.py:2586
+#: part/models.py:2574
msgid "Stock items for variant parts can be used for this BOM item"
msgstr ""
-#: part/models.py:2664 stock/models.py:460
+#: part/models.py:2652 stock/models.py:460
msgid "Quantity must be integer value for trackable parts"
msgstr ""
-#: part/models.py:2673 part/models.py:2675
+#: part/models.py:2661 part/models.py:2663
msgid "Sub part must be specified"
msgstr ""
-#: part/models.py:2780
+#: part/models.py:2768
msgid "BOM Item Substitute"
msgstr ""
-#: part/models.py:2801
+#: part/models.py:2789
msgid "Substitute part cannot be the same as the master part"
msgstr ""
-#: part/models.py:2814
+#: part/models.py:2802
msgid "Parent BOM item"
msgstr ""
-#: part/models.py:2822
+#: part/models.py:2810
msgid "Substitute part"
msgstr ""
-#: part/models.py:2833
+#: part/models.py:2825
msgid "Part 1"
msgstr ""
-#: part/models.py:2837
+#: part/models.py:2829
msgid "Part 2"
msgstr ""
-#: part/models.py:2837
+#: part/models.py:2829
msgid "Select Related Part"
msgstr ""
-#: part/models.py:2868
-msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique"
+#: part/models.py:2847
+msgid "Part relationship cannot be created between a part and itself"
msgstr ""
-#: part/serializers.py:138 part/serializers.py:169 stock/serializers.py:163
+#: part/models.py:2851
+msgid "Duplicate relationship already exists"
+msgstr ""
+
+#: part/serializers.py:140 part/serializers.py:171 stock/serializers.py:163
msgid "Purchase currency of this stock item"
msgstr ""
-#: part/serializers.py:794
+#: part/serializers.py:796
msgid "Select part to copy BOM from"
msgstr ""
-#: part/serializers.py:802
+#: part/serializers.py:804
msgid "Remove Existing Data"
msgstr ""
-#: part/serializers.py:803
+#: part/serializers.py:805
msgid "Remove existing BOM items before copying"
msgstr ""
-#: part/serializers.py:808
+#: part/serializers.py:810
msgid "Include Inherited"
msgstr ""
-#: part/serializers.py:809
+#: part/serializers.py:811
msgid "Include BOM items which are inherited from templated parts"
msgstr ""
-#: part/serializers.py:814
+#: part/serializers.py:816
msgid "Skip Invalid Rows"
msgstr ""
-#: part/serializers.py:815
+#: part/serializers.py:817
msgid "Enable this option to skip invalid rows"
msgstr ""
-#: part/serializers.py:820
+#: part/serializers.py:822
msgid "Copy Substitute Parts"
msgstr ""
-#: part/serializers.py:821
+#: part/serializers.py:823
msgid "Copy substitute parts when duplicate BOM items"
msgstr ""
-#: part/serializers.py:861
+#: part/serializers.py:863
msgid "Clear Existing BOM"
msgstr ""
-#: part/serializers.py:862
+#: part/serializers.py:864
msgid "Delete existing BOM items before uploading"
msgstr ""
-#: part/serializers.py:892
+#: part/serializers.py:894
msgid "No part column specified"
msgstr ""
-#: part/serializers.py:935
+#: part/serializers.py:937
msgid "Multiple matching parts found"
msgstr ""
-#: part/serializers.py:938
+#: part/serializers.py:940
msgid "No matching part found"
msgstr ""
-#: part/serializers.py:941
+#: part/serializers.py:943
msgid "Part is not designated as a component"
msgstr ""
-#: part/serializers.py:950
+#: part/serializers.py:952
msgid "Quantity not provided"
msgstr ""
-#: part/serializers.py:958
+#: part/serializers.py:960
msgid "Invalid quantity"
msgstr ""
-#: part/serializers.py:979
+#: part/serializers.py:981
msgid "At least one BOM item is required"
msgstr ""
@@ -5088,10 +5135,10 @@ msgid "Part is virtual (not a physical part)"
msgstr ""
#: part/templates/part/part_base.html:143
-#: templates/js/translated/company.js:623
-#: templates/js/translated/company.js:882
+#: templates/js/translated/company.js:608
+#: templates/js/translated/company.js:867
#: templates/js/translated/model_renderers.js:192
-#: templates/js/translated/part.js:581 templates/js/translated/part.js:658
+#: templates/js/translated/part.js:625 templates/js/translated/part.js:702
msgid "Inactive"
msgstr ""
@@ -5120,13 +5167,13 @@ msgstr ""
msgid "Allocated to Sales Orders"
msgstr ""
-#: part/templates/part/part_base.html:232 templates/js/translated/bom.js:1009
+#: part/templates/part/part_base.html:232 templates/js/translated/bom.js:1003
msgid "Can Build"
msgstr ""
-#: part/templates/part/part_base.html:238 templates/js/translated/part.js:520
-#: templates/js/translated/part.js:540 templates/js/translated/part.js:1233
-#: templates/js/translated/part.js:1405 templates/js/translated/part.js:1421
+#: part/templates/part/part_base.html:238 templates/js/translated/part.js:564
+#: templates/js/translated/part.js:584 templates/js/translated/part.js:1277
+#: templates/js/translated/part.js:1449 templates/js/translated/part.js:1465
msgid "Building"
msgstr ""
@@ -5143,7 +5190,7 @@ msgstr "Số seri mới nhất"
msgid "Search for serial number"
msgstr ""
-#: part/templates/part/part_base.html:443 part/templates/part/prices.html:147
+#: part/templates/part/part_base.html:443 part/templates/part/prices.html:149
msgid "Calculate"
msgstr ""
@@ -5161,54 +5208,55 @@ msgstr ""
#: part/templates/part/part_pricing.html:26
#: part/templates/part/part_pricing.html:52
-#: part/templates/part/part_pricing.html:100
-#: part/templates/part/part_pricing.html:115 part/templates/part/prices.html:28
-#: part/templates/part/prices.html:55 part/templates/part/prices.html:106
-#: part/templates/part/prices.html:123
+#: part/templates/part/part_pricing.html:103
+#: part/templates/part/part_pricing.html:118 part/templates/part/prices.html:28
+#: part/templates/part/prices.html:55 part/templates/part/prices.html:108
+#: part/templates/part/prices.html:125
msgid "Unit Cost"
msgstr ""
#: part/templates/part/part_pricing.html:32
#: part/templates/part/part_pricing.html:58
-#: part/templates/part/part_pricing.html:104
-#: part/templates/part/part_pricing.html:119 part/templates/part/prices.html:35
-#: part/templates/part/prices.html:62 part/templates/part/prices.html:111
-#: part/templates/part/prices.html:128
+#: part/templates/part/part_pricing.html:107
+#: part/templates/part/part_pricing.html:122 part/templates/part/prices.html:35
+#: part/templates/part/prices.html:62 part/templates/part/prices.html:113
+#: part/templates/part/prices.html:130
msgid "Total Cost"
msgstr ""
#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:43
-#: templates/js/translated/bom.js:963
+#: templates/js/translated/bom.js:957
msgid "No supplier pricing available"
msgstr ""
#: part/templates/part/part_pricing.html:48 part/templates/part/prices.html:52
-#: part/templates/part/prices.html:246
+#: part/templates/part/prices.html:248
msgid "BOM Pricing"
msgstr ""
-#: part/templates/part/part_pricing.html:65 part/templates/part/prices.html:72
+#: part/templates/part/part_pricing.html:66 part/templates/part/prices.html:72
msgid "Unit Purchase Price"
msgstr ""
-#: part/templates/part/part_pricing.html:71 part/templates/part/prices.html:79
+#: part/templates/part/part_pricing.html:72 part/templates/part/prices.html:79
msgid "Total Purchase Price"
msgstr ""
-#: part/templates/part/part_pricing.html:81 part/templates/part/prices.html:89
+#: part/templates/part/part_pricing.html:82 part/templates/part/prices.html:89
msgid "Note: BOM pricing is incomplete for this part"
msgstr ""
-#: part/templates/part/part_pricing.html:88 part/templates/part/prices.html:96
+#: part/templates/part/part_pricing.html:91 part/templates/part/prices.html:98
msgid "No BOM pricing available"
msgstr ""
-#: part/templates/part/part_pricing.html:97 part/templates/part/prices.html:105
+#: part/templates/part/part_pricing.html:100
+#: part/templates/part/prices.html:107
msgid "Internal Price"
msgstr ""
-#: part/templates/part/part_pricing.html:128
-#: part/templates/part/prices.html:137
+#: part/templates/part/part_pricing.html:131
+#: part/templates/part/prices.html:139
msgid "No pricing information is available for this part."
msgstr ""
@@ -5232,43 +5280,6 @@ msgstr ""
msgid "Select from existing images"
msgstr ""
-#: part/templates/part/partial_delete.html:9
-#, python-format
-msgid "Part '%(full_name)s' cannot be deleted as it is still marked as active.\n"
-"
Disable the \"Active\" part attribute and re-try.\n"
-" "
-msgstr ""
-
-#: part/templates/part/partial_delete.html:17
-#, python-format
-msgid "Are you sure you want to delete part '%(full_name)s'?"
-msgstr ""
-
-#: part/templates/part/partial_delete.html:22
-#, python-format
-msgid "This part is used in BOMs for %(count)s other parts. If you delete this part, the BOMs for the following parts will be updated"
-msgstr ""
-
-#: part/templates/part/partial_delete.html:32
-#, python-format
-msgid "There are %(count)s stock entries defined for this part. If you delete this part, the following stock entries will also be deleted:"
-msgstr ""
-
-#: part/templates/part/partial_delete.html:43
-#, python-format
-msgid "There are %(count)s manufacturers defined for this part. If you delete this part, the following manufacturer parts will also be deleted:"
-msgstr ""
-
-#: part/templates/part/partial_delete.html:54
-#, python-format
-msgid "There are %(count)s suppliers defined for this part. If you delete this part, the following supplier parts will also be deleted:"
-msgstr ""
-
-#: part/templates/part/partial_delete.html:67
-#, python-format
-msgid "There are %(count)s unique parts tracked for '%(full_name)s'. Deleting this part will permanently remove this tracking information."
-msgstr ""
-
#: part/templates/part/prices.html:19
msgid "Pricing ranges"
msgstr ""
@@ -5285,66 +5296,58 @@ msgstr ""
msgid "Show BOM cost"
msgstr ""
-#: part/templates/part/prices.html:120
+#: part/templates/part/prices.html:122
msgid "Show sale cost"
msgstr ""
-#: part/templates/part/prices.html:121
+#: part/templates/part/prices.html:123
msgid "Show sale price"
msgstr ""
-#: part/templates/part/prices.html:143
+#: part/templates/part/prices.html:145
msgid "Calculation parameters"
msgstr ""
-#: part/templates/part/prices.html:158 templates/js/translated/bom.js:957
+#: part/templates/part/prices.html:160 templates/js/translated/bom.js:951
msgid "Supplier Cost"
msgstr ""
-#: part/templates/part/prices.html:159 part/templates/part/prices.html:180
-#: part/templates/part/prices.html:204 part/templates/part/prices.html:234
-#: part/templates/part/prices.html:260 part/templates/part/prices.html:289
+#: part/templates/part/prices.html:161 part/templates/part/prices.html:182
+#: part/templates/part/prices.html:206 part/templates/part/prices.html:236
+#: part/templates/part/prices.html:262 part/templates/part/prices.html:291
msgid "Jump to overview"
msgstr ""
-#: part/templates/part/prices.html:184
+#: part/templates/part/prices.html:186
msgid "Stock Pricing"
msgstr ""
-#: part/templates/part/prices.html:193
+#: part/templates/part/prices.html:195
msgid "No stock pricing history is available for this part."
msgstr ""
-#: part/templates/part/prices.html:203
+#: part/templates/part/prices.html:205
msgid "Internal Cost"
msgstr ""
-#: part/templates/part/prices.html:218
+#: part/templates/part/prices.html:220
msgid "Add Internal Price Break"
msgstr ""
-#: part/templates/part/prices.html:233
+#: part/templates/part/prices.html:235
msgid "BOM Cost"
msgstr ""
-#: part/templates/part/prices.html:259
+#: part/templates/part/prices.html:261
msgid "Sale Cost"
msgstr ""
-#: part/templates/part/prices.html:300
+#: part/templates/part/prices.html:302
msgid "No sale pice history available for this part."
msgstr ""
-#: part/templates/part/set_category.html:9
-msgid "Set category for the following parts"
-msgstr ""
-
-#: part/templates/part/set_category.html:32
-msgid "Remove part"
-msgstr ""
-
-#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:543
-#: templates/js/translated/part.js:1221 templates/js/translated/part.js:1425
+#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:587
+#: templates/js/translated/part.js:1265 templates/js/translated/part.js:1469
msgid "No Stock"
msgstr ""
@@ -5407,56 +5410,39 @@ msgstr ""
msgid "{title} v{version}"
msgstr ""
-#: part/views.py:74
-msgid "Set Part Category"
-msgstr ""
-
-#: part/views.py:122
-#, python-brace-format
-msgid "Set category for {n} parts"
-msgstr ""
-
-#: part/views.py:193
+#: part/views.py:118
msgid "Match References"
msgstr ""
-#: part/views.py:494
+#: part/views.py:419
msgid "None"
msgstr ""
-#: part/views.py:556
+#: part/views.py:481
msgid "Part QR Code"
msgstr ""
-#: part/views.py:650
+#: part/views.py:575
msgid "Select Part Image"
msgstr ""
-#: part/views.py:676
+#: part/views.py:601
msgid "Updated part image"
msgstr ""
-#: part/views.py:679
+#: part/views.py:604
msgid "Part image not found"
msgstr ""
-#: part/views.py:768
-msgid "Confirm Part Deletion"
-msgstr ""
-
-#: part/views.py:776
-msgid "Part was deleted"
-msgstr ""
-
-#: part/views.py:785
+#: part/views.py:693
msgid "Part Pricing"
msgstr ""
-#: part/views.py:976
+#: part/views.py:884
msgid "Delete Part Category"
msgstr ""
-#: part/views.py:983
+#: part/views.py:891
msgid "Part category was deleted"
msgstr ""
@@ -5516,21 +5502,21 @@ msgstr ""
msgid "Label printing failed"
msgstr ""
-#: plugin/builtin/integration/core_notifications.py:28
+#: plugin/builtin/integration/core_notifications.py:29
msgid "InvenTree contributors"
msgstr ""
-#: plugin/builtin/integration/core_notifications.py:29
+#: plugin/builtin/integration/core_notifications.py:30
msgid "Integrated outgoing notificaton methods"
msgstr ""
-#: plugin/builtin/integration/core_notifications.py:33
-#: plugin/builtin/integration/core_notifications.py:52
-msgid "Enable email notifications"
-msgstr ""
-
#: plugin/builtin/integration/core_notifications.py:34
#: plugin/builtin/integration/core_notifications.py:53
+msgid "Enable email notifications"
+msgstr ""
+
+#: plugin/builtin/integration/core_notifications.py:35
+#: plugin/builtin/integration/core_notifications.py:54
msgid "Allow sending of emails for event notifications"
msgstr ""
@@ -5646,15 +5632,19 @@ msgstr ""
msgid "Either packagename of URL must be provided"
msgstr ""
-#: report/api.py:166
+#: report/api.py:179
msgid "No valid objects provided to template"
msgstr ""
-#: report/api.py:198 report/api.py:239
+#: report/api.py:215 report/api.py:256
#, python-brace-format
msgid "Template file '{template}' is missing or does not exist"
msgstr ""
+#: report/api.py:359
+msgid "Test report"
+msgstr ""
+
#: report/models.py:152
msgid "Template name"
msgstr ""
@@ -5757,7 +5747,7 @@ msgstr ""
#: templates/js/translated/build.js:1173 templates/js/translated/build.js:1671
#: templates/js/translated/model_renderers.js:106
#: templates/js/translated/order.js:115 templates/js/translated/order.js:3229
-#: templates/js/translated/order.js:3318 templates/js/translated/stock.js:435
+#: templates/js/translated/order.js:3318 templates/js/translated/stock.js:434
msgid "Serial Number"
msgstr ""
@@ -5766,19 +5756,19 @@ msgid "Test Results"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:93
-#: stock/models.py:2068
+#: stock/models.py:2072
msgid "Test"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:94
-#: stock/models.py:2074
+#: stock/models.py:2078
msgid "Result"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:97
#: templates/InvenTree/settings/plugin.html:51
#: templates/InvenTree/settings/plugin_settings.html:38
-#: templates/js/translated/order.js:1669 templates/js/translated/stock.js:2340
+#: templates/js/translated/order.js:1669 templates/js/translated/stock.js:2350
msgid "Date"
msgstr ""
@@ -5796,20 +5786,20 @@ msgid "Installed Items"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:137
-#: templates/js/translated/stock.js:555 templates/js/translated/stock.js:725
-#: templates/js/translated/stock.js:2589
+#: templates/js/translated/stock.js:554 templates/js/translated/stock.js:724
+#: templates/js/translated/stock.js:2599
msgid "Serial"
msgstr ""
-#: stock/api.py:504
+#: stock/api.py:505
msgid "Quantity is required"
msgstr ""
-#: stock/api.py:511
+#: stock/api.py:512
msgid "Valid part must be supplied"
msgstr ""
-#: stock/api.py:536
+#: stock/api.py:537
msgid "Serial numbers cannot be supplied for a non-trackable part"
msgstr ""
@@ -5917,7 +5907,7 @@ msgid "Destination Sales Order"
msgstr ""
#: stock/models.py:690 stock/templates/stock/item_base.html:429
-#: templates/js/translated/stock.js:1816
+#: templates/js/translated/stock.js:1826
msgid "Expiry Date"
msgstr ""
@@ -5971,79 +5961,79 @@ msgstr ""
msgid "Serial numbers already exist: {exists}"
msgstr ""
-#: stock/models.py:1321
+#: stock/models.py:1325
msgid "Stock item has been assigned to a sales order"
msgstr ""
-#: stock/models.py:1324
+#: stock/models.py:1328
msgid "Stock item is installed in another item"
msgstr ""
-#: stock/models.py:1327
+#: stock/models.py:1331
msgid "Stock item contains other items"
msgstr ""
-#: stock/models.py:1330
+#: stock/models.py:1334
msgid "Stock item has been assigned to a customer"
msgstr ""
-#: stock/models.py:1333
+#: stock/models.py:1337
msgid "Stock item is currently in production"
msgstr ""
-#: stock/models.py:1336
+#: stock/models.py:1340
msgid "Serialized stock cannot be merged"
msgstr ""
-#: stock/models.py:1343 stock/serializers.py:908
+#: stock/models.py:1347 stock/serializers.py:895
msgid "Duplicate stock items"
msgstr ""
-#: stock/models.py:1347
+#: stock/models.py:1351
msgid "Stock items must refer to the same part"
msgstr ""
-#: stock/models.py:1351
+#: stock/models.py:1355
msgid "Stock items must refer to the same supplier part"
msgstr ""
-#: stock/models.py:1355
+#: stock/models.py:1359
msgid "Stock status codes must match"
msgstr ""
-#: stock/models.py:1524
+#: stock/models.py:1528
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:1986
+#: stock/models.py:1990
msgid "Entry notes"
msgstr ""
-#: stock/models.py:2044
+#: stock/models.py:2048
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:2050
+#: stock/models.py:2054
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:2069
+#: stock/models.py:2073
msgid "Test name"
msgstr ""
-#: stock/models.py:2075
+#: stock/models.py:2079
msgid "Test result"
msgstr ""
-#: stock/models.py:2081
+#: stock/models.py:2085
msgid "Test output value"
msgstr ""
-#: stock/models.py:2088
+#: stock/models.py:2092
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:2094
+#: stock/models.py:2098
msgid "Test notes"
msgstr ""
@@ -6064,7 +6054,7 @@ msgstr ""
msgid "Enter serial numbers for new items"
msgstr ""
-#: stock/serializers.py:309 stock/serializers.py:865 stock/serializers.py:1098
+#: stock/serializers.py:309 stock/serializers.py:852 stock/serializers.py:1085
msgid "Destination stock location"
msgstr ""
@@ -6104,63 +6094,63 @@ msgstr ""
msgid "Destination location for returned item"
msgstr ""
-#: stock/serializers.py:720
+#: stock/serializers.py:707
msgid "Part must be salable"
msgstr ""
-#: stock/serializers.py:724
+#: stock/serializers.py:711
msgid "Item is allocated to a sales order"
msgstr ""
-#: stock/serializers.py:728
+#: stock/serializers.py:715
msgid "Item is allocated to a build order"
msgstr ""
-#: stock/serializers.py:759
+#: stock/serializers.py:746
msgid "Customer to assign stock items"
msgstr ""
-#: stock/serializers.py:765
+#: stock/serializers.py:752
msgid "Selected company is not a customer"
msgstr ""
-#: stock/serializers.py:773
+#: stock/serializers.py:760
msgid "Stock assignment notes"
msgstr ""
-#: stock/serializers.py:783 stock/serializers.py:1014
+#: stock/serializers.py:770 stock/serializers.py:1001
msgid "A list of stock items must be provided"
msgstr ""
-#: stock/serializers.py:872
+#: stock/serializers.py:859
msgid "Stock merging notes"
msgstr ""
-#: stock/serializers.py:877
+#: stock/serializers.py:864
msgid "Allow mismatched suppliers"
msgstr ""
-#: stock/serializers.py:878
+#: stock/serializers.py:865
msgid "Allow stock items with different supplier parts to be merged"
msgstr ""
-#: stock/serializers.py:883
+#: stock/serializers.py:870
msgid "Allow mismatched status"
msgstr ""
-#: stock/serializers.py:884
+#: stock/serializers.py:871
msgid "Allow stock items with different status codes to be merged"
msgstr ""
-#: stock/serializers.py:894
+#: stock/serializers.py:881
msgid "At least two stock items must be provided"
msgstr ""
-#: stock/serializers.py:976
+#: stock/serializers.py:963
msgid "StockItem primary key value"
msgstr ""
-#: stock/serializers.py:1004
+#: stock/serializers.py:991
msgid "Stock transaction notes"
msgstr ""
@@ -6185,7 +6175,7 @@ msgstr ""
msgid "Test Report"
msgstr ""
-#: stock/templates/stock/item.html:94
+#: stock/templates/stock/item.html:94 stock/templates/stock/item.html:298
msgid "Delete Test Data"
msgstr ""
@@ -6197,11 +6187,15 @@ msgstr ""
msgid "Installed Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:151 templates/js/translated/stock.js:2733
+#: stock/templates/stock/item.html:151 templates/js/translated/stock.js:2743
msgid "Install Stock Item"
msgstr ""
-#: stock/templates/stock/item.html:292 templates/js/translated/stock.js:1455
+#: stock/templates/stock/item.html:290
+msgid "Delete all test results for this stock item"
+msgstr ""
+
+#: stock/templates/stock/item.html:323 templates/js/translated/stock.js:1465
msgid "Add Test Result"
msgstr ""
@@ -6388,7 +6382,7 @@ msgid "Stale"
msgstr ""
#: stock/templates/stock/item_base.html:442
-#: templates/js/translated/stock.js:1832
+#: templates/js/translated/stock.js:1842
msgid "Last Updated"
msgstr ""
@@ -6529,7 +6523,7 @@ msgstr ""
msgid "Child Items"
msgstr ""
-#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:182
+#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:144
msgid "Convert Stock Item"
msgstr ""
@@ -6550,31 +6544,19 @@ msgstr ""
msgid "This action cannot be easily undone"
msgstr ""
-#: stock/views.py:113
+#: stock/views.py:111
msgid "Stock Location QR code"
msgstr ""
-#: stock/views.py:131
-msgid "Delete All Test Data"
-msgstr ""
-
-#: stock/views.py:149
-msgid "Confirm test data deletion"
-msgstr ""
-
-#: stock/views.py:150
-msgid "Check the confirmation box"
-msgstr ""
-
-#: stock/views.py:165
+#: stock/views.py:127
msgid "Stock Item QR Code"
msgstr ""
-#: stock/views.py:216
+#: stock/views.py:178
msgid "Delete Stock Location"
msgstr ""
-#: stock/views.py:229
+#: stock/views.py:191
msgid "Delete Stock Item"
msgstr ""
@@ -7317,8 +7299,8 @@ msgstr ""
#: templates/about.html:11 templates/about.html:105
#: templates/js/translated/bom.js:133 templates/js/translated/bom.js:621
-#: templates/js/translated/modals.js:56 templates/js/translated/modals.js:595
-#: templates/js/translated/modals.js:689 templates/js/translated/modals.js:997
+#: templates/js/translated/modals.js:56 templates/js/translated/modals.js:601
+#: templates/js/translated/modals.js:695 templates/js/translated/modals.js:1003
#: templates/js/translated/order.js:928 templates/modals.html:15
#: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50
msgid "Close"
@@ -7390,6 +7372,10 @@ msgstr ""
msgid "Please confirm that %(email)s is an email address for user %(user_display)s."
msgstr ""
+#: templates/account/email_confirm.html:20 templates/js/translated/forms.js:630
+msgid "Confirm"
+msgstr ""
+
#: templates/account/email_confirm.html:27
#, python-format
msgid "This email confirmation link expired or is invalid. Please issue a new email confirmation request."
@@ -7562,7 +7548,7 @@ msgstr ""
msgid "Delete selected attachments"
msgstr ""
-#: templates/attachment_table.html:12 templates/js/translated/attachment.js:110
+#: templates/attachment_table.html:12 templates/js/translated/attachment.js:112
msgid "Delete Attachments"
msgstr ""
@@ -7596,15 +7582,15 @@ msgid "The following parts are low on required stock"
msgstr ""
#: templates/email/build_order_required_stock.html:18
-#: templates/js/translated/bom.js:1425
+#: templates/js/translated/bom.js:1419
msgid "Required Quantity"
msgstr ""
#: templates/email/build_order_required_stock.html:19
#: templates/email/low_stock_notification.html:18
-#: templates/js/translated/bom.js:890 templates/js/translated/build.js:1787
-#: templates/js/translated/build.js:2650 templates/js/translated/part.js:527
-#: templates/js/translated/part.js:530
+#: templates/js/translated/bom.js:884 templates/js/translated/build.js:1787
+#: templates/js/translated/build.js:2650 templates/js/translated/part.js:571
+#: templates/js/translated/part.js:574
#: templates/js/translated/table_filters.js:178
msgid "Available"
msgstr ""
@@ -7622,6 +7608,13 @@ msgstr ""
msgid "Minimum Quantity"
msgstr ""
+#: templates/email/new_order_assigned.html:9
+#: templates/email/overdue_build_order.html:9
+#: templates/email/overdue_purchase_order.html:9
+#: templates/email/overdue_sales_order.html:9
+msgid "Click on the following link to view this order"
+msgstr ""
+
#: templates/image_download.html:8
msgid "Specify URL for downloading image"
msgstr ""
@@ -7638,91 +7631,91 @@ msgstr ""
msgid "Remote image must not exceed maximum allowable file size"
msgstr ""
-#: templates/js/translated/api.js:235 templates/js/translated/modals.js:1067
+#: templates/js/translated/api.js:195 templates/js/translated/modals.js:1073
msgid "No Response"
msgstr ""
-#: templates/js/translated/api.js:236 templates/js/translated/modals.js:1068
+#: templates/js/translated/api.js:196 templates/js/translated/modals.js:1074
msgid "No response from the InvenTree server"
msgstr ""
-#: templates/js/translated/api.js:242
+#: templates/js/translated/api.js:202
msgid "Error 400: Bad request"
msgstr ""
-#: templates/js/translated/api.js:243
+#: templates/js/translated/api.js:203
msgid "API request returned error code 400"
msgstr ""
-#: templates/js/translated/api.js:247 templates/js/translated/modals.js:1077
+#: templates/js/translated/api.js:207 templates/js/translated/modals.js:1083
msgid "Error 401: Not Authenticated"
msgstr ""
-#: templates/js/translated/api.js:248 templates/js/translated/modals.js:1078
+#: templates/js/translated/api.js:208 templates/js/translated/modals.js:1084
msgid "Authentication credentials not supplied"
msgstr ""
-#: templates/js/translated/api.js:252 templates/js/translated/modals.js:1082
+#: templates/js/translated/api.js:212 templates/js/translated/modals.js:1088
msgid "Error 403: Permission Denied"
msgstr ""
-#: templates/js/translated/api.js:253 templates/js/translated/modals.js:1083
+#: templates/js/translated/api.js:213 templates/js/translated/modals.js:1089
msgid "You do not have the required permissions to access this function"
msgstr ""
-#: templates/js/translated/api.js:257 templates/js/translated/modals.js:1087
+#: templates/js/translated/api.js:217 templates/js/translated/modals.js:1093
msgid "Error 404: Resource Not Found"
msgstr ""
-#: templates/js/translated/api.js:258 templates/js/translated/modals.js:1088
+#: templates/js/translated/api.js:218 templates/js/translated/modals.js:1094
msgid "The requested resource could not be located on the server"
msgstr ""
-#: templates/js/translated/api.js:262
+#: templates/js/translated/api.js:222
msgid "Error 405: Method Not Allowed"
msgstr ""
-#: templates/js/translated/api.js:263
+#: templates/js/translated/api.js:223
msgid "HTTP method not allowed at URL"
msgstr ""
-#: templates/js/translated/api.js:267 templates/js/translated/modals.js:1092
+#: templates/js/translated/api.js:227 templates/js/translated/modals.js:1098
msgid "Error 408: Timeout"
msgstr ""
-#: templates/js/translated/api.js:268 templates/js/translated/modals.js:1093
+#: templates/js/translated/api.js:228 templates/js/translated/modals.js:1099
msgid "Connection timeout while requesting data from server"
msgstr ""
-#: templates/js/translated/api.js:271
+#: templates/js/translated/api.js:231
msgid "Unhandled Error Code"
msgstr ""
-#: templates/js/translated/api.js:272
+#: templates/js/translated/api.js:232
msgid "Error code"
msgstr ""
-#: templates/js/translated/attachment.js:96
+#: templates/js/translated/attachment.js:98
msgid "All selected attachments will be deleted"
msgstr ""
-#: templates/js/translated/attachment.js:156
+#: templates/js/translated/attachment.js:152
msgid "No attachments found"
msgstr ""
-#: templates/js/translated/attachment.js:180
+#: templates/js/translated/attachment.js:176
msgid "Edit Attachment"
msgstr ""
-#: templates/js/translated/attachment.js:246
+#: templates/js/translated/attachment.js:242
msgid "Upload Date"
msgstr ""
-#: templates/js/translated/attachment.js:262
+#: templates/js/translated/attachment.js:264
msgid "Edit attachment"
msgstr ""
-#: templates/js/translated/attachment.js:269
+#: templates/js/translated/attachment.js:271
msgid "Delete attachment"
msgstr ""
@@ -7755,7 +7748,7 @@ msgid "Unknown response from server"
msgstr ""
#: templates/js/translated/barcode.js:182
-#: templates/js/translated/modals.js:1057
+#: templates/js/translated/modals.js:1063
msgid "Invalid server response"
msgstr ""
@@ -7783,7 +7776,7 @@ msgstr ""
msgid "Unlink"
msgstr ""
-#: templates/js/translated/barcode.js:456 templates/js/translated/stock.js:999
+#: templates/js/translated/barcode.js:456 templates/js/translated/stock.js:998
msgid "Remove stock item"
msgstr ""
@@ -7918,89 +7911,89 @@ msgstr ""
msgid "Edit BOM Item Substitutes"
msgstr ""
-#: templates/js/translated/bom.js:682
+#: templates/js/translated/bom.js:684
msgid "All selected BOM items will be deleted"
msgstr ""
-#: templates/js/translated/bom.js:697
+#: templates/js/translated/bom.js:699
msgid "Delete selected BOM items?"
msgstr ""
-#: templates/js/translated/bom.js:824
+#: templates/js/translated/bom.js:818
msgid "Load BOM for subassembly"
msgstr ""
-#: templates/js/translated/bom.js:834
+#: templates/js/translated/bom.js:828
msgid "Substitutes Available"
msgstr ""
-#: templates/js/translated/bom.js:838 templates/js/translated/build.js:1769
+#: templates/js/translated/bom.js:832 templates/js/translated/build.js:1769
msgid "Variant stock allowed"
msgstr ""
-#: templates/js/translated/bom.js:906 templates/js/translated/build.js:1814
+#: templates/js/translated/bom.js:900 templates/js/translated/build.js:1814
#: templates/js/translated/order.js:3562
msgid "No Stock Available"
msgstr ""
-#: templates/js/translated/bom.js:910 templates/js/translated/build.js:1818
+#: templates/js/translated/bom.js:904 templates/js/translated/build.js:1818
msgid "Includes variant and substitute stock"
msgstr ""
-#: templates/js/translated/bom.js:912 templates/js/translated/build.js:1820
-#: templates/js/translated/part.js:690
+#: templates/js/translated/bom.js:906 templates/js/translated/build.js:1820
+#: templates/js/translated/part.js:734
msgid "Includes variant stock"
msgstr ""
-#: templates/js/translated/bom.js:914 templates/js/translated/build.js:1822
+#: templates/js/translated/bom.js:908 templates/js/translated/build.js:1822
msgid "Includes substitute stock"
msgstr ""
-#: templates/js/translated/bom.js:928
+#: templates/js/translated/bom.js:922
msgid "Substitutes"
msgstr ""
-#: templates/js/translated/bom.js:943
+#: templates/js/translated/bom.js:937
msgid "Purchase Price Range"
msgstr ""
-#: templates/js/translated/bom.js:950
+#: templates/js/translated/bom.js:944
msgid "Purchase Price Average"
msgstr ""
-#: templates/js/translated/bom.js:999 templates/js/translated/bom.js:1090
+#: templates/js/translated/bom.js:993 templates/js/translated/bom.js:1084
msgid "View BOM"
msgstr ""
-#: templates/js/translated/bom.js:1061
+#: templates/js/translated/bom.js:1055
msgid "Validate BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:1063
+#: templates/js/translated/bom.js:1057
msgid "This line has been validated"
msgstr ""
-#: templates/js/translated/bom.js:1065
+#: templates/js/translated/bom.js:1059
msgid "Edit substitute parts"
msgstr ""
-#: templates/js/translated/bom.js:1067 templates/js/translated/bom.js:1228
+#: templates/js/translated/bom.js:1061 templates/js/translated/bom.js:1222
msgid "Edit BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:1069
+#: templates/js/translated/bom.js:1063
msgid "Delete BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:1164 templates/js/translated/build.js:1615
+#: templates/js/translated/bom.js:1158 templates/js/translated/build.js:1615
msgid "No BOM items found"
msgstr ""
-#: templates/js/translated/bom.js:1408 templates/js/translated/build.js:1753
+#: templates/js/translated/bom.js:1402 templates/js/translated/build.js:1753
msgid "Required Part"
msgstr ""
-#: templates/js/translated/bom.js:1430
+#: templates/js/translated/bom.js:1424
msgid "Inherited from parent BOM"
msgstr ""
@@ -8040,13 +8033,13 @@ msgstr ""
msgid "Complete Build Order"
msgstr ""
-#: templates/js/translated/build.js:259 templates/js/translated/stock.js:91
-#: templates/js/translated/stock.js:181
+#: templates/js/translated/build.js:259 templates/js/translated/stock.js:90
+#: templates/js/translated/stock.js:180
msgid "Next available serial number"
msgstr ""
-#: templates/js/translated/build.js:261 templates/js/translated/stock.js:93
-#: templates/js/translated/stock.js:183
+#: templates/js/translated/build.js:261 templates/js/translated/stock.js:92
+#: templates/js/translated/stock.js:182
msgid "Latest serial number"
msgstr "Số seri mới nhất"
@@ -8259,9 +8252,9 @@ msgstr ""
msgid "No builds matching query"
msgstr ""
-#: templates/js/translated/build.js:2448 templates/js/translated/part.js:1314
-#: templates/js/translated/part.js:1729 templates/js/translated/stock.js:1619
-#: templates/js/translated/stock.js:2277
+#: templates/js/translated/build.js:2448 templates/js/translated/part.js:1358
+#: templates/js/translated/part.js:1825 templates/js/translated/stock.js:1629
+#: templates/js/translated/stock.js:2287
msgid "Select"
msgstr ""
@@ -8273,7 +8266,7 @@ msgstr ""
msgid "Progress"
msgstr ""
-#: templates/js/translated/build.js:2532 templates/js/translated/stock.js:2519
+#: templates/js/translated/build.js:2532 templates/js/translated/stock.js:2529
msgid "No user information"
msgstr ""
@@ -8285,107 +8278,107 @@ msgstr ""
msgid "No parts allocated for"
msgstr ""
-#: templates/js/translated/company.js:66
+#: templates/js/translated/company.js:65
msgid "Add Manufacturer"
msgstr ""
-#: templates/js/translated/company.js:79 templates/js/translated/company.js:169
+#: templates/js/translated/company.js:78 templates/js/translated/company.js:168
msgid "Add Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:100
+#: templates/js/translated/company.js:99
msgid "Edit Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:157 templates/js/translated/order.js:506
+#: templates/js/translated/company.js:156 templates/js/translated/order.js:506
msgid "Add Supplier"
msgstr ""
-#: templates/js/translated/company.js:185
+#: templates/js/translated/company.js:184
msgid "Add Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:200
+#: templates/js/translated/company.js:199
msgid "Edit Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:248
+#: templates/js/translated/company.js:249
msgid "All selected supplier parts will be deleted"
msgstr ""
-#: templates/js/translated/company.js:263
+#: templates/js/translated/company.js:264
msgid "Delete Supplier Parts"
msgstr ""
-#: templates/js/translated/company.js:342
+#: templates/js/translated/company.js:336
msgid "Add new Company"
msgstr ""
-#: templates/js/translated/company.js:419
+#: templates/js/translated/company.js:413
msgid "Parts Supplied"
msgstr ""
-#: templates/js/translated/company.js:428
+#: templates/js/translated/company.js:422
msgid "Parts Manufactured"
msgstr ""
-#: templates/js/translated/company.js:443
+#: templates/js/translated/company.js:437
msgid "No company information found"
msgstr ""
-#: templates/js/translated/company.js:482
+#: templates/js/translated/company.js:478
msgid "All selected manufacturer parts will be deleted"
msgstr ""
-#: templates/js/translated/company.js:496
+#: templates/js/translated/company.js:492
msgid "Delete Manufacturer Parts"
msgstr ""
-#: templates/js/translated/company.js:535
+#: templates/js/translated/company.js:526
msgid "All selected parameters will be deleted"
msgstr ""
-#: templates/js/translated/company.js:548
+#: templates/js/translated/company.js:539
msgid "Delete Parameters"
msgstr ""
-#: templates/js/translated/company.js:595
+#: templates/js/translated/company.js:580
msgid "No manufacturer parts found"
msgstr ""
-#: templates/js/translated/company.js:615
-#: templates/js/translated/company.js:874 templates/js/translated/part.js:565
-#: templates/js/translated/part.js:650
+#: templates/js/translated/company.js:600
+#: templates/js/translated/company.js:859 templates/js/translated/part.js:609
+#: templates/js/translated/part.js:694
msgid "Template part"
msgstr ""
-#: templates/js/translated/company.js:619
-#: templates/js/translated/company.js:878 templates/js/translated/part.js:569
-#: templates/js/translated/part.js:654
+#: templates/js/translated/company.js:604
+#: templates/js/translated/company.js:863 templates/js/translated/part.js:613
+#: templates/js/translated/part.js:698
msgid "Assembled part"
msgstr ""
-#: templates/js/translated/company.js:747 templates/js/translated/part.js:757
+#: templates/js/translated/company.js:732 templates/js/translated/part.js:801
msgid "No parameters found"
msgstr ""
-#: templates/js/translated/company.js:784 templates/js/translated/part.js:799
+#: templates/js/translated/company.js:769 templates/js/translated/part.js:843
msgid "Edit parameter"
msgstr ""
-#: templates/js/translated/company.js:785 templates/js/translated/part.js:800
+#: templates/js/translated/company.js:770 templates/js/translated/part.js:844
msgid "Delete parameter"
msgstr ""
-#: templates/js/translated/company.js:804 templates/js/translated/part.js:817
+#: templates/js/translated/company.js:789 templates/js/translated/part.js:861
msgid "Edit Parameter"
msgstr ""
-#: templates/js/translated/company.js:815 templates/js/translated/part.js:829
+#: templates/js/translated/company.js:800 templates/js/translated/part.js:873
msgid "Delete Parameter"
msgstr ""
-#: templates/js/translated/company.js:854
+#: templates/js/translated/company.js:839
msgid "No supplier parts found"
msgstr ""
@@ -8448,36 +8441,36 @@ msgstr ""
msgid "Keep this form open"
msgstr ""
-#: templates/js/translated/forms.js:756
+#: templates/js/translated/forms.js:757
msgid "Enter a valid number"
msgstr ""
-#: templates/js/translated/forms.js:1248 templates/modals.html:19
+#: templates/js/translated/forms.js:1249 templates/modals.html:19
#: templates/modals.html:43
msgid "Form errors exist"
msgstr ""
-#: templates/js/translated/forms.js:1681
+#: templates/js/translated/forms.js:1682
msgid "No results found"
msgstr ""
-#: templates/js/translated/forms.js:1896 templates/search.html:29
+#: templates/js/translated/forms.js:1897 templates/search.html:29
msgid "Searching"
msgstr ""
-#: templates/js/translated/forms.js:2149
+#: templates/js/translated/forms.js:2150
msgid "Clear input"
msgstr ""
-#: templates/js/translated/forms.js:2615
+#: templates/js/translated/forms.js:2616
msgid "File Column"
msgstr ""
-#: templates/js/translated/forms.js:2615
+#: templates/js/translated/forms.js:2616
msgid "Field Name"
msgstr ""
-#: templates/js/translated/forms.js:2627
+#: templates/js/translated/forms.js:2628
msgid "Select Columns"
msgstr ""
@@ -8498,7 +8491,7 @@ msgid "Labels sent to printer"
msgstr ""
#: templates/js/translated/label.js:60 templates/js/translated/report.js:118
-#: templates/js/translated/stock.js:1023
+#: templates/js/translated/stock.js:1022
msgid "Select Stock Items"
msgstr ""
@@ -8552,12 +8545,12 @@ msgid "Select Label Template"
msgstr ""
#: templates/js/translated/modals.js:82 templates/js/translated/modals.js:142
-#: templates/js/translated/modals.js:621
+#: templates/js/translated/modals.js:627
msgid "Cancel"
msgstr ""
#: templates/js/translated/modals.js:83 templates/js/translated/modals.js:141
-#: templates/js/translated/modals.js:688 templates/js/translated/modals.js:996
+#: templates/js/translated/modals.js:694 templates/js/translated/modals.js:1002
#: templates/modals.html:28 templates/modals.html:51
msgid "Submit"
msgstr ""
@@ -8566,47 +8559,47 @@ msgstr ""
msgid "Form Title"
msgstr ""
-#: templates/js/translated/modals.js:403
+#: templates/js/translated/modals.js:421
msgid "Waiting for server..."
msgstr ""
-#: templates/js/translated/modals.js:562
+#: templates/js/translated/modals.js:568
msgid "Show Error Information"
msgstr ""
-#: templates/js/translated/modals.js:620
+#: templates/js/translated/modals.js:626
msgid "Accept"
msgstr ""
-#: templates/js/translated/modals.js:677
+#: templates/js/translated/modals.js:683
msgid "Loading Data"
msgstr ""
-#: templates/js/translated/modals.js:948
+#: templates/js/translated/modals.js:954
msgid "Invalid response from server"
msgstr ""
-#: templates/js/translated/modals.js:948
+#: templates/js/translated/modals.js:954
msgid "Form data missing from server response"
msgstr ""
-#: templates/js/translated/modals.js:960
+#: templates/js/translated/modals.js:966
msgid "Error posting form data"
msgstr ""
-#: templates/js/translated/modals.js:1057
+#: templates/js/translated/modals.js:1063
msgid "JSON response missing form data"
msgstr ""
-#: templates/js/translated/modals.js:1072
+#: templates/js/translated/modals.js:1078
msgid "Error 400: Bad Request"
msgstr ""
-#: templates/js/translated/modals.js:1073
+#: templates/js/translated/modals.js:1079
msgid "Server returned error code 400"
msgstr ""
-#: templates/js/translated/modals.js:1096
+#: templates/js/translated/modals.js:1102
msgid "Error requesting form data"
msgstr ""
@@ -8656,11 +8649,11 @@ msgstr ""
msgid "Mark as read"
msgstr ""
-#: templates/js/translated/notification.js:259
+#: templates/js/translated/notification.js:260
msgid "No unread notifications"
msgstr ""
-#: templates/js/translated/notification.js:300 templates/notifications.html:10
+#: templates/js/translated/notification.js:302 templates/notifications.html:10
msgid "Notifications will load here"
msgstr ""
@@ -8804,7 +8797,7 @@ msgstr ""
msgid "Quantity to receive"
msgstr ""
-#: templates/js/translated/order.js:1225 templates/js/translated/stock.js:2080
+#: templates/js/translated/order.js:1225 templates/js/translated/stock.js:2090
msgid "Stock Status"
msgstr ""
@@ -8828,7 +8821,7 @@ msgstr ""
msgid "Receive Purchase Order Items"
msgstr ""
-#: templates/js/translated/order.js:1602 templates/js/translated/part.js:870
+#: templates/js/translated/order.js:1602 templates/js/translated/part.js:914
msgid "No purchase orders found"
msgstr ""
@@ -8863,7 +8856,7 @@ msgstr ""
#: templates/js/translated/order.js:1937 templates/js/translated/order.js:2139
#: templates/js/translated/order.js:3467 templates/js/translated/order.js:3978
-#: templates/js/translated/part.js:1948 templates/js/translated/part.js:2301
+#: templates/js/translated/part.js:2044 templates/js/translated/part.js:2397
msgid "Unit Price"
msgstr ""
@@ -8873,11 +8866,11 @@ msgid "Total Price"
msgstr ""
#: templates/js/translated/order.js:1993 templates/js/translated/order.js:3525
-#: templates/js/translated/part.js:979
+#: templates/js/translated/part.js:1023
msgid "This line item is overdue"
msgstr ""
-#: templates/js/translated/order.js:2052 templates/js/translated/part.js:1025
+#: templates/js/translated/order.js:2052 templates/js/translated/part.js:1069
msgid "Receive line item"
msgstr ""
@@ -8998,7 +8991,7 @@ msgid "Delete Stock Allocation"
msgstr ""
#: templates/js/translated/order.js:3243 templates/js/translated/order.js:3332
-#: templates/js/translated/stock.js:1535
+#: templates/js/translated/stock.js:1545
msgid "Shipped to customer"
msgstr ""
@@ -9138,165 +9131,209 @@ msgstr ""
msgid "Create Part Variant"
msgstr ""
+#: templates/js/translated/part.js:405
+msgid "Active Part"
+msgstr ""
+
+#: templates/js/translated/part.js:406
+msgid "Part cannot be deleted as it is currently active"
+msgstr ""
+
+#: templates/js/translated/part.js:420
+msgid "Deleting this part cannot be reversed"
+msgstr ""
+
+#: templates/js/translated/part.js:422
+msgid "Any stock items for this part will be deleted"
+msgstr ""
+
#: templates/js/translated/part.js:423
+msgid "This part will be removed from any Bills of Material"
+msgstr ""
+
+#: templates/js/translated/part.js:424
+msgid "All manufacturer and supplier information for this part will be deleted"
+msgstr ""
+
+#: templates/js/translated/part.js:431
+msgid "Delete Part"
+msgstr ""
+
+#: templates/js/translated/part.js:467
msgid "You are subscribed to notifications for this item"
msgstr ""
-#: templates/js/translated/part.js:425
+#: templates/js/translated/part.js:469
msgid "You have subscribed to notifications for this item"
msgstr ""
-#: templates/js/translated/part.js:430
+#: templates/js/translated/part.js:474
msgid "Subscribe to notifications for this item"
msgstr ""
-#: templates/js/translated/part.js:432
+#: templates/js/translated/part.js:476
msgid "You have unsubscribed to notifications for this item"
msgstr ""
-#: templates/js/translated/part.js:449
+#: templates/js/translated/part.js:493
msgid "Validating the BOM will mark each line item as valid"
msgstr ""
-#: templates/js/translated/part.js:459
+#: templates/js/translated/part.js:503
msgid "Validate Bill of Materials"
msgstr ""
-#: templates/js/translated/part.js:462
+#: templates/js/translated/part.js:506
msgid "Validated Bill of Materials"
msgstr ""
-#: templates/js/translated/part.js:487
+#: templates/js/translated/part.js:531
msgid "Copy Bill of Materials"
msgstr ""
-#: templates/js/translated/part.js:513 templates/js/translated/part.js:1397
+#: templates/js/translated/part.js:557 templates/js/translated/part.js:1441
#: templates/js/translated/table_filters.js:452
msgid "Low stock"
msgstr ""
-#: templates/js/translated/part.js:523 templates/js/translated/part.js:1409
+#: templates/js/translated/part.js:567 templates/js/translated/part.js:1453
msgid "No stock available"
msgstr ""
-#: templates/js/translated/part.js:557 templates/js/translated/part.js:642
+#: templates/js/translated/part.js:601 templates/js/translated/part.js:686
msgid "Trackable part"
msgstr ""
-#: templates/js/translated/part.js:561 templates/js/translated/part.js:646
+#: templates/js/translated/part.js:605 templates/js/translated/part.js:690
msgid "Virtual part"
msgstr ""
-#: templates/js/translated/part.js:573
+#: templates/js/translated/part.js:617
msgid "Subscribed part"
msgstr ""
-#: templates/js/translated/part.js:577
+#: templates/js/translated/part.js:621
msgid "Salable part"
msgstr ""
-#: templates/js/translated/part.js:705
+#: templates/js/translated/part.js:749
msgid "No variants found"
msgstr ""
-#: templates/js/translated/part.js:1095
+#: templates/js/translated/part.js:1139
msgid "Delete part relationship"
msgstr ""
-#: templates/js/translated/part.js:1119
+#: templates/js/translated/part.js:1163
msgid "Delete Part Relationship"
msgstr ""
-#: templates/js/translated/part.js:1184 templates/js/translated/part.js:1480
+#: templates/js/translated/part.js:1228 templates/js/translated/part.js:1524
msgid "No parts found"
msgstr ""
-#: templates/js/translated/part.js:1223
+#: templates/js/translated/part.js:1267
msgid "Not available"
msgstr ""
-#: templates/js/translated/part.js:1374
+#: templates/js/translated/part.js:1418
msgid "No category"
msgstr ""
-#: templates/js/translated/part.js:1504 templates/js/translated/part.js:1664
-#: templates/js/translated/stock.js:2238
+#: templates/js/translated/part.js:1548 templates/js/translated/part.js:1760
+#: templates/js/translated/stock.js:2248
msgid "Display as list"
msgstr ""
-#: templates/js/translated/part.js:1520
+#: templates/js/translated/part.js:1564
msgid "Display as grid"
msgstr ""
-#: templates/js/translated/part.js:1683 templates/js/translated/stock.js:2257
+#: templates/js/translated/part.js:1630
+msgid "Set the part category for the selected parts"
+msgstr ""
+
+#: templates/js/translated/part.js:1635
+msgid "Set Part Category"
+msgstr ""
+
+#: templates/js/translated/part.js:1640
+msgid "Select Part Category"
+msgstr ""
+
+#: templates/js/translated/part.js:1653
+msgid "Category is required"
+msgstr ""
+
+#: templates/js/translated/part.js:1779 templates/js/translated/stock.js:2267
msgid "Display as tree"
msgstr ""
-#: templates/js/translated/part.js:1747
+#: templates/js/translated/part.js:1843
msgid "Subscribed category"
msgstr ""
-#: templates/js/translated/part.js:1761 templates/js/translated/stock.js:2301
+#: templates/js/translated/part.js:1857 templates/js/translated/stock.js:2311
msgid "Path"
msgstr ""
-#: templates/js/translated/part.js:1805
+#: templates/js/translated/part.js:1901
msgid "No test templates matching query"
msgstr ""
-#: templates/js/translated/part.js:1856 templates/js/translated/stock.js:1233
+#: templates/js/translated/part.js:1952 templates/js/translated/stock.js:1243
msgid "Edit test result"
msgstr ""
-#: templates/js/translated/part.js:1857 templates/js/translated/stock.js:1234
-#: templates/js/translated/stock.js:1493
+#: templates/js/translated/part.js:1953 templates/js/translated/stock.js:1244
+#: templates/js/translated/stock.js:1503
msgid "Delete test result"
msgstr ""
-#: templates/js/translated/part.js:1863
+#: templates/js/translated/part.js:1959
msgid "This test is defined for a parent part"
msgstr ""
-#: templates/js/translated/part.js:1885
+#: templates/js/translated/part.js:1981
msgid "Edit Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:1899
+#: templates/js/translated/part.js:1995
msgid "Delete Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:1924
+#: templates/js/translated/part.js:2020
#, python-brace-format
msgid "No ${human_name} information found"
msgstr ""
-#: templates/js/translated/part.js:1981
+#: templates/js/translated/part.js:2077
#, python-brace-format
msgid "Edit ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:1982
+#: templates/js/translated/part.js:2078
#, python-brace-format
msgid "Delete ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:2096
+#: templates/js/translated/part.js:2192
msgid "Current Stock"
msgstr ""
-#: templates/js/translated/part.js:2129
+#: templates/js/translated/part.js:2225
msgid "No scheduling information available for this part"
msgstr ""
-#: templates/js/translated/part.js:2155
+#: templates/js/translated/part.js:2251
msgid "Scheduled Stock Quantities"
msgstr ""
-#: templates/js/translated/part.js:2225
+#: templates/js/translated/part.js:2321
msgid "Single Price"
msgstr ""
-#: templates/js/translated/part.js:2244
+#: templates/js/translated/part.js:2340
msgid "Single Price Difference"
msgstr ""
@@ -9378,360 +9415,360 @@ msgstr ""
msgid "Remove results"
msgstr ""
-#: templates/js/translated/stock.js:73
+#: templates/js/translated/stock.js:72
msgid "Serialize Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:101
+#: templates/js/translated/stock.js:100
msgid "Confirm Stock Serialization"
msgstr ""
-#: templates/js/translated/stock.js:110
+#: templates/js/translated/stock.js:109
msgid "Parent stock location"
msgstr ""
-#: templates/js/translated/stock.js:139
+#: templates/js/translated/stock.js:138
msgid "Edit Stock Location"
msgstr ""
-#: templates/js/translated/stock.js:154
+#: templates/js/translated/stock.js:153
msgid "New Stock Location"
msgstr ""
-#: templates/js/translated/stock.js:194
+#: templates/js/translated/stock.js:193
msgid "This part cannot be serialized"
msgstr ""
-#: templates/js/translated/stock.js:233
+#: templates/js/translated/stock.js:232
msgid "Enter initial quantity for this stock item"
msgstr ""
-#: templates/js/translated/stock.js:239
+#: templates/js/translated/stock.js:238
msgid "Enter serial numbers for new stock (or leave blank)"
msgstr ""
-#: templates/js/translated/stock.js:304
+#: templates/js/translated/stock.js:303
msgid "Stock item duplicated"
msgstr ""
-#: templates/js/translated/stock.js:324
+#: templates/js/translated/stock.js:323
msgid "Duplicate Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:344
+#: templates/js/translated/stock.js:343
msgid "Edit Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:394
+#: templates/js/translated/stock.js:393
msgid "Created new stock item"
msgstr ""
-#: templates/js/translated/stock.js:407
+#: templates/js/translated/stock.js:406
msgid "Created multiple stock items"
msgstr ""
-#: templates/js/translated/stock.js:432
+#: templates/js/translated/stock.js:431
msgid "Find Serial Number"
msgstr ""
-#: templates/js/translated/stock.js:436 templates/js/translated/stock.js:437
+#: templates/js/translated/stock.js:435 templates/js/translated/stock.js:436
msgid "Enter serial number"
msgstr ""
-#: templates/js/translated/stock.js:453
+#: templates/js/translated/stock.js:452
msgid "Enter a serial number"
msgstr ""
-#: templates/js/translated/stock.js:473
+#: templates/js/translated/stock.js:472
msgid "No matching serial number"
msgstr ""
-#: templates/js/translated/stock.js:482
+#: templates/js/translated/stock.js:481
msgid "More than one matching result found"
msgstr ""
-#: templates/js/translated/stock.js:605
+#: templates/js/translated/stock.js:604
msgid "Confirm stock assignment"
msgstr ""
-#: templates/js/translated/stock.js:606
+#: templates/js/translated/stock.js:605
msgid "Assign Stock to Customer"
msgstr ""
-#: templates/js/translated/stock.js:683
+#: templates/js/translated/stock.js:682
msgid "Warning: Merge operation cannot be reversed"
msgstr ""
-#: templates/js/translated/stock.js:684
+#: templates/js/translated/stock.js:683
msgid "Some information will be lost when merging stock items"
msgstr ""
-#: templates/js/translated/stock.js:686
+#: templates/js/translated/stock.js:685
msgid "Stock transaction history will be deleted for merged items"
msgstr ""
-#: templates/js/translated/stock.js:687
+#: templates/js/translated/stock.js:686
msgid "Supplier part information will be deleted for merged items"
msgstr ""
-#: templates/js/translated/stock.js:773
+#: templates/js/translated/stock.js:772
msgid "Confirm stock item merge"
msgstr ""
-#: templates/js/translated/stock.js:774
+#: templates/js/translated/stock.js:773
msgid "Merge Stock Items"
msgstr ""
-#: templates/js/translated/stock.js:869
+#: templates/js/translated/stock.js:868
msgid "Transfer Stock"
msgstr ""
-#: templates/js/translated/stock.js:870
+#: templates/js/translated/stock.js:869
msgid "Move"
msgstr ""
-#: templates/js/translated/stock.js:876
+#: templates/js/translated/stock.js:875
msgid "Count Stock"
msgstr ""
-#: templates/js/translated/stock.js:877
+#: templates/js/translated/stock.js:876
msgid "Count"
msgstr ""
-#: templates/js/translated/stock.js:881
+#: templates/js/translated/stock.js:880
msgid "Remove Stock"
msgstr ""
-#: templates/js/translated/stock.js:882
+#: templates/js/translated/stock.js:881
msgid "Take"
msgstr ""
-#: templates/js/translated/stock.js:886
+#: templates/js/translated/stock.js:885
msgid "Add Stock"
msgstr ""
-#: templates/js/translated/stock.js:887 users/models.py:215
+#: templates/js/translated/stock.js:886 users/models.py:215
msgid "Add"
msgstr ""
-#: templates/js/translated/stock.js:891
+#: templates/js/translated/stock.js:890
msgid "Delete Stock"
msgstr ""
-#: templates/js/translated/stock.js:984
+#: templates/js/translated/stock.js:983
msgid "Quantity cannot be adjusted for serialized stock"
msgstr ""
-#: templates/js/translated/stock.js:984
+#: templates/js/translated/stock.js:983
msgid "Specify stock quantity"
msgstr ""
-#: templates/js/translated/stock.js:1024
+#: templates/js/translated/stock.js:1023
msgid "You must select at least one available stock item"
msgstr ""
-#: templates/js/translated/stock.js:1047
+#: templates/js/translated/stock.js:1046
msgid "Confirm stock adjustment"
msgstr ""
-#: templates/js/translated/stock.js:1172
+#: templates/js/translated/stock.js:1182
msgid "PASS"
msgstr ""
-#: templates/js/translated/stock.js:1174
+#: templates/js/translated/stock.js:1184
msgid "FAIL"
msgstr ""
-#: templates/js/translated/stock.js:1179
+#: templates/js/translated/stock.js:1189
msgid "NO RESULT"
msgstr ""
-#: templates/js/translated/stock.js:1226
+#: templates/js/translated/stock.js:1236
msgid "Pass test"
msgstr ""
-#: templates/js/translated/stock.js:1229
+#: templates/js/translated/stock.js:1239
msgid "Add test result"
msgstr ""
-#: templates/js/translated/stock.js:1255
+#: templates/js/translated/stock.js:1265
msgid "No test results found"
msgstr ""
-#: templates/js/translated/stock.js:1311
+#: templates/js/translated/stock.js:1321
msgid "Test Date"
msgstr ""
-#: templates/js/translated/stock.js:1476
+#: templates/js/translated/stock.js:1486
msgid "Edit Test Result"
msgstr ""
-#: templates/js/translated/stock.js:1498
+#: templates/js/translated/stock.js:1508
msgid "Delete Test Result"
msgstr ""
-#: templates/js/translated/stock.js:1527
+#: templates/js/translated/stock.js:1537
msgid "In production"
msgstr ""
-#: templates/js/translated/stock.js:1531
+#: templates/js/translated/stock.js:1541
msgid "Installed in Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:1539
+#: templates/js/translated/stock.js:1549
msgid "Assigned to Sales Order"
msgstr ""
-#: templates/js/translated/stock.js:1545
+#: templates/js/translated/stock.js:1555
msgid "No stock location set"
msgstr ""
-#: templates/js/translated/stock.js:1712
+#: templates/js/translated/stock.js:1722
msgid "Stock item is in production"
msgstr ""
-#: templates/js/translated/stock.js:1717
+#: templates/js/translated/stock.js:1727
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:1720
+#: templates/js/translated/stock.js:1730
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:1723
+#: templates/js/translated/stock.js:1733
msgid "Serialized stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:1725
+#: templates/js/translated/stock.js:1735
msgid "Stock item has been fully allocated"
msgstr ""
-#: templates/js/translated/stock.js:1727
+#: templates/js/translated/stock.js:1737
msgid "Stock item has been partially allocated"
msgstr ""
-#: templates/js/translated/stock.js:1730
+#: templates/js/translated/stock.js:1740
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:1734
+#: templates/js/translated/stock.js:1744
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:1736
+#: templates/js/translated/stock.js:1746
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:1743
+#: templates/js/translated/stock.js:1753
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:1745
+#: templates/js/translated/stock.js:1755
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:1747
+#: templates/js/translated/stock.js:1757
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:1751
+#: templates/js/translated/stock.js:1761
#: templates/js/translated/table_filters.js:188
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:1802
+#: templates/js/translated/stock.js:1812
msgid "Stocktake"
msgstr ""
-#: templates/js/translated/stock.js:1884
+#: templates/js/translated/stock.js:1894
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:1922
+#: templates/js/translated/stock.js:1932
msgid "No stock items matching query"
msgstr ""
-#: templates/js/translated/stock.js:2095
+#: templates/js/translated/stock.js:2105
msgid "Set Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:2109
+#: templates/js/translated/stock.js:2119
msgid "Select Status Code"
msgstr ""
-#: templates/js/translated/stock.js:2110
+#: templates/js/translated/stock.js:2120
msgid "Status code must be selected"
msgstr ""
-#: templates/js/translated/stock.js:2365
+#: templates/js/translated/stock.js:2375
msgid "Details"
msgstr ""
-#: templates/js/translated/stock.js:2381
+#: templates/js/translated/stock.js:2391
msgid "Part information unavailable"
msgstr ""
-#: templates/js/translated/stock.js:2403
+#: templates/js/translated/stock.js:2413
msgid "Location no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2422
+#: templates/js/translated/stock.js:2432
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2441
+#: templates/js/translated/stock.js:2451
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2459
+#: templates/js/translated/stock.js:2469
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2482
+#: templates/js/translated/stock.js:2492
msgid "Added"
msgstr ""
-#: templates/js/translated/stock.js:2490
+#: templates/js/translated/stock.js:2500
msgid "Removed"
msgstr ""
-#: templates/js/translated/stock.js:2566
+#: templates/js/translated/stock.js:2576
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:2617 templates/js/translated/stock.js:2653
+#: templates/js/translated/stock.js:2627 templates/js/translated/stock.js:2663
msgid "Uninstall Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:2666
+#: templates/js/translated/stock.js:2676
msgid "Select stock item to uninstall"
msgstr ""
-#: templates/js/translated/stock.js:2687
+#: templates/js/translated/stock.js:2697
msgid "Install another stock item into this item"
msgstr ""
-#: templates/js/translated/stock.js:2688
+#: templates/js/translated/stock.js:2698
msgid "Stock items can only be installed if they meet the following criteria"
msgstr ""
-#: templates/js/translated/stock.js:2690
+#: templates/js/translated/stock.js:2700
msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:2691
+#: templates/js/translated/stock.js:2701
msgid "The Stock Item is currently available in stock"
msgstr ""
-#: templates/js/translated/stock.js:2692
+#: templates/js/translated/stock.js:2702
msgid "The Stock Item is not already installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:2693
+#: templates/js/translated/stock.js:2703
msgid "The Stock Item is tracked by either a batch code or serial number"
msgstr ""
-#: templates/js/translated/stock.js:2706
+#: templates/js/translated/stock.js:2716
msgid "Select part to install"
msgstr ""
diff --git a/InvenTree/locale/zh/LC_MESSAGES/django.po b/InvenTree/locale/zh/LC_MESSAGES/django.po
index 44c1742543..399933245c 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: 2022-06-05 14:26+0000\n"
-"PO-Revision-Date: 2022-06-05 14:34\n"
+"POT-Creation-Date: 2022-06-06 22:59+0000\n"
+"PO-Revision-Date: 2022-06-07 14:34\n"
"Last-Translator: \n"
"Language-Team: Chinese Simplified\n"
"Language: zh_CN\n"
@@ -17,7 +17,7 @@ msgstr ""
"X-Crowdin-File: /[inventree.InvenTree] l10/InvenTree/locale/en/LC_MESSAGES/django.po\n"
"X-Crowdin-File-ID: 154\n"
-#: InvenTree/api.py:46
+#: InvenTree/api.py:49
msgid "API endpoint not found"
msgstr "未找到 API 端点"
@@ -29,275 +29,273 @@ msgstr ""
msgid "Enter date"
msgstr "输入日期"
-#: InvenTree/forms.py:117 templates/account/email_confirm.html:20
-#: templates/js/translated/forms.js:630
-msgid "Confirm"
-msgstr "确认"
-
-#: InvenTree/forms.py:134
+#: InvenTree/forms.py:117
msgid "Confirm delete"
msgstr "确认删除"
-#: InvenTree/forms.py:135
+#: InvenTree/forms.py:118
msgid "Confirm item deletion"
msgstr "确认删除"
-#: InvenTree/forms.py:167
+#: InvenTree/forms.py:150
msgid "Enter password"
msgstr "输入密码"
-#: InvenTree/forms.py:168
+#: InvenTree/forms.py:151
msgid "Enter new password"
msgstr "输入新密码"
-#: InvenTree/forms.py:175
+#: InvenTree/forms.py:158
msgid "Confirm password"
msgstr "确认密码"
-#: InvenTree/forms.py:176
+#: InvenTree/forms.py:159
msgid "Confirm new password"
msgstr "确认新密码"
-#: InvenTree/forms.py:213
-msgid "Select Category"
-msgstr "选择分类"
-
-#: InvenTree/forms.py:234
+#: InvenTree/forms.py:184
msgid "Email (again)"
msgstr "Email (再次)"
-#: InvenTree/forms.py:238
+#: InvenTree/forms.py:188
msgid "Email address confirmation"
msgstr "Email 地址确认"
-#: InvenTree/forms.py:259
+#: InvenTree/forms.py:209
msgid "You must type the same email each time."
msgstr "您必须输入相同的 Email 。"
-#: InvenTree/helpers.py:402
+#: InvenTree/helpers.py:404
#, python-brace-format
msgid "Duplicate serial: {sn}"
msgstr ""
-#: InvenTree/helpers.py:409 order/models.py:365 order/models.py:517
+#: InvenTree/helpers.py:411 order/models.py:370 order/models.py:522
msgid "Invalid quantity provided"
msgstr "提供的数量无效"
-#: InvenTree/helpers.py:412
+#: InvenTree/helpers.py:414
msgid "Empty serial number string"
msgstr "空序列号字符串"
-#: InvenTree/helpers.py:444
+#: InvenTree/helpers.py:446
#, python-brace-format
msgid "Invalid group range: {g}"
msgstr ""
-#: InvenTree/helpers.py:447
+#: InvenTree/helpers.py:449
#, python-brace-format
msgid "Invalid group: {g}"
msgstr "无效的群组: {g}"
-#: InvenTree/helpers.py:475
+#: InvenTree/helpers.py:477
#, python-brace-format
msgid "Invalid group sequence: {g}"
msgstr ""
-#: InvenTree/helpers.py:483
+#: InvenTree/helpers.py:485
#, python-brace-format
msgid "Invalid/no group {group}"
msgstr ""
-#: InvenTree/helpers.py:489
+#: InvenTree/helpers.py:491
msgid "No serial numbers found"
msgstr "未找到序列号"
-#: InvenTree/helpers.py:493
+#: InvenTree/helpers.py:495
#, python-brace-format
msgid "Number of unique serial numbers ({s}) must match quantity ({q})"
msgstr ""
-#: InvenTree/models.py:174
+#: InvenTree/models.py:178
msgid "Missing file"
msgstr "缺少文件"
-#: InvenTree/models.py:175
+#: InvenTree/models.py:179
msgid "Missing external link"
msgstr ""
-#: InvenTree/models.py:187 stock/models.py:2087
-#: templates/js/translated/attachment.js:101
-#: templates/js/translated/attachment.js:198
+#: InvenTree/models.py:191 stock/models.py:2091
+#: templates/js/translated/attachment.js:103
+#: templates/js/translated/attachment.js:194
msgid "Attachment"
msgstr "附件"
-#: InvenTree/models.py:188
+#: InvenTree/models.py:192
msgid "Select file to attach"
msgstr "选择附件"
-#: InvenTree/models.py:194 company/models.py:123 company/models.py:272
-#: company/models.py:506 order/models.py:135 order/models.py:1235
+#: InvenTree/models.py:198 company/models.py:123 company/models.py:272
+#: company/models.py:506 order/models.py:136 order/models.py:1251
#: part/models.py:795
#: report/templates/report/inventree_build_order_base.html:165
-#: templates/js/translated/company.js:655
-#: templates/js/translated/company.js:946 templates/js/translated/order.js:2676
-#: templates/js/translated/part.js:1441
+#: templates/js/translated/company.js:640
+#: templates/js/translated/company.js:931 templates/js/translated/order.js:2676
+#: templates/js/translated/part.js:1485
msgid "Link"
msgstr "链接"
-#: InvenTree/models.py:195 build/models.py:320 part/models.py:796
+#: InvenTree/models.py:199 build/models.py:320 part/models.py:796
#: stock/models.py:642
msgid "Link to external URL"
msgstr "链接到外部 URL"
-#: InvenTree/models.py:198 templates/js/translated/attachment.js:102
-#: templates/js/translated/attachment.js:242
+#: InvenTree/models.py:202 templates/js/translated/attachment.js:104
+#: templates/js/translated/attachment.js:238
msgid "Comment"
msgstr "注释"
-#: InvenTree/models.py:198
+#: InvenTree/models.py:202
msgid "File comment"
msgstr "文件注释"
-#: InvenTree/models.py:204 InvenTree/models.py:205 common/models.py:1499
-#: common/models.py:1500 common/models.py:1728 common/models.py:1729
-#: common/models.py:1991 common/models.py:1992 part/models.py:2153
-#: part/models.py:2173 plugin/models.py:238 plugin/models.py:239
+#: InvenTree/models.py:208 InvenTree/models.py:209 common/models.py:1506
+#: common/models.py:1507 common/models.py:1735 common/models.py:1736
+#: common/models.py:1998 common/models.py:1999 part/models.py:2141
+#: part/models.py:2161 plugin/models.py:238 plugin/models.py:239
#: report/templates/report/inventree_test_report_base.html:96
-#: templates/js/translated/stock.js:2513
+#: templates/js/translated/stock.js:2523
msgid "User"
msgstr "用户"
-#: InvenTree/models.py:208
+#: InvenTree/models.py:212
msgid "upload date"
msgstr "上传日期"
-#: InvenTree/models.py:230
+#: InvenTree/models.py:234
msgid "Filename must not be empty"
msgstr "文件名不能为空!"
-#: InvenTree/models.py:253
+#: InvenTree/models.py:257
msgid "Invalid attachment directory"
msgstr "非法的附件目录"
-#: InvenTree/models.py:263
+#: InvenTree/models.py:267
#, python-brace-format
msgid "Filename contains illegal character '{c}'"
msgstr "文件名包含非法字符 '{c}'"
-#: InvenTree/models.py:266
+#: InvenTree/models.py:270
msgid "Filename missing extension"
msgstr "缺少文件名扩展"
-#: InvenTree/models.py:273
+#: InvenTree/models.py:277
msgid "Attachment with this filename already exists"
msgstr "使用此文件名的附件已存在"
-#: InvenTree/models.py:280
+#: InvenTree/models.py:284
msgid "Error renaming file"
msgstr "重命名文件出错"
-#: InvenTree/models.py:314
+#: InvenTree/models.py:318
msgid "Invalid choice"
msgstr "选择无效"
-#: InvenTree/models.py:333 InvenTree/models.py:334 common/models.py:1714
+#: InvenTree/models.py:337 InvenTree/models.py:338 common/models.py:1721
#: company/models.py:354 label/models.py:101 part/models.py:739
-#: part/models.py:2331 plugin/models.py:93 report/models.py:151
+#: part/models.py:2319 plugin/models.py:93 report/models.py:151
#: templates/InvenTree/notifications/notifications.html:84
#: templates/InvenTree/settings/mixins/urls.html:13
#: templates/InvenTree/settings/plugin.html:49
#: templates/InvenTree/settings/plugin.html:132
#: templates/InvenTree/settings/plugin_settings.html:23
#: templates/InvenTree/settings/settings.html:346
-#: templates/js/translated/company.js:539
-#: templates/js/translated/company.js:757 templates/js/translated/part.js:615
-#: templates/js/translated/part.js:767 templates/js/translated/part.js:1736
-#: templates/js/translated/stock.js:2283
+#: templates/js/translated/company.js:530
+#: templates/js/translated/company.js:742 templates/js/translated/part.js:659
+#: templates/js/translated/part.js:811 templates/js/translated/part.js:1832
+#: templates/js/translated/stock.js:2293
msgid "Name"
msgstr "名称"
-#: InvenTree/models.py:340 build/models.py:197
+#: InvenTree/models.py:344 build/models.py:197
#: build/templates/build/detail.html:24 company/models.py:278
#: company/models.py:512 company/templates/company/company_base.html:71
#: company/templates/company/manufacturer_part.html:75
#: company/templates/company/supplier_part.html:73 label/models.py:108
-#: order/models.py:133 part/models.py:762 part/templates/part/category.html:74
-#: part/templates/part/part_base.html:167
-#: part/templates/part/set_category.html:14 report/models.py:164
+#: order/models.py:134 part/models.py:762 part/templates/part/category.html:74
+#: part/templates/part/part_base.html:167 report/models.py:164
#: report/models.py:509 report/models.py:550
#: report/templates/report/inventree_build_order_base.html:118
#: stock/templates/stock/location.html:103
#: templates/InvenTree/settings/plugin_settings.html:33
-#: templates/js/translated/bom.js:553 templates/js/translated/bom.js:851
-#: templates/js/translated/build.js:2476 templates/js/translated/company.js:401
-#: templates/js/translated/company.js:666
-#: templates/js/translated/company.js:957 templates/js/translated/order.js:1656
+#: templates/js/translated/bom.js:553 templates/js/translated/bom.js:845
+#: templates/js/translated/build.js:2476 templates/js/translated/company.js:395
+#: templates/js/translated/company.js:651
+#: templates/js/translated/company.js:942 templates/js/translated/order.js:1656
#: templates/js/translated/order.js:1888 templates/js/translated/order.js:2476
-#: templates/js/translated/part.js:674 templates/js/translated/part.js:1082
-#: templates/js/translated/part.js:1355 templates/js/translated/part.js:1755
-#: templates/js/translated/part.js:1824 templates/js/translated/stock.js:1676
-#: templates/js/translated/stock.js:2295 templates/js/translated/stock.js:2350
+#: templates/js/translated/part.js:718 templates/js/translated/part.js:1126
+#: templates/js/translated/part.js:1399 templates/js/translated/part.js:1851
+#: templates/js/translated/part.js:1920 templates/js/translated/stock.js:1686
+#: templates/js/translated/stock.js:2305 templates/js/translated/stock.js:2360
msgid "Description"
msgstr "描述信息"
-#: InvenTree/models.py:341
+#: InvenTree/models.py:345
msgid "Description (optional)"
msgstr "描述 (可选)"
-#: InvenTree/models.py:349
+#: InvenTree/models.py:353
msgid "parent"
msgstr "上级项"
-#: InvenTree/serializers.py:52 part/models.py:2652
+#: InvenTree/models.py:466
+msgid "Server Error"
+msgstr ""
+
+#: InvenTree/models.py:467
+msgid "An error has been logged by the server."
+msgstr ""
+
+#: InvenTree/serializers.py:52 part/models.py:2640
msgid "Must be a valid number"
msgstr "必须是有效数字"
-#: InvenTree/serializers.py:271
+#: InvenTree/serializers.py:263
msgid "Filename"
msgstr "文件名"
-#: InvenTree/serializers.py:306
+#: InvenTree/serializers.py:298
msgid "Invalid value"
msgstr ""
-#: InvenTree/serializers.py:328
+#: InvenTree/serializers.py:320
msgid "Data File"
msgstr ""
-#: InvenTree/serializers.py:329
+#: InvenTree/serializers.py:321
msgid "Select data file for upload"
msgstr ""
-#: InvenTree/serializers.py:350
+#: InvenTree/serializers.py:342
msgid "Unsupported file type"
msgstr ""
-#: InvenTree/serializers.py:356
+#: InvenTree/serializers.py:348
msgid "File is too large"
msgstr ""
-#: InvenTree/serializers.py:377
+#: InvenTree/serializers.py:369
msgid "No columns found in file"
msgstr ""
-#: InvenTree/serializers.py:380
+#: InvenTree/serializers.py:372
msgid "No data rows found in file"
msgstr ""
-#: InvenTree/serializers.py:503
+#: InvenTree/serializers.py:495
msgid "No data rows provided"
msgstr ""
-#: InvenTree/serializers.py:506
+#: InvenTree/serializers.py:498
msgid "No data columns supplied"
msgstr ""
-#: InvenTree/serializers.py:583
+#: InvenTree/serializers.py:575
#, python-brace-format
msgid "Missing required column: '{name}'"
msgstr ""
-#: InvenTree/serializers.py:592
+#: InvenTree/serializers.py:584
#, python-brace-format
msgid "Duplicate column: '{col}'"
msgstr ""
@@ -440,7 +438,7 @@ msgstr "丢失"
msgid "Returned"
msgstr "已退回"
-#: InvenTree/status_codes.py:141 order/models.py:1114
+#: InvenTree/status_codes.py:141 order/models.py:1130
#: templates/js/translated/order.js:3264 templates/js/translated/order.js:3607
msgid "Shipped"
msgstr "已发货"
@@ -525,7 +523,7 @@ msgstr "从父项拆分"
msgid "Split child item"
msgstr "拆分子项"
-#: InvenTree/status_codes.py:281 templates/js/translated/stock.js:2020
+#: InvenTree/status_codes.py:281 templates/js/translated/stock.js:2030
msgid "Merged stock items"
msgstr ""
@@ -597,27 +595,27 @@ msgstr "备损不能超过 100%"
msgid "Invalid value for overage"
msgstr ""
-#: InvenTree/views.py:522
+#: InvenTree/views.py:521
msgid "Delete Item"
msgstr "删除项"
-#: InvenTree/views.py:571
+#: InvenTree/views.py:570
msgid "Check box to confirm item deletion"
msgstr "选中方框以确认项目删除"
-#: InvenTree/views.py:586 templates/InvenTree/settings/user.html:22
+#: InvenTree/views.py:585 templates/InvenTree/settings/user.html:22
msgid "Edit User Information"
msgstr "编辑用户信息"
-#: InvenTree/views.py:598 templates/InvenTree/settings/user.html:19
+#: InvenTree/views.py:597 templates/InvenTree/settings/user.html:19
msgid "Set Password"
msgstr "设置密码"
-#: InvenTree/views.py:618
+#: InvenTree/views.py:617
msgid "Password fields must match"
msgstr "密码字段必须相匹配。"
-#: InvenTree/views.py:842 templates/navbar.html:152
+#: InvenTree/views.py:807 templates/navbar.html:152
msgid "System Information"
msgstr "系统信息"
@@ -628,6 +626,7 @@ msgstr "上级生产选项无效"
#: build/models.py:131 build/templates/build/build_base.html:9
#: build/templates/build/build_base.html:27
#: report/templates/report/inventree_build_order_base.html:106
+#: templates/email/overdue_build_order.html:15
#: templates/js/translated/build.js:727
msgid "Build Order"
msgstr "生产订单"
@@ -646,12 +645,12 @@ msgstr "生产订单"
msgid "Build Order Reference"
msgstr "相关生产订单"
-#: build/models.py:189 order/models.py:288 order/models.py:638
-#: order/models.py:916 part/models.py:2570
+#: build/models.py:189 order/models.py:293 order/models.py:654
+#: order/models.py:932 part/models.py:2558
#: part/templates/part/upload_bom.html:54
#: report/templates/report/inventree_po_report.html:91
#: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:688 templates/js/translated/bom.js:858
+#: templates/js/translated/bom.js:690 templates/js/translated/bom.js:852
#: templates/js/translated/build.js:1777 templates/js/translated/order.js:1919
#: templates/js/translated/order.js:2120 templates/js/translated/order.js:3448
#: templates/js/translated/order.js:3959
@@ -673,13 +672,12 @@ msgstr "此次生产匹配的订单"
#: build/models.py:215 build/templates/build/build_base.html:77
#: build/templates/build/detail.html:29 company/models.py:647
-#: order/models.py:1012 order/models.py:1103 part/models.py:336
-#: part/models.py:2099 part/models.py:2114 part/models.py:2133
-#: part/models.py:2151 part/models.py:2250 part/models.py:2370
-#: part/models.py:2460 part/models.py:2545 part/models.py:2821
-#: part/serializers.py:793 part/templates/part/part_app_base.html:8
+#: order/models.py:1028 order/models.py:1119 part/models.py:336
+#: part/models.py:2087 part/models.py:2102 part/models.py:2121
+#: part/models.py:2139 part/models.py:2238 part/models.py:2358
+#: part/models.py:2448 part/models.py:2533 part/models.py:2809
+#: part/serializers.py:795 part/templates/part/part_app_base.html:8
#: part/templates/part/part_pricing.html:12
-#: part/templates/part/set_category.html:13
#: part/templates/part/upload_bom.html:52
#: report/templates/report/inventree_build_order_base.html:110
#: report/templates/report/inventree_po_report.html:89
@@ -687,22 +685,23 @@ msgstr "此次生产匹配的订单"
#: templates/InvenTree/search.html:80
#: templates/email/build_order_required_stock.html:17
#: templates/email/low_stock_notification.html:16
+#: templates/email/overdue_build_order.html:16
#: templates/js/translated/barcode.js:435 templates/js/translated/bom.js:552
-#: templates/js/translated/bom.js:687 templates/js/translated/bom.js:805
+#: templates/js/translated/bom.js:689 templates/js/translated/bom.js:799
#: templates/js/translated/build.js:1153 templates/js/translated/build.js:1647
#: templates/js/translated/build.js:2083 templates/js/translated/build.js:2481
-#: templates/js/translated/company.js:252
-#: templates/js/translated/company.js:486
-#: templates/js/translated/company.js:607
-#: templates/js/translated/company.js:866 templates/js/translated/order.js:100
+#: templates/js/translated/company.js:253
+#: templates/js/translated/company.js:482
+#: templates/js/translated/company.js:592
+#: templates/js/translated/company.js:851 templates/js/translated/order.js:100
#: templates/js/translated/order.js:883 templates/js/translated/order.js:1315
#: templates/js/translated/order.js:1873 templates/js/translated/order.js:2819
#: templates/js/translated/order.js:3217 templates/js/translated/order.js:3432
-#: templates/js/translated/part.js:1067 templates/js/translated/part.js:1137
-#: templates/js/translated/part.js:1333 templates/js/translated/stock.js:531
-#: templates/js/translated/stock.js:696 templates/js/translated/stock.js:903
-#: templates/js/translated/stock.js:1633 templates/js/translated/stock.js:2376
-#: templates/js/translated/stock.js:2571 templates/js/translated/stock.js:2705
+#: templates/js/translated/part.js:1111 templates/js/translated/part.js:1181
+#: templates/js/translated/part.js:1377 templates/js/translated/stock.js:530
+#: templates/js/translated/stock.js:695 templates/js/translated/stock.js:902
+#: templates/js/translated/stock.js:1643 templates/js/translated/stock.js:2386
+#: templates/js/translated/stock.js:2581 templates/js/translated/stock.js:2715
msgid "Part"
msgstr "商品"
@@ -768,12 +767,12 @@ msgstr "批量代码"
msgid "Batch code for this build output"
msgstr "此生产产出的批量代码"
-#: build/models.py:282 order/models.py:137 part/models.py:932
+#: build/models.py:282 order/models.py:138 part/models.py:932
#: part/templates/part/part_base.html:305 templates/js/translated/order.js:2489
msgid "Creation Date"
msgstr "创建日期"
-#: build/models.py:286 order/models.py:660
+#: build/models.py:286 order/models.py:676
msgid "Target completion date"
msgstr "预计完成日期"
@@ -781,7 +780,7 @@ msgstr "预计完成日期"
msgid "Target date for build completion. Build will be overdue after this date."
msgstr "生产完成的目标日期。生产将在此日期之后逾期。"
-#: build/models.py:290 order/models.py:331
+#: build/models.py:290 order/models.py:336
#: templates/js/translated/build.js:2558
msgid "Completion Date"
msgstr "完成日期:"
@@ -799,7 +798,7 @@ msgid "User who issued this build order"
msgstr "发布此生产订单的用户"
#: build/models.py:313 build/templates/build/build_base.html:190
-#: build/templates/build/detail.html:115 order/models.py:151
+#: build/templates/build/detail.html:115 order/models.py:152
#: order/templates/order/order_base.html:176
#: order/templates/order/sales_order_base.html:183 part/models.py:936
#: report/templates/report/inventree_build_order_base.html:159
@@ -822,20 +821,20 @@ msgstr "外部链接"
#: build/models.py:324 build/serializers.py:374
#: build/templates/build/sidebar.html:21 company/models.py:134
#: company/models.py:519 company/templates/company/sidebar.html:25
-#: order/models.py:155 order/models.py:918 order/models.py:1213
+#: order/models.py:156 order/models.py:934 order/models.py:1229
#: order/templates/order/po_sidebar.html:11
#: order/templates/order/so_sidebar.html:17 part/models.py:921
#: part/templates/part/part_sidebar.html:59
#: report/templates/report/inventree_build_order_base.html:173
-#: stock/models.py:713 stock/models.py:1985 stock/models.py:2093
+#: stock/models.py:713 stock/models.py:1989 stock/models.py:2097
#: stock/serializers.py:315 stock/serializers.py:444 stock/serializers.py:486
-#: stock/serializers.py:772 stock/serializers.py:871 stock/serializers.py:1003
+#: stock/serializers.py:759 stock/serializers.py:858 stock/serializers.py:990
#: stock/templates/stock/stock_sidebar.html:25
-#: templates/js/translated/barcode.js:100 templates/js/translated/bom.js:1044
-#: templates/js/translated/company.js:962 templates/js/translated/order.js:2040
+#: templates/js/translated/barcode.js:100 templates/js/translated/bom.js:1038
+#: templates/js/translated/company.js:947 templates/js/translated/order.js:2040
#: templates/js/translated/order.js:2191 templates/js/translated/order.js:2687
#: templates/js/translated/order.js:3632 templates/js/translated/order.js:4030
-#: templates/js/translated/stock.js:1307 templates/js/translated/stock.js:1916
+#: templates/js/translated/stock.js:1317 templates/js/translated/stock.js:1926
msgid "Notes"
msgstr "备注"
@@ -855,44 +854,44 @@ msgstr "生产产出已完成"
msgid "Build output does not match Build Order"
msgstr "生产产出与订单不匹配"
-#: build/models.py:1108
+#: build/models.py:1111
msgid "Build item must specify a build output, as master part is marked as trackable"
msgstr ""
-#: build/models.py:1117
+#: build/models.py:1120
#, python-brace-format
msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})"
msgstr ""
-#: build/models.py:1127
+#: build/models.py:1130
msgid "Stock item is over-allocated"
msgstr "库存物品分配过度!"
-#: build/models.py:1133 order/models.py:1372
+#: build/models.py:1136 order/models.py:1388
msgid "Allocation quantity must be greater than zero"
msgstr "分配数量必须大于0"
-#: build/models.py:1139
+#: build/models.py:1142
msgid "Quantity must be 1 for serialized stock"
msgstr ""
-#: build/models.py:1196
+#: build/models.py:1199
msgid "Selected stock item not found in BOM"
msgstr ""
-#: build/models.py:1265 stock/templates/stock/item_base.html:177
+#: build/models.py:1268 stock/templates/stock/item_base.html:177
#: templates/InvenTree/search.html:137 templates/js/translated/build.js:2454
#: templates/navbar.html:38
msgid "Build"
msgstr "生产"
-#: build/models.py:1266
+#: build/models.py:1269
msgid "Build to allocate parts"
msgstr ""
-#: build/models.py:1282 build/serializers.py:603 order/serializers.py:994
-#: order/serializers.py:1015 stock/serializers.py:382 stock/serializers.py:703
-#: stock/serializers.py:829 stock/templates/stock/item_base.html:10
+#: build/models.py:1285 build/serializers.py:603 order/serializers.py:996
+#: order/serializers.py:1017 stock/serializers.py:382 stock/serializers.py:690
+#: stock/serializers.py:816 stock/templates/stock/item_base.html:10
#: stock/templates/stock/item_base.html:23
#: stock/templates/stock/item_base.html:199
#: templates/js/translated/build.js:738 templates/js/translated/build.js:743
@@ -900,22 +899,22 @@ msgstr ""
#: templates/js/translated/order.js:101 templates/js/translated/order.js:2820
#: templates/js/translated/order.js:3124 templates/js/translated/order.js:3129
#: templates/js/translated/order.js:3224 templates/js/translated/order.js:3314
-#: templates/js/translated/stock.js:532 templates/js/translated/stock.js:697
-#: templates/js/translated/stock.js:2449
+#: templates/js/translated/stock.js:531 templates/js/translated/stock.js:696
+#: templates/js/translated/stock.js:2459
msgid "Stock Item"
msgstr "库存项"
-#: build/models.py:1283
+#: build/models.py:1286
msgid "Source stock item"
msgstr "源库存项"
-#: build/models.py:1295 build/serializers.py:183
+#: build/models.py:1298 build/serializers.py:183
#: build/templates/build/build_base.html:82
-#: build/templates/build/detail.html:34 common/models.py:1536
+#: build/templates/build/detail.html:34 common/models.py:1543
#: company/forms.py:36 company/templates/company/supplier_part.html:258
-#: order/models.py:909 order/models.py:1412 order/serializers.py:1134
-#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:68
-#: part/forms.py:83 part/forms.py:98 part/models.py:2561
+#: order/models.py:925 order/models.py:1428 order/serializers.py:1136
+#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:59
+#: part/forms.py:74 part/forms.py:89 part/models.py:2549
#: part/templates/part/detail.html:935 part/templates/part/detail.html:1021
#: part/templates/part/part_pricing.html:16
#: part/templates/part/upload_bom.html:53
@@ -926,8 +925,8 @@ msgstr "源库存项"
#: report/templates/report/inventree_test_report_base.html:139
#: stock/serializers.py:279 stock/templates/stock/item_base.html:292
#: stock/templates/stock/item_base.html:300
-#: templates/js/translated/barcode.js:437 templates/js/translated/bom.js:689
-#: templates/js/translated/bom.js:866 templates/js/translated/build.js:422
+#: templates/js/translated/barcode.js:437 templates/js/translated/bom.js:691
+#: templates/js/translated/bom.js:860 templates/js/translated/build.js:422
#: templates/js/translated/build.js:574 templates/js/translated/build.js:765
#: templates/js/translated/build.js:1175 templates/js/translated/build.js:1673
#: templates/js/translated/build.js:2086
@@ -937,23 +936,23 @@ msgstr "源库存项"
#: templates/js/translated/order.js:2821 templates/js/translated/order.js:3143
#: templates/js/translated/order.js:3231 templates/js/translated/order.js:3320
#: templates/js/translated/order.js:3454 templates/js/translated/order.js:3965
-#: templates/js/translated/part.js:967 templates/js/translated/part.js:1969
-#: templates/js/translated/part.js:2200 templates/js/translated/part.js:2234
-#: templates/js/translated/part.js:2312 templates/js/translated/stock.js:403
-#: templates/js/translated/stock.js:557 templates/js/translated/stock.js:727
-#: templates/js/translated/stock.js:2498 templates/js/translated/stock.js:2583
+#: templates/js/translated/part.js:1011 templates/js/translated/part.js:2065
+#: templates/js/translated/part.js:2296 templates/js/translated/part.js:2330
+#: templates/js/translated/part.js:2408 templates/js/translated/stock.js:402
+#: templates/js/translated/stock.js:556 templates/js/translated/stock.js:726
+#: templates/js/translated/stock.js:2508 templates/js/translated/stock.js:2593
msgid "Quantity"
msgstr "数量"
-#: build/models.py:1296
+#: build/models.py:1299
msgid "Stock quantity to allocate to build"
msgstr ""
-#: build/models.py:1304
+#: build/models.py:1307
msgid "Install into"
msgstr "安装到"
-#: build/models.py:1305
+#: build/models.py:1308
msgid "Destination stock item"
msgstr ""
@@ -982,9 +981,9 @@ msgstr ""
msgid "Enter quantity for build output"
msgstr "输入生产产出数量"
-#: build/serializers.py:198 build/serializers.py:623 order/models.py:363
-#: order/serializers.py:280 order/serializers.py:435 part/serializers.py:512
-#: part/serializers.py:956 stock/models.py:470 stock/models.py:1239
+#: build/serializers.py:198 build/serializers.py:623 order/models.py:368
+#: order/serializers.py:280 order/serializers.py:435 part/serializers.py:514
+#: part/serializers.py:958 stock/models.py:470 stock/models.py:1239
#: stock/serializers.py:288
msgid "Quantity must be greater than zero"
msgstr ""
@@ -997,9 +996,9 @@ msgstr ""
msgid "Integer quantity required, as the bill of materials contains trackable parts"
msgstr ""
-#: build/serializers.py:222 order/serializers.py:448 order/serializers.py:1138
+#: build/serializers.py:222 order/serializers.py:448 order/serializers.py:1140
#: stock/serializers.py:297 templates/js/translated/order.js:1186
-#: templates/js/translated/stock.js:238 templates/js/translated/stock.js:404
+#: templates/js/translated/stock.js:237 templates/js/translated/stock.js:403
msgid "Serial Numbers"
msgstr "序列号"
@@ -1015,7 +1014,7 @@ msgstr ""
msgid "Automatically allocate required items with matching serial numbers"
msgstr ""
-#: build/serializers.py:268 stock/api.py:552
+#: build/serializers.py:268 stock/api.py:553
msgid "The following serial numbers already exist"
msgstr ""
@@ -1025,16 +1024,16 @@ msgstr ""
#: build/serializers.py:356 order/serializers.py:421 order/serializers.py:525
#: stock/serializers.py:308 stock/serializers.py:439 stock/serializers.py:481
-#: stock/serializers.py:864 stock/serializers.py:1097
+#: stock/serializers.py:851 stock/serializers.py:1084
#: stock/templates/stock/item_base.html:390
#: templates/js/translated/barcode.js:436
#: templates/js/translated/barcode.js:618 templates/js/translated/build.js:750
#: templates/js/translated/build.js:1685 templates/js/translated/order.js:1213
#: templates/js/translated/order.js:3136 templates/js/translated/order.js:3239
#: templates/js/translated/order.js:3247 templates/js/translated/order.js:3328
-#: templates/js/translated/part.js:180 templates/js/translated/stock.js:533
-#: templates/js/translated/stock.js:698 templates/js/translated/stock.js:905
-#: templates/js/translated/stock.js:1787 templates/js/translated/stock.js:2390
+#: templates/js/translated/part.js:180 templates/js/translated/stock.js:532
+#: templates/js/translated/stock.js:697 templates/js/translated/stock.js:904
+#: templates/js/translated/stock.js:1797 templates/js/translated/stock.js:2400
msgid "Location"
msgstr "地点"
@@ -1043,12 +1042,12 @@ msgid "Location for completed build outputs"
msgstr ""
#: build/serializers.py:363 build/templates/build/build_base.html:142
-#: build/templates/build/detail.html:62 order/models.py:654
+#: build/templates/build/detail.html:62 order/models.py:670
#: order/serializers.py:458 stock/templates/stock/item_base.html:423
#: templates/js/translated/barcode.js:182 templates/js/translated/build.js:2510
#: templates/js/translated/order.js:1320 templates/js/translated/order.js:1660
-#: templates/js/translated/order.js:2481 templates/js/translated/stock.js:1762
-#: templates/js/translated/stock.js:2467 templates/js/translated/stock.js:2599
+#: templates/js/translated/order.js:2481 templates/js/translated/stock.js:1772
+#: templates/js/translated/stock.js:2477 templates/js/translated/stock.js:2609
msgid "Status"
msgstr "状态"
@@ -1108,8 +1107,8 @@ msgstr ""
msgid "No build outputs have been created for this build order"
msgstr ""
-#: build/serializers.py:535 build/serializers.py:580 part/models.py:2679
-#: part/models.py:2813
+#: build/serializers.py:535 build/serializers.py:580 part/models.py:2667
+#: part/models.py:2801
msgid "BOM Item"
msgstr ""
@@ -1125,11 +1124,11 @@ msgstr ""
msgid "bom_item.part must point to the same part as the build order"
msgstr ""
-#: build/serializers.py:609 stock/serializers.py:716
+#: build/serializers.py:609 stock/serializers.py:703
msgid "Item must be in stock"
msgstr ""
-#: build/serializers.py:667 order/serializers.py:1052
+#: build/serializers.py:667 order/serializers.py:1054
#, python-brace-format
msgid "Available quantity ({q}) exceeded"
msgstr ""
@@ -1146,7 +1145,7 @@ msgstr ""
msgid "This stock item has already been allocated to this build output"
msgstr ""
-#: build/serializers.py:708 order/serializers.py:1298
+#: build/serializers.py:708 order/serializers.py:1300
msgid "Allocation items must be provided"
msgstr ""
@@ -1178,10 +1177,19 @@ msgstr ""
msgid "Allow allocation of substitute parts"
msgstr ""
-#: build/tasks.py:96
+#: build/tasks.py:100
msgid "Stock required for build order"
msgstr ""
+#: build/tasks.py:118
+msgid "Overdue Build Order"
+msgstr ""
+
+#: build/tasks.py:123
+#, python-brace-format
+msgid "Build order {bo} is now overdue"
+msgstr ""
+
#: build/templates/build/build_base.html:39
#: order/templates/order/order_base.html:28
#: order/templates/order/sales_order_base.html:38
@@ -1244,13 +1252,13 @@ msgid "Stock has not been fully allocated to this Build Order"
msgstr ""
#: build/templates/build/build_base.html:151
-#: build/templates/build/detail.html:131 order/models.py:922
+#: build/templates/build/detail.html:131 order/models.py:938
#: order/templates/order/order_base.html:162
#: order/templates/order/sales_order_base.html:164
#: report/templates/report/inventree_build_order_base.html:126
#: templates/js/translated/build.js:2550 templates/js/translated/order.js:1677
#: templates/js/translated/order.js:1987 templates/js/translated/order.js:2497
-#: templates/js/translated/order.js:3517 templates/js/translated/part.js:971
+#: templates/js/translated/order.js:3517 templates/js/translated/part.js:1015
msgid "Target Date"
msgstr "预计日期"
@@ -1277,13 +1285,14 @@ msgid "Completed"
msgstr "已完成"
#: build/templates/build/build_base.html:176
-#: build/templates/build/detail.html:94 order/models.py:1100
-#: order/models.py:1185 order/models.py:1320
+#: build/templates/build/detail.html:94 order/models.py:1116
+#: order/models.py:1201 order/models.py:1336
#: order/templates/order/sales_order_base.html:9
#: order/templates/order/sales_order_base.html:28
#: report/templates/report/inventree_build_order_base.html:136
#: report/templates/report/inventree_so_report.html:77
#: stock/templates/stock/item_base.html:370
+#: templates/email/overdue_sales_order.html:15
#: templates/js/translated/order.js:2436
msgid "Sales Order"
msgstr "销售订单"
@@ -1319,7 +1328,7 @@ msgstr ""
msgid "Stock can be taken from any available location."
msgstr ""
-#: build/templates/build/detail.html:49 order/models.py:1034
+#: build/templates/build/detail.html:49 order/models.py:1050
#: templates/js/translated/order.js:1321 templates/js/translated/order.js:2029
msgid "Destination"
msgstr ""
@@ -1336,8 +1345,8 @@ msgstr ""
#: stock/templates/stock/item_base.html:170
#: templates/js/translated/build.js:1179
#: templates/js/translated/model_renderers.js:112
-#: templates/js/translated/stock.js:971 templates/js/translated/stock.js:1776
-#: templates/js/translated/stock.js:2606
+#: templates/js/translated/stock.js:970 templates/js/translated/stock.js:1786
+#: templates/js/translated/stock.js:2616
#: templates/js/translated/table_filters.js:151
#: templates/js/translated/table_filters.js:242
msgid "Batch"
@@ -1716,7 +1725,7 @@ msgstr ""
msgid "Copy category parameter templates when creating a part"
msgstr ""
-#: common/models.py:820 part/models.py:2372 report/models.py:157
+#: common/models.py:820 part/models.py:2360 report/models.py:157
#: templates/js/translated/table_filters.js:38
#: templates/js/translated/table_filters.js:444
msgid "Template"
@@ -1726,7 +1735,7 @@ msgstr "模板"
msgid "Parts are templates by default"
msgstr ""
-#: common/models.py:827 part/models.py:884 templates/js/translated/bom.js:1390
+#: common/models.py:827 part/models.py:884 templates/js/translated/bom.js:1384
#: templates/js/translated/table_filters.js:168
#: templates/js/translated/table_filters.js:460
msgid "Assembly"
@@ -1880,576 +1889,584 @@ msgid "Default page size for PDF reports"
msgstr "PDF 报表默认页面大小"
#: common/models.py:968
-msgid "Test Reports"
-msgstr "测试报表"
+msgid "Enable Test Reports"
+msgstr ""
#: common/models.py:969
msgid "Enable generation of test reports"
msgstr "启用生成测试报表"
#: common/models.py:975
-msgid "Batch Code Template"
+msgid "Attach Test Reports"
msgstr ""
#: common/models.py:976
+msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item"
+msgstr ""
+
+#: common/models.py:982
+msgid "Batch Code Template"
+msgstr ""
+
+#: common/models.py:983
msgid "Template for generating default batch codes for stock items"
msgstr ""
-#: common/models.py:981
+#: common/models.py:988
msgid "Stock Expiry"
msgstr "库存到期"
-#: common/models.py:982
+#: common/models.py:989
msgid "Enable stock expiry functionality"
msgstr "启用库存到期功能"
-#: common/models.py:988
+#: common/models.py:995
msgid "Sell Expired Stock"
msgstr "销售过期库存"
-#: common/models.py:989
+#: common/models.py:996
msgid "Allow sale of expired stock"
msgstr "允许销售过期库存"
-#: common/models.py:995
+#: common/models.py:1002
msgid "Stock Stale Time"
msgstr ""
-#: common/models.py:996
+#: common/models.py:1003
msgid "Number of days stock items are considered stale before expiring"
msgstr ""
-#: common/models.py:998
+#: common/models.py:1005
msgid "days"
msgstr "天"
-#: common/models.py:1003
+#: common/models.py:1010
msgid "Build Expired Stock"
msgstr ""
-#: common/models.py:1004
+#: common/models.py:1011
msgid "Allow building with expired stock"
msgstr ""
-#: common/models.py:1010
+#: common/models.py:1017
msgid "Stock Ownership Control"
msgstr "库存所有权控制"
-#: common/models.py:1011
+#: common/models.py:1018
msgid "Enable ownership control over stock locations and items"
msgstr ""
-#: common/models.py:1017
+#: common/models.py:1024
msgid "Build Order Reference Prefix"
msgstr "生产订单参考前缀"
-#: common/models.py:1018
+#: common/models.py:1025
msgid "Prefix value for build order reference"
msgstr ""
-#: common/models.py:1023
+#: common/models.py:1030
msgid "Build Order Reference Regex"
msgstr ""
-#: common/models.py:1024
+#: common/models.py:1031
msgid "Regular expression pattern for matching build order reference"
msgstr ""
-#: common/models.py:1028
+#: common/models.py:1035
msgid "Sales Order Reference Prefix"
msgstr ""
-#: common/models.py:1029
+#: common/models.py:1036
msgid "Prefix value for sales order reference"
msgstr ""
-#: common/models.py:1034
+#: common/models.py:1041
msgid "Sales Order Default Shipment"
msgstr ""
-#: common/models.py:1035
+#: common/models.py:1042
msgid "Enable creation of default shipment with sales orders"
msgstr ""
-#: common/models.py:1041
+#: common/models.py:1048
msgid "Purchase Order Reference Prefix"
msgstr ""
-#: common/models.py:1042
+#: common/models.py:1049
msgid "Prefix value for purchase order reference"
msgstr ""
-#: common/models.py:1048
+#: common/models.py:1055
msgid "Enable password forgot"
msgstr ""
-#: common/models.py:1049
+#: common/models.py:1056
msgid "Enable password forgot function on the login pages"
msgstr ""
-#: common/models.py:1055
+#: common/models.py:1062
msgid "Enable registration"
msgstr ""
-#: common/models.py:1056
+#: common/models.py:1063
msgid "Enable self-registration for users on the login pages"
msgstr ""
-#: common/models.py:1062
+#: common/models.py:1069
msgid "Enable SSO"
msgstr ""
-#: common/models.py:1063
+#: common/models.py:1070
msgid "Enable SSO on the login pages"
msgstr ""
-#: common/models.py:1069
+#: common/models.py:1076
msgid "Email required"
msgstr ""
-#: common/models.py:1070
+#: common/models.py:1077
msgid "Require user to supply mail on signup"
msgstr ""
-#: common/models.py:1076
+#: common/models.py:1083
msgid "Auto-fill SSO users"
msgstr ""
-#: common/models.py:1077
+#: common/models.py:1084
msgid "Automatically fill out user-details from SSO account-data"
msgstr ""
-#: common/models.py:1083
+#: common/models.py:1090
msgid "Mail twice"
msgstr ""
-#: common/models.py:1084
+#: common/models.py:1091
msgid "On signup ask users twice for their mail"
msgstr ""
-#: common/models.py:1090
+#: common/models.py:1097
msgid "Password twice"
msgstr ""
-#: common/models.py:1091
+#: common/models.py:1098
msgid "On signup ask users twice for their password"
msgstr ""
-#: common/models.py:1097
+#: common/models.py:1104
msgid "Group on signup"
msgstr ""
-#: common/models.py:1098
+#: common/models.py:1105
msgid "Group to which new users are assigned on registration"
msgstr ""
-#: common/models.py:1104
+#: common/models.py:1111
msgid "Enforce MFA"
msgstr ""
-#: common/models.py:1105
+#: common/models.py:1112
msgid "Users must use multifactor security."
msgstr ""
-#: common/models.py:1111
+#: common/models.py:1118
msgid "Check plugins on startup"
msgstr ""
-#: common/models.py:1112
+#: common/models.py:1119
msgid "Check that all plugins are installed on startup - enable in container enviroments"
msgstr ""
-#: common/models.py:1120
+#: common/models.py:1127
msgid "Enable URL integration"
msgstr ""
-#: common/models.py:1121
+#: common/models.py:1128
msgid "Enable plugins to add URL routes"
msgstr ""
-#: common/models.py:1128
+#: common/models.py:1135
msgid "Enable navigation integration"
msgstr ""
-#: common/models.py:1129
+#: common/models.py:1136
msgid "Enable plugins to integrate into navigation"
msgstr ""
-#: common/models.py:1136
+#: common/models.py:1143
msgid "Enable app integration"
msgstr ""
-#: common/models.py:1137
+#: common/models.py:1144
msgid "Enable plugins to add apps"
msgstr ""
-#: common/models.py:1144
+#: common/models.py:1151
msgid "Enable schedule integration"
msgstr ""
-#: common/models.py:1145
+#: common/models.py:1152
msgid "Enable plugins to run scheduled tasks"
msgstr ""
-#: common/models.py:1152
+#: common/models.py:1159
msgid "Enable event integration"
msgstr ""
-#: common/models.py:1153
+#: common/models.py:1160
msgid "Enable plugins to respond to internal events"
msgstr ""
-#: common/models.py:1170 common/models.py:1492
+#: common/models.py:1177 common/models.py:1499
msgid "Settings key (must be unique - case insensitive"
msgstr ""
-#: common/models.py:1192
+#: common/models.py:1199
msgid "Show subscribed parts"
msgstr ""
-#: common/models.py:1193
+#: common/models.py:1200
msgid "Show subscribed parts on the homepage"
msgstr ""
-#: common/models.py:1199
+#: common/models.py:1206
msgid "Show subscribed categories"
msgstr ""
-#: common/models.py:1200
+#: common/models.py:1207
msgid "Show subscribed part categories on the homepage"
msgstr ""
-#: common/models.py:1206
+#: common/models.py:1213
msgid "Show latest parts"
msgstr "显示最近商品"
-#: common/models.py:1207
+#: common/models.py:1214
msgid "Show latest parts on the homepage"
msgstr "在主页上显示最近商品"
-#: common/models.py:1213
+#: common/models.py:1220
msgid "Recent Part Count"
msgstr ""
-#: common/models.py:1214
+#: common/models.py:1221
msgid "Number of recent parts to display on index page"
msgstr ""
-#: common/models.py:1220
+#: common/models.py:1227
msgid "Show unvalidated BOMs"
msgstr ""
-#: common/models.py:1221
+#: common/models.py:1228
msgid "Show BOMs that await validation on the homepage"
msgstr ""
-#: common/models.py:1227
+#: common/models.py:1234
msgid "Show recent stock changes"
msgstr ""
-#: common/models.py:1228
+#: common/models.py:1235
msgid "Show recently changed stock items on the homepage"
msgstr ""
-#: common/models.py:1234
+#: common/models.py:1241
msgid "Recent Stock Count"
msgstr ""
-#: common/models.py:1235
+#: common/models.py:1242
msgid "Number of recent stock items to display on index page"
msgstr ""
-#: common/models.py:1241
+#: common/models.py:1248
msgid "Show low stock"
msgstr ""
-#: common/models.py:1242
+#: common/models.py:1249
msgid "Show low stock items on the homepage"
msgstr ""
-#: common/models.py:1248
+#: common/models.py:1255
msgid "Show depleted stock"
msgstr ""
-#: common/models.py:1249
+#: common/models.py:1256
msgid "Show depleted stock items on the homepage"
msgstr ""
-#: common/models.py:1255
+#: common/models.py:1262
msgid "Show needed stock"
msgstr ""
-#: common/models.py:1256
+#: common/models.py:1263
msgid "Show stock items needed for builds on the homepage"
msgstr ""
-#: common/models.py:1262
+#: common/models.py:1269
msgid "Show expired stock"
msgstr ""
-#: common/models.py:1263
+#: common/models.py:1270
msgid "Show expired stock items on the homepage"
msgstr ""
-#: common/models.py:1269
+#: common/models.py:1276
msgid "Show stale stock"
msgstr ""
-#: common/models.py:1270
+#: common/models.py:1277
msgid "Show stale stock items on the homepage"
msgstr ""
-#: common/models.py:1276
+#: common/models.py:1283
msgid "Show pending builds"
msgstr ""
-#: common/models.py:1277
+#: common/models.py:1284
msgid "Show pending builds on the homepage"
msgstr ""
-#: common/models.py:1283
+#: common/models.py:1290
msgid "Show overdue builds"
msgstr "显示逾期生产"
-#: common/models.py:1284
+#: common/models.py:1291
msgid "Show overdue builds on the homepage"
msgstr "在主页上显示逾期的生产"
-#: common/models.py:1290
+#: common/models.py:1297
msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:1291
+#: common/models.py:1298
msgid "Show outstanding POs on the homepage"
msgstr ""
-#: common/models.py:1297
+#: common/models.py:1304
msgid "Show overdue POs"
msgstr ""
-#: common/models.py:1298
+#: common/models.py:1305
msgid "Show overdue POs on the homepage"
msgstr ""
-#: common/models.py:1304
+#: common/models.py:1311
msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:1305
+#: common/models.py:1312
msgid "Show outstanding SOs on the homepage"
msgstr ""
-#: common/models.py:1311
+#: common/models.py:1318
msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:1312
+#: common/models.py:1319
msgid "Show overdue SOs on the homepage"
msgstr ""
-#: common/models.py:1317
+#: common/models.py:1324
msgid "Enable label printing"
msgstr ""
-#: common/models.py:1318
+#: common/models.py:1325
msgid "Enable label printing from the web interface"
msgstr ""
-#: common/models.py:1324
+#: common/models.py:1331
msgid "Inline label display"
msgstr "内嵌标签显示"
-#: common/models.py:1325
+#: common/models.py:1332
msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr "在浏览器中显示 PDF 标签,而不是以文件形式下载"
-#: common/models.py:1331
+#: common/models.py:1338
msgid "Inline report display"
msgstr ""
-#: common/models.py:1332
+#: common/models.py:1339
msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr "在浏览器中显示 PDF 报告,而不是以文件形式下载"
-#: common/models.py:1338
+#: common/models.py:1345
msgid "Search Parts"
msgstr ""
-#: common/models.py:1339
+#: common/models.py:1346
msgid "Display parts in search preview window"
msgstr ""
-#: common/models.py:1345
+#: common/models.py:1352
msgid "Seach Supplier Parts"
msgstr ""
-#: common/models.py:1346
+#: common/models.py:1353
msgid "Display supplier parts in search preview window"
msgstr ""
-#: common/models.py:1352
+#: common/models.py:1359
msgid "Search Manufacturer Parts"
msgstr ""
-#: common/models.py:1353
+#: common/models.py:1360
msgid "Display manufacturer parts in search preview window"
msgstr ""
-#: common/models.py:1359
+#: common/models.py:1366
msgid "Hide Inactive Parts"
msgstr ""
-#: common/models.py:1360
+#: common/models.py:1367
msgid "Excluded inactive parts from search preview window"
msgstr ""
-#: common/models.py:1366
+#: common/models.py:1373
msgid "Search Categories"
msgstr ""
-#: common/models.py:1367
+#: common/models.py:1374
msgid "Display part categories in search preview window"
msgstr ""
-#: common/models.py:1373
+#: common/models.py:1380
msgid "Search Stock"
msgstr ""
-#: common/models.py:1374
+#: common/models.py:1381
msgid "Display stock items in search preview window"
msgstr ""
-#: common/models.py:1380
+#: common/models.py:1387
msgid "Hide Unavailable Stock Items"
msgstr ""
-#: common/models.py:1381
+#: common/models.py:1388
msgid "Exclude stock items which are not available from the search preview window"
msgstr ""
-#: common/models.py:1387
+#: common/models.py:1394
msgid "Search Locations"
msgstr ""
-#: common/models.py:1388
+#: common/models.py:1395
msgid "Display stock locations in search preview window"
msgstr ""
-#: common/models.py:1394
+#: common/models.py:1401
msgid "Search Companies"
msgstr ""
-#: common/models.py:1395
+#: common/models.py:1402
msgid "Display companies in search preview window"
msgstr ""
-#: common/models.py:1401
+#: common/models.py:1408
msgid "Search Purchase Orders"
msgstr ""
-#: common/models.py:1402
+#: common/models.py:1409
msgid "Display purchase orders in search preview window"
msgstr ""
-#: common/models.py:1408
+#: common/models.py:1415
msgid "Exclude Inactive Purchase Orders"
msgstr ""
-#: common/models.py:1409
+#: common/models.py:1416
msgid "Exclude inactive purchase orders from search preview window"
msgstr ""
-#: common/models.py:1415
+#: common/models.py:1422
msgid "Search Sales Orders"
msgstr ""
-#: common/models.py:1416
+#: common/models.py:1423
msgid "Display sales orders in search preview window"
msgstr ""
-#: common/models.py:1422
+#: common/models.py:1429
msgid "Exclude Inactive Sales Orders"
msgstr ""
-#: common/models.py:1423
+#: common/models.py:1430
msgid "Exclude inactive sales orders from search preview window"
msgstr ""
-#: common/models.py:1429
+#: common/models.py:1436
msgid "Search Preview Results"
msgstr "搜索预览结果"
-#: common/models.py:1430
+#: common/models.py:1437
msgid "Number of results to show in each section of the search preview window"
msgstr ""
-#: common/models.py:1436
+#: common/models.py:1443
msgid "Show Quantity in Forms"
msgstr "在表格中显示数量"
-#: common/models.py:1437
+#: common/models.py:1444
msgid "Display available part quantity in some forms"
msgstr "在某些表格中显示可用的商品数量"
-#: common/models.py:1443
+#: common/models.py:1450
msgid "Escape Key Closes Forms"
msgstr ""
-#: common/models.py:1444
+#: common/models.py:1451
msgid "Use the escape key to close modal forms"
msgstr ""
-#: common/models.py:1450
+#: common/models.py:1457
msgid "Fixed Navbar"
msgstr ""
-#: common/models.py:1451
+#: common/models.py:1458
msgid "The navbar position is fixed to the top of the screen"
msgstr ""
-#: common/models.py:1457
+#: common/models.py:1464
msgid "Date Format"
msgstr ""
-#: common/models.py:1458
+#: common/models.py:1465
msgid "Preferred format for displaying dates"
msgstr ""
-#: common/models.py:1472 part/templates/part/detail.html:39
+#: common/models.py:1479 part/templates/part/detail.html:39
msgid "Part Scheduling"
msgstr ""
-#: common/models.py:1473
+#: common/models.py:1480
msgid "Display part scheduling information"
msgstr ""
-#: common/models.py:1537 company/forms.py:37
+#: common/models.py:1544 company/forms.py:37
msgid "Price break quantity"
msgstr ""
-#: common/models.py:1544 company/serializers.py:288
-#: company/templates/company/supplier_part.html:263 order/models.py:949
-#: templates/js/translated/part.js:998 templates/js/translated/part.js:1974
+#: common/models.py:1551 company/serializers.py:290
+#: company/templates/company/supplier_part.html:263 order/models.py:965
+#: templates/js/translated/part.js:1042 templates/js/translated/part.js:2070
msgid "Price"
msgstr "价格"
-#: common/models.py:1545
+#: common/models.py:1552
msgid "Unit price at specified quantity"
msgstr ""
-#: common/models.py:1705 common/models.py:1883
+#: common/models.py:1712 common/models.py:1890
msgid "Endpoint"
msgstr ""
-#: common/models.py:1706
+#: common/models.py:1713
msgid "Endpoint at which this webhook is received"
msgstr ""
-#: common/models.py:1715
+#: common/models.py:1722
msgid "Name for this webhook"
msgstr ""
-#: common/models.py:1720 part/models.py:911 plugin/models.py:99
+#: common/models.py:1727 part/models.py:911 plugin/models.py:99
#: templates/js/translated/table_filters.js:34
#: templates/js/translated/table_filters.js:96
#: templates/js/translated/table_filters.js:308
@@ -2457,79 +2474,89 @@ msgstr ""
msgid "Active"
msgstr ""
-#: common/models.py:1721
+#: common/models.py:1728
msgid "Is this webhook active"
msgstr ""
-#: common/models.py:1735
+#: common/models.py:1742
msgid "Token"
msgstr ""
-#: common/models.py:1736
+#: common/models.py:1743
msgid "Token for access"
msgstr ""
-#: common/models.py:1743
+#: common/models.py:1750
msgid "Secret"
msgstr ""
-#: common/models.py:1744
+#: common/models.py:1751
msgid "Shared secret for HMAC"
msgstr ""
-#: common/models.py:1850
+#: common/models.py:1857
msgid "Message ID"
msgstr ""
-#: common/models.py:1851
+#: common/models.py:1858
msgid "Unique identifier for this message"
msgstr ""
-#: common/models.py:1859
+#: common/models.py:1866
msgid "Host"
msgstr ""
-#: common/models.py:1860
+#: common/models.py:1867
msgid "Host from which this message was received"
msgstr ""
-#: common/models.py:1867
+#: common/models.py:1874
msgid "Header"
msgstr ""
-#: common/models.py:1868
+#: common/models.py:1875
msgid "Header of this message"
msgstr ""
-#: common/models.py:1874
+#: common/models.py:1881
msgid "Body"
msgstr ""
-#: common/models.py:1875
+#: common/models.py:1882
msgid "Body of this message"
msgstr ""
-#: common/models.py:1884
+#: common/models.py:1891
msgid "Endpoint on which this message was received"
msgstr ""
-#: common/models.py:1889
+#: common/models.py:1896
msgid "Worked on"
msgstr ""
-#: common/models.py:1890
+#: common/models.py:1897
msgid "Was the work on this message finished?"
msgstr ""
+#: common/notifications.py:292
+#, python-brace-format
+msgid "New {verbose_name}"
+msgstr ""
+
+#: common/notifications.py:294
+#, python-brace-format
+msgid "A new {verbose_name} has been created and ,assigned to you"
+msgstr ""
+
#: common/views.py:87 order/templates/order/purchase_order_detail.html:23
-#: order/views.py:102 part/views.py:191
+#: order/views.py:102 part/views.py:116
#: templates/patterns/wizard/upload.html:37
msgid "Upload File"
msgstr "上传文件"
#: common/views.py:88 order/views.py:103
#: part/templates/part/import_wizard/ajax_match_fields.html:45
-#: part/views.py:192 templates/patterns/wizard/match_fields.html:51
+#: part/views.py:117 templates/patterns/wizard/match_fields.html:51
msgid "Match Fields"
msgstr "匹配字段"
@@ -2545,19 +2572,19 @@ msgstr "字段匹配失败"
msgid "Parts imported"
msgstr "已导入商品"
-#: common/views.py:507 order/templates/order/order_wizard/match_parts.html:19
+#: common/views.py:511 order/templates/order/order_wizard/match_parts.html:19
#: part/templates/part/import_wizard/match_references.html:19
#: templates/patterns/wizard/match_fields.html:26
#: templates/patterns/wizard/upload.html:35
msgid "Previous Step"
msgstr ""
-#: company/forms.py:16 part/forms.py:21
+#: company/forms.py:16 part/forms.py:18
#: templates/InvenTree/settings/mixins/urls.html:14
msgid "URL"
msgstr ""
-#: company/forms.py:17 part/forms.py:22
+#: company/forms.py:17 part/forms.py:19
msgid "Image URL"
msgstr "图片URL"
@@ -2571,7 +2598,7 @@ msgstr "公司简介"
#: company/models.py:104 company/templates/company/company_base.html:100
#: templates/InvenTree/settings/plugin_settings.html:55
-#: templates/js/translated/company.js:405
+#: templates/js/translated/company.js:399
msgid "Website"
msgstr "网站"
@@ -2644,9 +2671,9 @@ msgstr "是制造商"
msgid "Does this company manufacture parts?"
msgstr "该公司制造商品吗?"
-#: company/models.py:144 company/serializers.py:294
-#: company/templates/company/company_base.html:106 part/serializers.py:137
-#: part/serializers.py:168 stock/serializers.py:162
+#: company/models.py:144 company/serializers.py:296
+#: company/templates/company/company_base.html:106 part/serializers.py:139
+#: part/serializers.py:170 stock/serializers.py:162
msgid "Currency"
msgstr "货币"
@@ -2667,10 +2694,10 @@ msgstr "选择商品"
#: company/templates/company/manufacturer_part.html:90
#: company/templates/company/supplier_part.html:103
#: stock/templates/stock/item_base.html:212
-#: templates/js/translated/company.js:389
-#: templates/js/translated/company.js:488
-#: templates/js/translated/company.js:632
-#: templates/js/translated/company.js:917 templates/js/translated/part.js:235
+#: templates/js/translated/company.js:383
+#: templates/js/translated/company.js:484
+#: templates/js/translated/company.js:617
+#: templates/js/translated/company.js:902 templates/js/translated/part.js:235
#: templates/js/translated/table_filters.js:411
msgid "Manufacturer"
msgstr "制造商"
@@ -2681,11 +2708,11 @@ msgstr "选择制造商"
#: company/models.py:266 company/templates/company/manufacturer_part.html:101
#: company/templates/company/supplier_part.html:111
-#: templates/js/translated/company.js:255
-#: templates/js/translated/company.js:487
-#: templates/js/translated/company.js:648
-#: templates/js/translated/company.js:935 templates/js/translated/order.js:1907
-#: templates/js/translated/part.js:246 templates/js/translated/part.js:956
+#: templates/js/translated/company.js:256
+#: templates/js/translated/company.js:483
+#: templates/js/translated/company.js:633
+#: templates/js/translated/company.js:920 templates/js/translated/order.js:1907
+#: templates/js/translated/part.js:246 templates/js/translated/part.js:1000
msgid "MPN"
msgstr ""
@@ -2714,9 +2741,9 @@ msgstr "参数名称"
#: company/models.py:361
#: report/templates/report/inventree_test_report_base.html:95
-#: stock/models.py:2080 templates/js/translated/company.js:540
-#: templates/js/translated/company.js:763 templates/js/translated/part.js:776
-#: templates/js/translated/stock.js:1294
+#: stock/models.py:2084 templates/js/translated/company.js:531
+#: templates/js/translated/company.js:748 templates/js/translated/part.js:820
+#: templates/js/translated/stock.js:1304
msgid "Value"
msgstr "数值"
@@ -2724,10 +2751,10 @@ msgstr "数值"
msgid "Parameter value"
msgstr "参数值"
-#: company/models.py:368 part/models.py:878 part/models.py:2339
+#: company/models.py:368 part/models.py:878 part/models.py:2327
#: part/templates/part/part_base.html:280
#: templates/InvenTree/settings/settings.html:351
-#: templates/js/translated/company.js:769 templates/js/translated/part.js:782
+#: templates/js/translated/company.js:754 templates/js/translated/part.js:826
msgid "Units"
msgstr "单位"
@@ -2740,13 +2767,14 @@ msgid "Linked manufacturer part must reference the same base part"
msgstr ""
#: company/models.py:487 company/templates/company/company_base.html:81
-#: company/templates/company/supplier_part.html:87 order/models.py:303
+#: company/templates/company/supplier_part.html:87 order/models.py:308
#: order/templates/order/order_base.html:112 part/bom.py:237 part/bom.py:265
#: stock/templates/stock/item_base.html:229
-#: templates/js/translated/company.js:254
-#: templates/js/translated/company.js:393
-#: templates/js/translated/company.js:891 templates/js/translated/order.js:1643
-#: templates/js/translated/part.js:216 templates/js/translated/part.js:924
+#: templates/email/overdue_purchase_order.html:16
+#: templates/js/translated/company.js:255
+#: templates/js/translated/company.js:387
+#: templates/js/translated/company.js:876 templates/js/translated/order.js:1643
+#: templates/js/translated/part.js:216 templates/js/translated/part.js:968
#: templates/js/translated/table_filters.js:415
msgid "Supplier"
msgstr "供应商"
@@ -2756,9 +2784,9 @@ msgid "Select supplier"
msgstr "选择供应商"
#: company/models.py:493 company/templates/company/supplier_part.html:97
-#: part/bom.py:238 part/bom.py:266 templates/js/translated/company.js:253
+#: part/bom.py:238 part/bom.py:266 templates/js/translated/company.js:254
#: templates/js/translated/order.js:1894 templates/js/translated/part.js:227
-#: templates/js/translated/part.js:942
+#: templates/js/translated/part.js:986
msgid "SKU"
msgstr ""
@@ -2779,23 +2807,23 @@ msgid "Supplier part description"
msgstr "供应商商品描述"
#: company/models.py:518 company/templates/company/supplier_part.html:125
-#: part/models.py:2573 part/templates/part/upload_bom.html:59
+#: part/models.py:2561 part/templates/part/upload_bom.html:59
#: report/templates/report/inventree_po_report.html:92
#: report/templates/report/inventree_so_report.html:93 stock/serializers.py:387
msgid "Note"
msgstr "备注"
-#: company/models.py:522 part/models.py:1688
+#: company/models.py:522 part/models.py:1683
msgid "base cost"
msgstr ""
-#: company/models.py:522 part/models.py:1688
+#: company/models.py:522 part/models.py:1683
msgid "Minimum charge (e.g. stocking fee)"
msgstr "最低收费(例如库存费)"
#: company/models.py:524 company/templates/company/supplier_part.html:118
#: stock/models.py:608 stock/templates/stock/item_base.html:245
-#: templates/js/translated/company.js:967 templates/js/translated/stock.js:1912
+#: templates/js/translated/company.js:952 templates/js/translated/stock.js:1922
msgid "Packaging"
msgstr "打包"
@@ -2803,7 +2831,7 @@ msgstr "打包"
msgid "Part packaging"
msgstr "商品打包"
-#: company/models.py:526 part/models.py:1690
+#: company/models.py:526 part/models.py:1685
msgid "multiple"
msgstr ""
@@ -2825,7 +2853,7 @@ msgstr "货币代码"
#: company/templates/company/company_base.html:8
#: company/templates/company/company_base.html:12
-#: templates/InvenTree/search.html:177 templates/js/translated/company.js:378
+#: templates/InvenTree/search.html:177 templates/js/translated/company.js:372
msgid "Company"
msgstr "公司"
@@ -2843,7 +2871,7 @@ msgid "Edit company information"
msgstr "编辑公司信息"
#: company/templates/company/company_base.html:34
-#: templates/js/translated/company.js:321
+#: templates/js/translated/company.js:315
msgid "Edit Company"
msgstr "编辑公司信息"
@@ -2866,12 +2894,13 @@ msgstr "上传新图片"
msgid "Download image from URL"
msgstr "从 URL 下载图片"
-#: company/templates/company/company_base.html:86 order/models.py:649
+#: company/templates/company/company_base.html:86 order/models.py:665
#: order/templates/order/sales_order_base.html:116 stock/models.py:627
-#: stock/models.py:628 stock/serializers.py:758
+#: stock/models.py:628 stock/serializers.py:745
#: stock/templates/stock/item_base.html:401
-#: templates/js/translated/company.js:385 templates/js/translated/order.js:2458
-#: templates/js/translated/stock.js:2431
+#: templates/email/overdue_sales_order.html:16
+#: templates/js/translated/company.js:379 templates/js/translated/order.js:2458
+#: templates/js/translated/stock.js:2441
#: templates/js/translated/table_filters.js:419
msgid "Customer"
msgstr "客户"
@@ -2999,7 +3028,7 @@ msgid "Supplier List"
msgstr "供应商列表"
#: company/templates/company/manufacturer_part.html:15 company/views.py:45
-#: part/templates/part/prices.html:170 templates/InvenTree/search.html:179
+#: part/templates/part/prices.html:172 templates/InvenTree/search.html:179
#: templates/navbar.html:49
msgid "Manufacturers"
msgstr "制造商"
@@ -3012,12 +3041,12 @@ msgid "Order part"
msgstr "订购商品"
#: company/templates/company/manufacturer_part.html:39
-#: templates/js/translated/company.js:680
+#: templates/js/translated/company.js:665
msgid "Edit manufacturer part"
msgstr "编辑制造商商品"
#: company/templates/company/manufacturer_part.html:43
-#: templates/js/translated/company.js:681
+#: templates/js/translated/company.js:666
msgid "Delete manufacturer part"
msgstr "删除生产商商品"
@@ -3032,7 +3061,7 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:119
#: company/templates/company/supplier_part.html:15 company/views.py:39
-#: part/templates/part/part_sidebar.html:35 part/templates/part/prices.html:166
+#: part/templates/part/part_sidebar.html:35 part/templates/part/prices.html:168
#: templates/InvenTree/search.html:189 templates/navbar.html:48
msgid "Suppliers"
msgstr "供应商"
@@ -3092,18 +3121,18 @@ msgstr ""
#: company/templates/company/supplier_part.html:7
#: company/templates/company/supplier_part.html:24 stock/models.py:592
#: stock/templates/stock/item_base.html:238
-#: templates/js/translated/company.js:907 templates/js/translated/order.js:884
-#: templates/js/translated/stock.js:1869
+#: templates/js/translated/company.js:892 templates/js/translated/order.js:884
+#: templates/js/translated/stock.js:1879
msgid "Supplier Part"
msgstr "供应商商品"
#: company/templates/company/supplier_part.html:38
-#: templates/js/translated/company.js:980
+#: templates/js/translated/company.js:965
msgid "Edit supplier part"
msgstr "编辑供应商商品"
#: company/templates/company/supplier_part.html:42
-#: templates/js/translated/company.js:981
+#: templates/js/translated/company.js:966
msgid "Delete supplier part"
msgstr "删除供应商商品"
@@ -3123,7 +3152,7 @@ msgstr ""
#: company/templates/company/supplier_part.html:148
#: part/templates/part/detail.html:24 stock/templates/stock/location.html:177
-#: templates/js/translated/stock.js:380
+#: templates/js/translated/stock.js:379
msgid "New Stock Item"
msgstr ""
@@ -3144,7 +3173,7 @@ msgstr "价格信息"
#: company/templates/company/supplier_part.html:191
#: company/templates/company/supplier_part.html:305
-#: part/templates/part/prices.html:274 templates/js/translated/part.js:2046
+#: part/templates/part/prices.html:276 templates/js/translated/part.js:2142
msgid "Add Price Break"
msgstr ""
@@ -3153,12 +3182,12 @@ msgid "No price break information found"
msgstr ""
#: company/templates/company/supplier_part.html:231
-#: templates/js/translated/part.js:2056
+#: templates/js/translated/part.js:2152
msgid "Delete Price Break"
msgstr ""
#: company/templates/company/supplier_part.html:245
-#: templates/js/translated/part.js:2070
+#: templates/js/translated/part.js:2166
msgid "Edit Price Break"
msgstr ""
@@ -3180,9 +3209,9 @@ msgstr ""
#: stock/templates/stock/stock_app_base.html:10
#: templates/InvenTree/search.html:151
#: templates/InvenTree/settings/sidebar.html:43
-#: templates/js/translated/bom.js:554 templates/js/translated/part.js:678
-#: templates/js/translated/part.js:1226 templates/js/translated/part.js:1387
-#: templates/js/translated/stock.js:904 templates/js/translated/stock.js:1687
+#: templates/js/translated/bom.js:554 templates/js/translated/part.js:722
+#: templates/js/translated/part.js:1270 templates/js/translated/part.js:1431
+#: templates/js/translated/stock.js:903 templates/js/translated/stock.js:1697
#: templates/navbar.html:31
msgid "Stock"
msgstr "库存"
@@ -3209,7 +3238,7 @@ msgstr "定价"
#: stock/templates/stock/location.html:173
#: stock/templates/stock/location_sidebar.html:7
#: templates/InvenTree/search.html:153 templates/js/translated/search.js:223
-#: templates/js/translated/stock.js:2307 users/models.py:39
+#: templates/js/translated/stock.js:2317 users/models.py:39
msgid "Stock Items"
msgstr "库存项"
@@ -3238,20 +3267,20 @@ msgstr "公司"
msgid "New Company"
msgstr "新建公司信息"
-#: company/views.py:112 part/views.py:576
+#: company/views.py:112 part/views.py:501
msgid "Download Image"
msgstr "下载图片"
-#: company/views.py:139 part/views.py:606
+#: company/views.py:139 part/views.py:531
msgid "Image size exceeds maximum allowable size for download"
msgstr "图像大小超过下载允许的最大尺寸"
-#: company/views.py:146 part/views.py:613
+#: company/views.py:146 part/views.py:538
#, python-brace-format
msgid "Invalid response: {code}"
msgstr "无效响应: {code}"
-#: company/views.py:155 part/views.py:622
+#: company/views.py:155 part/views.py:547
msgid "Supplied URL is not a valid image file"
msgstr "提供的 URL 不是一个有效的图片文件"
@@ -3320,313 +3349,314 @@ msgstr "查询筛选器 (逗号分隔的键值对列表"
msgid "Part query filters (comma-separated value of key=value pairs)"
msgstr "商品查询筛选器 (逗号分隔的键值对列表)"
-#: order/models.py:133
+#: order/models.py:134
msgid "Order description"
msgstr ""
-#: order/models.py:135 order/models.py:1236
+#: order/models.py:136 order/models.py:1252
msgid "Link to external page"
msgstr ""
-#: order/models.py:143
+#: order/models.py:144
msgid "Created By"
msgstr ""
-#: order/models.py:150
+#: order/models.py:151
msgid "User or group responsible for this order"
msgstr "负责此订单的用户或群组"
-#: order/models.py:155
+#: order/models.py:156
msgid "Order notes"
msgstr ""
-#: order/models.py:289 order/models.py:639
+#: order/models.py:294 order/models.py:655
msgid "Order reference"
msgstr ""
-#: order/models.py:294 order/models.py:654
+#: order/models.py:299 order/models.py:670
msgid "Purchase order status"
msgstr ""
-#: order/models.py:304
+#: order/models.py:309
msgid "Company from which the items are being ordered"
msgstr "订购该商品的公司"
-#: order/models.py:307 order/templates/order/order_base.html:124
+#: order/models.py:312 order/templates/order/order_base.html:124
#: templates/js/translated/order.js:1652
msgid "Supplier Reference"
msgstr ""
-#: order/models.py:307
+#: order/models.py:312
msgid "Supplier order reference code"
msgstr ""
-#: order/models.py:314
+#: order/models.py:319
msgid "received by"
msgstr ""
-#: order/models.py:319
+#: order/models.py:324
msgid "Issue Date"
msgstr ""
-#: order/models.py:320
+#: order/models.py:325
msgid "Date order was issued"
msgstr ""
-#: order/models.py:325
+#: order/models.py:330
msgid "Target Delivery Date"
msgstr ""
-#: order/models.py:326
+#: order/models.py:331
msgid "Expected date for order delivery. Order will be overdue after this date."
msgstr ""
-#: order/models.py:332
+#: order/models.py:337
msgid "Date order was completed"
msgstr ""
-#: order/models.py:368
+#: order/models.py:373
msgid "Part supplier must match PO supplier"
msgstr ""
-#: order/models.py:512
+#: order/models.py:517
msgid "Quantity must be a positive number"
msgstr "数量必须大于0"
-#: order/models.py:650
+#: order/models.py:666
msgid "Company to which the items are being sold"
msgstr "向其出售该商品的公司"
-#: order/models.py:656
+#: order/models.py:672
msgid "Customer Reference "
msgstr ""
-#: order/models.py:656
+#: order/models.py:672
msgid "Customer order reference code"
msgstr ""
-#: order/models.py:661
+#: order/models.py:677
msgid "Target date for order completion. Order will be overdue after this date."
msgstr ""
-#: order/models.py:664 order/models.py:1190
+#: order/models.py:680 order/models.py:1206
#: templates/js/translated/order.js:2505 templates/js/translated/order.js:2656
msgid "Shipment Date"
msgstr ""
-#: order/models.py:671
+#: order/models.py:687
msgid "shipped by"
msgstr ""
-#: order/models.py:726
+#: order/models.py:742
msgid "Order cannot be completed as no parts have been assigned"
msgstr ""
-#: order/models.py:730
+#: order/models.py:746
msgid "Only a pending order can be marked as complete"
msgstr ""
-#: order/models.py:733
+#: order/models.py:749
msgid "Order cannot be completed as there are incomplete shipments"
msgstr ""
-#: order/models.py:736
+#: order/models.py:752
msgid "Order cannot be completed as there are incomplete line items"
msgstr ""
-#: order/models.py:910
+#: order/models.py:926
msgid "Item quantity"
msgstr ""
-#: order/models.py:916
+#: order/models.py:932
msgid "Line item reference"
msgstr ""
-#: order/models.py:918
+#: order/models.py:934
msgid "Line item notes"
msgstr ""
-#: order/models.py:923
+#: order/models.py:939
msgid "Target shipping date for this line item"
msgstr ""
-#: order/models.py:941
+#: order/models.py:957
msgid "Context"
msgstr ""
-#: order/models.py:942
+#: order/models.py:958
msgid "Additional context for this line"
msgstr ""
-#: order/models.py:950
+#: order/models.py:966
msgid "Unit price"
msgstr ""
-#: order/models.py:980
+#: order/models.py:996
msgid "Supplier part must match supplier"
msgstr ""
-#: order/models.py:988
+#: order/models.py:1004
msgid "deleted"
msgstr ""
-#: order/models.py:994 order/models.py:1074 order/models.py:1099
-#: order/models.py:1184 order/models.py:1320
+#: order/models.py:1010 order/models.py:1090 order/models.py:1115
+#: order/models.py:1200 order/models.py:1336
#: templates/js/translated/order.js:3112
msgid "Order"
msgstr ""
-#: order/models.py:995 order/models.py:1074
+#: order/models.py:1011 order/models.py:1090
#: order/templates/order/order_base.html:9
#: order/templates/order/order_base.html:18
#: report/templates/report/inventree_po_report.html:76
#: stock/templates/stock/item_base.html:184
+#: templates/email/overdue_purchase_order.html:15
#: templates/js/translated/order.js:885 templates/js/translated/order.js:1621
-#: templates/js/translated/part.js:899 templates/js/translated/stock.js:1846
-#: templates/js/translated/stock.js:2412
+#: templates/js/translated/part.js:943 templates/js/translated/stock.js:1856
+#: templates/js/translated/stock.js:2422
msgid "Purchase Order"
msgstr ""
-#: order/models.py:1013
+#: order/models.py:1029
msgid "Supplier part"
msgstr "供应商商品"
-#: order/models.py:1020 order/templates/order/order_base.html:169
+#: order/models.py:1036 order/templates/order/order_base.html:169
#: templates/js/translated/order.js:1318 templates/js/translated/order.js:2009
-#: templates/js/translated/part.js:993 templates/js/translated/part.js:1020
+#: templates/js/translated/part.js:1037 templates/js/translated/part.js:1064
#: templates/js/translated/table_filters.js:330
msgid "Received"
msgstr ""
-#: order/models.py:1021
+#: order/models.py:1037
msgid "Number of items received"
msgstr ""
-#: order/models.py:1028 part/templates/part/prices.html:179 stock/models.py:722
+#: order/models.py:1044 part/templates/part/prices.html:181 stock/models.py:722
#: stock/serializers.py:153 stock/templates/stock/item_base.html:191
-#: templates/js/translated/stock.js:1900
+#: templates/js/translated/stock.js:1910
msgid "Purchase Price"
msgstr "采购价格"
-#: order/models.py:1029
+#: order/models.py:1045
msgid "Unit purchase price"
msgstr ""
-#: order/models.py:1037
+#: order/models.py:1053
msgid "Where does the Purchaser want this item to be stored?"
msgstr ""
-#: order/models.py:1109 part/templates/part/part_pricing.html:112
-#: part/templates/part/prices.html:119 part/templates/part/prices.html:288
+#: order/models.py:1125 part/templates/part/part_pricing.html:115
+#: part/templates/part/prices.html:121 part/templates/part/prices.html:290
msgid "Sale Price"
msgstr "销售价格"
-#: order/models.py:1110
+#: order/models.py:1126
msgid "Unit sale price"
msgstr ""
-#: order/models.py:1115
+#: order/models.py:1131
msgid "Shipped quantity"
msgstr ""
-#: order/models.py:1191
+#: order/models.py:1207
msgid "Date of shipment"
msgstr ""
-#: order/models.py:1198
+#: order/models.py:1214
msgid "Checked By"
msgstr ""
-#: order/models.py:1199
+#: order/models.py:1215
msgid "User who checked this shipment"
msgstr ""
-#: order/models.py:1207
+#: order/models.py:1223
msgid "Shipment number"
msgstr ""
-#: order/models.py:1214
+#: order/models.py:1230
msgid "Shipment notes"
msgstr ""
-#: order/models.py:1221
+#: order/models.py:1237
msgid "Tracking Number"
msgstr ""
-#: order/models.py:1222
+#: order/models.py:1238
msgid "Shipment tracking information"
msgstr ""
-#: order/models.py:1229
+#: order/models.py:1245
msgid "Invoice Number"
msgstr ""
-#: order/models.py:1230
+#: order/models.py:1246
msgid "Reference number for associated invoice"
msgstr ""
-#: order/models.py:1248
+#: order/models.py:1264
msgid "Shipment has already been sent"
msgstr ""
-#: order/models.py:1251
+#: order/models.py:1267
msgid "Shipment has no allocated stock items"
msgstr ""
-#: order/models.py:1354 order/models.py:1356
+#: order/models.py:1370 order/models.py:1372
msgid "Stock item has not been assigned"
msgstr ""
-#: order/models.py:1360
+#: order/models.py:1376
msgid "Cannot allocate stock item to a line with a different part"
msgstr ""
-#: order/models.py:1362
+#: order/models.py:1378
msgid "Cannot allocate stock to a line without a part"
msgstr ""
-#: order/models.py:1365
+#: order/models.py:1381
msgid "Allocation quantity cannot exceed stock quantity"
msgstr ""
-#: order/models.py:1369
+#: order/models.py:1385
msgid "StockItem is over-allocated"
msgstr ""
-#: order/models.py:1375 order/serializers.py:1045
+#: order/models.py:1391 order/serializers.py:1047
msgid "Quantity must be 1 for serialized stock item"
msgstr ""
-#: order/models.py:1378
+#: order/models.py:1394
msgid "Sales order does not match shipment"
msgstr ""
-#: order/models.py:1379
+#: order/models.py:1395
msgid "Shipment does not match sales order"
msgstr ""
-#: order/models.py:1387
+#: order/models.py:1403
msgid "Line"
msgstr ""
-#: order/models.py:1395 order/serializers.py:1149 order/serializers.py:1273
+#: order/models.py:1411 order/serializers.py:1151 order/serializers.py:1275
#: templates/js/translated/model_renderers.js:301
msgid "Shipment"
msgstr ""
-#: order/models.py:1396
+#: order/models.py:1412
msgid "Sales order shipment reference"
msgstr ""
-#: order/models.py:1408 templates/InvenTree/notifications/notifications.html:70
+#: order/models.py:1424 templates/InvenTree/notifications/notifications.html:70
msgid "Item"
msgstr ""
-#: order/models.py:1409
+#: order/models.py:1425
msgid "Select stock item to allocate"
msgstr ""
-#: order/models.py:1412
+#: order/models.py:1428
msgid "Enter stock allocation quantity"
msgstr ""
@@ -3662,7 +3692,7 @@ msgstr ""
msgid "Purchase order must match supplier"
msgstr ""
-#: order/serializers.py:406 order/serializers.py:1117
+#: order/serializers.py:406 order/serializers.py:1119
msgid "Line Item"
msgstr ""
@@ -3710,42 +3740,60 @@ msgstr ""
msgid "Supplied barcode values must be unique"
msgstr ""
-#: order/serializers.py:866
+#: order/serializers.py:868
msgid "Sale price currency"
msgstr ""
-#: order/serializers.py:947
+#: order/serializers.py:949
msgid "No shipment details provided"
msgstr ""
-#: order/serializers.py:1006 order/serializers.py:1126
+#: order/serializers.py:1008 order/serializers.py:1128
msgid "Line item is not associated with this order"
msgstr ""
-#: order/serializers.py:1028
+#: order/serializers.py:1030
msgid "Quantity must be positive"
msgstr ""
-#: order/serializers.py:1139
+#: order/serializers.py:1141
msgid "Enter serial numbers to allocate"
msgstr ""
-#: order/serializers.py:1161 order/serializers.py:1281
+#: order/serializers.py:1163 order/serializers.py:1283
msgid "Shipment has already been shipped"
msgstr ""
-#: order/serializers.py:1164 order/serializers.py:1284
+#: order/serializers.py:1166 order/serializers.py:1286
msgid "Shipment is not associated with this order"
msgstr ""
-#: order/serializers.py:1214
+#: order/serializers.py:1216
msgid "No match found for the following serial numbers"
msgstr ""
-#: order/serializers.py:1224
+#: order/serializers.py:1226
msgid "The following serial numbers are already allocated"
msgstr ""
+#: order/tasks.py:26
+msgid "Overdue Purchase Order"
+msgstr ""
+
+#: order/tasks.py:31
+#, python-brace-format
+msgid "Purchase order {po} is now overdue"
+msgstr ""
+
+#: order/tasks.py:88
+msgid "Overdue Sales Order"
+msgstr ""
+
+#: order/tasks.py:93
+#, python-brace-format
+msgid "Sales order {so} is now overdue"
+msgstr ""
+
#: order/templates/order/order_base.html:33
msgid "Print purchase order report"
msgstr ""
@@ -3870,8 +3918,8 @@ msgstr "选择供应商商品"
#: templates/js/translated/bom.js:77 templates/js/translated/build.js:427
#: templates/js/translated/build.js:579 templates/js/translated/build.js:1972
#: templates/js/translated/order.js:833 templates/js/translated/order.js:1265
-#: templates/js/translated/order.js:2731 templates/js/translated/stock.js:570
-#: templates/js/translated/stock.js:738
+#: templates/js/translated/order.js:2731 templates/js/translated/stock.js:569
+#: templates/js/translated/stock.js:737
#: templates/patterns/wizard/match_fields.html:70
msgid "Remove row"
msgstr "移除行"
@@ -3990,7 +4038,7 @@ msgid "Pending Shipments"
msgstr ""
#: order/templates/order/sales_order_detail.html:70
-#: templates/attachment_table.html:6 templates/js/translated/bom.js:1053
+#: templates/attachment_table.html:6 templates/js/translated/bom.js:1047
#: templates/js/translated/build.js:1880
msgid "Actions"
msgstr ""
@@ -4021,47 +4069,47 @@ msgstr ""
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr ""
-#: part/api.py:481
+#: part/api.py:482
msgid "Incoming Purchase Order"
msgstr ""
-#: part/api.py:501
+#: part/api.py:502
msgid "Outgoing Sales Order"
msgstr ""
-#: part/api.py:519
+#: part/api.py:520
msgid "Stock produced by Build Order"
msgstr ""
-#: part/api.py:551
+#: part/api.py:552
msgid "Stock required for Build Order"
msgstr ""
-#: part/api.py:637
+#: part/api.py:638
msgid "Valid"
msgstr ""
-#: part/api.py:638
+#: part/api.py:639
msgid "Validate entire Bill of Materials"
msgstr ""
-#: part/api.py:644
+#: part/api.py:645
msgid "This option must be selected"
msgstr ""
-#: part/api.py:1010
+#: part/api.py:1011
msgid "Must be greater than zero"
msgstr "必须大于0"
-#: part/api.py:1014
+#: part/api.py:1015
msgid "Must be a valid quantity"
msgstr "必须是有效的数量"
-#: part/api.py:1029
+#: part/api.py:1030
msgid "Specify location for initial part stock"
msgstr "指定初始初始商品仓储地点"
-#: part/api.py:1060 part/api.py:1064 part/api.py:1079 part/api.py:1083
+#: part/api.py:1061 part/api.py:1065 part/api.py:1080 part/api.py:1084
msgid "This field is required"
msgstr "此字段为必填"
@@ -4080,17 +4128,13 @@ msgid "Available Stock"
msgstr "可用库存"
#: part/bom.py:130 part/templates/part/part_base.html:207
-#: templates/js/translated/part.js:517 templates/js/translated/part.js:537
-#: templates/js/translated/part.js:1229 templates/js/translated/part.js:1401
-#: templates/js/translated/part.js:1417
+#: templates/js/translated/part.js:561 templates/js/translated/part.js:581
+#: templates/js/translated/part.js:1273 templates/js/translated/part.js:1445
+#: templates/js/translated/part.js:1461
msgid "On Order"
msgstr ""
-#: part/forms.py:59
-msgid "Select part category"
-msgstr "选择类别"
-
-#: part/forms.py:69
+#: part/forms.py:60
msgid "Input quantity for price calculation"
msgstr ""
@@ -4106,7 +4150,7 @@ msgstr ""
msgid "Default keywords for parts in this category"
msgstr "此类别商品的默认关键字"
-#: part/models.py:115 part/models.py:2415 part/templates/part/category.html:15
+#: part/models.py:115 part/models.py:2403 part/templates/part/category.html:15
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr "商品类别"
@@ -4123,7 +4167,7 @@ msgstr "商品类别"
#: part/templates/part/category_sidebar.html:9
#: templates/InvenTree/index.html:85 templates/InvenTree/search.html:82
#: templates/InvenTree/settings/sidebar.html:39
-#: templates/js/translated/part.js:1768 templates/js/translated/search.js:144
+#: templates/js/translated/part.js:1864 templates/js/translated/search.js:144
#: templates/navbar.html:24 users/models.py:37
msgid "Parts"
msgstr "商品"
@@ -4153,7 +4197,7 @@ msgstr ""
msgid "Duplicate IPN not allowed in part settings"
msgstr "在商品设置中不允许重复的IPN"
-#: part/models.py:738 part/models.py:2469
+#: part/models.py:738 part/models.py:2457
msgid "Part name"
msgstr "商品名称"
@@ -4186,12 +4230,11 @@ msgstr "关键词"
msgid "Part keywords to improve visibility in search results"
msgstr "提高搜索结果可见性的关键字"
-#: part/models.py:776 part/models.py:2171 part/models.py:2414
+#: part/models.py:776 part/models.py:2159 part/models.py:2402
#: part/templates/part/part_base.html:257
-#: part/templates/part/set_category.html:15
#: templates/InvenTree/notifications/notifications.html:65
#: templates/InvenTree/settings/settings.html:231
-#: templates/js/translated/part.js:1369
+#: templates/js/translated/part.js:1413 templates/js/translated/part.js:1639
msgid "Category"
msgstr "类别"
@@ -4200,8 +4243,8 @@ msgid "Part category"
msgstr "商品类别"
#: part/models.py:782 part/templates/part/part_base.html:266
-#: templates/js/translated/part.js:666 templates/js/translated/part.js:1322
-#: templates/js/translated/stock.js:1659
+#: templates/js/translated/part.js:710 templates/js/translated/part.js:1366
+#: templates/js/translated/stock.js:1669
msgid "IPN"
msgstr ""
@@ -4214,7 +4257,7 @@ msgid "Part revision or version number"
msgstr "商品版本号"
#: part/models.py:790 part/templates/part/part_base.html:273
-#: report/models.py:170 templates/js/translated/part.js:670
+#: report/models.py:170 templates/js/translated/part.js:714
msgid "Revision"
msgstr ""
@@ -4302,317 +4345,321 @@ msgstr ""
msgid "Creation User"
msgstr "新建用户"
-#: part/models.py:1690
+#: part/models.py:1685
msgid "Sell multiple"
msgstr ""
-#: part/models.py:2218
+#: part/models.py:2206
msgid "Test templates can only be created for trackable parts"
msgstr ""
-#: part/models.py:2235
+#: part/models.py:2223
msgid "Test with this name already exists for this part"
msgstr ""
-#: part/models.py:2255 templates/js/translated/part.js:1819
-#: templates/js/translated/stock.js:1274
+#: part/models.py:2243 templates/js/translated/part.js:1915
+#: templates/js/translated/stock.js:1284
msgid "Test Name"
msgstr ""
-#: part/models.py:2256
+#: part/models.py:2244
msgid "Enter a name for the test"
msgstr ""
-#: part/models.py:2261
+#: part/models.py:2249
msgid "Test Description"
msgstr ""
-#: part/models.py:2262
+#: part/models.py:2250
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:2267 templates/js/translated/part.js:1828
+#: part/models.py:2255 templates/js/translated/part.js:1924
#: templates/js/translated/table_filters.js:294
msgid "Required"
msgstr ""
-#: part/models.py:2268
+#: part/models.py:2256
msgid "Is this test required to pass?"
msgstr ""
-#: part/models.py:2273 templates/js/translated/part.js:1836
+#: part/models.py:2261 templates/js/translated/part.js:1932
msgid "Requires Value"
msgstr ""
-#: part/models.py:2274
+#: part/models.py:2262
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:2279 templates/js/translated/part.js:1843
+#: part/models.py:2267 templates/js/translated/part.js:1939
msgid "Requires Attachment"
msgstr ""
-#: part/models.py:2280
+#: part/models.py:2268
msgid "Does this test require a file attachment when adding a test result?"
msgstr ""
-#: part/models.py:2288
+#: part/models.py:2276
#, python-brace-format
msgid "Illegal character in template name ({c})"
msgstr ""
-#: part/models.py:2324
+#: part/models.py:2312
msgid "Parameter template name must be unique"
msgstr ""
-#: part/models.py:2332
+#: part/models.py:2320
msgid "Parameter Name"
msgstr ""
-#: part/models.py:2339
+#: part/models.py:2327
msgid "Parameter Units"
msgstr ""
-#: part/models.py:2370
+#: part/models.py:2358
msgid "Parent Part"
msgstr ""
-#: part/models.py:2372 part/models.py:2420 part/models.py:2421
+#: part/models.py:2360 part/models.py:2408 part/models.py:2409
#: templates/InvenTree/settings/settings.html:226
msgid "Parameter Template"
msgstr "参数模板"
-#: part/models.py:2374
+#: part/models.py:2362
msgid "Data"
msgstr ""
-#: part/models.py:2374
+#: part/models.py:2362
msgid "Parameter Value"
msgstr ""
-#: part/models.py:2425 templates/InvenTree/settings/settings.html:235
+#: part/models.py:2413 templates/InvenTree/settings/settings.html:235
msgid "Default Value"
msgstr "默认值"
-#: part/models.py:2426
+#: part/models.py:2414
msgid "Default Parameter Value"
msgstr ""
-#: part/models.py:2461
+#: part/models.py:2449
msgid "Part ID or part name"
msgstr ""
-#: part/models.py:2464 templates/js/translated/model_renderers.js:200
+#: part/models.py:2452 templates/js/translated/model_renderers.js:200
msgid "Part ID"
msgstr "商品ID"
-#: part/models.py:2465
+#: part/models.py:2453
msgid "Unique part ID value"
msgstr ""
-#: part/models.py:2468
+#: part/models.py:2456
msgid "Part Name"
msgstr ""
-#: part/models.py:2472
+#: part/models.py:2460
msgid "Part IPN"
msgstr ""
-#: part/models.py:2473
+#: part/models.py:2461
msgid "Part IPN value"
msgstr ""
-#: part/models.py:2476
+#: part/models.py:2464
msgid "Level"
msgstr ""
-#: part/models.py:2477
+#: part/models.py:2465
msgid "BOM level"
msgstr ""
-#: part/models.py:2546
+#: part/models.py:2534
msgid "Select parent part"
msgstr ""
-#: part/models.py:2554
+#: part/models.py:2542
msgid "Sub part"
msgstr ""
-#: part/models.py:2555
+#: part/models.py:2543
msgid "Select part to be used in BOM"
msgstr ""
-#: part/models.py:2561
+#: part/models.py:2549
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:2563 part/templates/part/upload_bom.html:58
-#: templates/js/translated/bom.js:877 templates/js/translated/bom.js:971
+#: part/models.py:2551 part/templates/part/upload_bom.html:58
+#: templates/js/translated/bom.js:871 templates/js/translated/bom.js:965
#: templates/js/translated/table_filters.js:92
msgid "Optional"
msgstr "可选项"
-#: part/models.py:2563
+#: part/models.py:2551
msgid "This BOM item is optional"
msgstr ""
-#: part/models.py:2566 part/templates/part/upload_bom.html:55
+#: part/models.py:2554 part/templates/part/upload_bom.html:55
msgid "Overage"
msgstr ""
-#: part/models.py:2567
+#: part/models.py:2555
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr ""
-#: part/models.py:2570
+#: part/models.py:2558
msgid "BOM item reference"
msgstr ""
-#: part/models.py:2573
+#: part/models.py:2561
msgid "BOM item notes"
msgstr ""
-#: part/models.py:2575
+#: part/models.py:2563
msgid "Checksum"
msgstr ""
-#: part/models.py:2575
+#: part/models.py:2563
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:2579 part/templates/part/upload_bom.html:57
-#: templates/js/translated/bom.js:988
+#: part/models.py:2567 part/templates/part/upload_bom.html:57
+#: templates/js/translated/bom.js:982
#: templates/js/translated/table_filters.js:68
#: templates/js/translated/table_filters.js:88
msgid "Inherited"
msgstr "继承项"
-#: part/models.py:2580
+#: part/models.py:2568
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr ""
-#: part/models.py:2585 part/templates/part/upload_bom.html:56
-#: templates/js/translated/bom.js:980
+#: part/models.py:2573 part/templates/part/upload_bom.html:56
+#: templates/js/translated/bom.js:974
msgid "Allow Variants"
msgstr ""
-#: part/models.py:2586
+#: part/models.py:2574
msgid "Stock items for variant parts can be used for this BOM item"
msgstr ""
-#: part/models.py:2664 stock/models.py:460
+#: part/models.py:2652 stock/models.py:460
msgid "Quantity must be integer value for trackable parts"
msgstr ""
-#: part/models.py:2673 part/models.py:2675
+#: part/models.py:2661 part/models.py:2663
msgid "Sub part must be specified"
msgstr ""
-#: part/models.py:2780
+#: part/models.py:2768
msgid "BOM Item Substitute"
msgstr ""
-#: part/models.py:2801
+#: part/models.py:2789
msgid "Substitute part cannot be the same as the master part"
msgstr ""
-#: part/models.py:2814
+#: part/models.py:2802
msgid "Parent BOM item"
msgstr ""
-#: part/models.py:2822
+#: part/models.py:2810
msgid "Substitute part"
msgstr ""
-#: part/models.py:2833
+#: part/models.py:2825
msgid "Part 1"
msgstr ""
-#: part/models.py:2837
+#: part/models.py:2829
msgid "Part 2"
msgstr ""
-#: part/models.py:2837
+#: part/models.py:2829
msgid "Select Related Part"
msgstr ""
-#: part/models.py:2868
-msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique"
+#: part/models.py:2847
+msgid "Part relationship cannot be created between a part and itself"
msgstr ""
-#: part/serializers.py:138 part/serializers.py:169 stock/serializers.py:163
+#: part/models.py:2851
+msgid "Duplicate relationship already exists"
+msgstr ""
+
+#: part/serializers.py:140 part/serializers.py:171 stock/serializers.py:163
msgid "Purchase currency of this stock item"
msgstr ""
-#: part/serializers.py:794
+#: part/serializers.py:796
msgid "Select part to copy BOM from"
msgstr ""
-#: part/serializers.py:802
+#: part/serializers.py:804
msgid "Remove Existing Data"
msgstr ""
-#: part/serializers.py:803
+#: part/serializers.py:805
msgid "Remove existing BOM items before copying"
msgstr ""
-#: part/serializers.py:808
+#: part/serializers.py:810
msgid "Include Inherited"
msgstr ""
-#: part/serializers.py:809
+#: part/serializers.py:811
msgid "Include BOM items which are inherited from templated parts"
msgstr ""
-#: part/serializers.py:814
+#: part/serializers.py:816
msgid "Skip Invalid Rows"
msgstr ""
-#: part/serializers.py:815
+#: part/serializers.py:817
msgid "Enable this option to skip invalid rows"
msgstr ""
-#: part/serializers.py:820
+#: part/serializers.py:822
msgid "Copy Substitute Parts"
msgstr ""
-#: part/serializers.py:821
+#: part/serializers.py:823
msgid "Copy substitute parts when duplicate BOM items"
msgstr ""
-#: part/serializers.py:861
+#: part/serializers.py:863
msgid "Clear Existing BOM"
msgstr ""
-#: part/serializers.py:862
+#: part/serializers.py:864
msgid "Delete existing BOM items before uploading"
msgstr ""
-#: part/serializers.py:892
+#: part/serializers.py:894
msgid "No part column specified"
msgstr ""
-#: part/serializers.py:935
+#: part/serializers.py:937
msgid "Multiple matching parts found"
msgstr ""
-#: part/serializers.py:938
+#: part/serializers.py:940
msgid "No matching part found"
msgstr ""
-#: part/serializers.py:941
+#: part/serializers.py:943
msgid "Part is not designated as a component"
msgstr ""
-#: part/serializers.py:950
+#: part/serializers.py:952
msgid "Quantity not provided"
msgstr ""
-#: part/serializers.py:958
+#: part/serializers.py:960
msgid "Invalid quantity"
msgstr ""
-#: part/serializers.py:979
+#: part/serializers.py:981
msgid "At least one BOM item is required"
msgstr ""
@@ -5088,10 +5135,10 @@ msgid "Part is virtual (not a physical part)"
msgstr "商品是虚拟的(不是实体零件)"
#: part/templates/part/part_base.html:143
-#: templates/js/translated/company.js:623
-#: templates/js/translated/company.js:882
+#: templates/js/translated/company.js:608
+#: templates/js/translated/company.js:867
#: templates/js/translated/model_renderers.js:192
-#: templates/js/translated/part.js:581 templates/js/translated/part.js:658
+#: templates/js/translated/part.js:625 templates/js/translated/part.js:702
msgid "Inactive"
msgstr ""
@@ -5120,13 +5167,13 @@ msgstr ""
msgid "Allocated to Sales Orders"
msgstr ""
-#: part/templates/part/part_base.html:232 templates/js/translated/bom.js:1009
+#: part/templates/part/part_base.html:232 templates/js/translated/bom.js:1003
msgid "Can Build"
msgstr ""
-#: part/templates/part/part_base.html:238 templates/js/translated/part.js:520
-#: templates/js/translated/part.js:540 templates/js/translated/part.js:1233
-#: templates/js/translated/part.js:1405 templates/js/translated/part.js:1421
+#: part/templates/part/part_base.html:238 templates/js/translated/part.js:564
+#: templates/js/translated/part.js:584 templates/js/translated/part.js:1277
+#: templates/js/translated/part.js:1449 templates/js/translated/part.js:1465
msgid "Building"
msgstr ""
@@ -5143,7 +5190,7 @@ msgstr ""
msgid "Search for serial number"
msgstr ""
-#: part/templates/part/part_base.html:443 part/templates/part/prices.html:147
+#: part/templates/part/part_base.html:443 part/templates/part/prices.html:149
msgid "Calculate"
msgstr ""
@@ -5161,54 +5208,55 @@ msgstr ""
#: part/templates/part/part_pricing.html:26
#: part/templates/part/part_pricing.html:52
-#: part/templates/part/part_pricing.html:100
-#: part/templates/part/part_pricing.html:115 part/templates/part/prices.html:28
-#: part/templates/part/prices.html:55 part/templates/part/prices.html:106
-#: part/templates/part/prices.html:123
+#: part/templates/part/part_pricing.html:103
+#: part/templates/part/part_pricing.html:118 part/templates/part/prices.html:28
+#: part/templates/part/prices.html:55 part/templates/part/prices.html:108
+#: part/templates/part/prices.html:125
msgid "Unit Cost"
msgstr ""
#: part/templates/part/part_pricing.html:32
#: part/templates/part/part_pricing.html:58
-#: part/templates/part/part_pricing.html:104
-#: part/templates/part/part_pricing.html:119 part/templates/part/prices.html:35
-#: part/templates/part/prices.html:62 part/templates/part/prices.html:111
-#: part/templates/part/prices.html:128
+#: part/templates/part/part_pricing.html:107
+#: part/templates/part/part_pricing.html:122 part/templates/part/prices.html:35
+#: part/templates/part/prices.html:62 part/templates/part/prices.html:113
+#: part/templates/part/prices.html:130
msgid "Total Cost"
msgstr ""
#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:43
-#: templates/js/translated/bom.js:963
+#: templates/js/translated/bom.js:957
msgid "No supplier pricing available"
msgstr ""
#: part/templates/part/part_pricing.html:48 part/templates/part/prices.html:52
-#: part/templates/part/prices.html:246
+#: part/templates/part/prices.html:248
msgid "BOM Pricing"
msgstr ""
-#: part/templates/part/part_pricing.html:65 part/templates/part/prices.html:72
+#: part/templates/part/part_pricing.html:66 part/templates/part/prices.html:72
msgid "Unit Purchase Price"
msgstr ""
-#: part/templates/part/part_pricing.html:71 part/templates/part/prices.html:79
+#: part/templates/part/part_pricing.html:72 part/templates/part/prices.html:79
msgid "Total Purchase Price"
msgstr ""
-#: part/templates/part/part_pricing.html:81 part/templates/part/prices.html:89
+#: part/templates/part/part_pricing.html:82 part/templates/part/prices.html:89
msgid "Note: BOM pricing is incomplete for this part"
msgstr "注:此商品BOM价格不完整。"
-#: part/templates/part/part_pricing.html:88 part/templates/part/prices.html:96
+#: part/templates/part/part_pricing.html:91 part/templates/part/prices.html:98
msgid "No BOM pricing available"
msgstr ""
-#: part/templates/part/part_pricing.html:97 part/templates/part/prices.html:105
+#: part/templates/part/part_pricing.html:100
+#: part/templates/part/prices.html:107
msgid "Internal Price"
msgstr ""
-#: part/templates/part/part_pricing.html:128
-#: part/templates/part/prices.html:137
+#: part/templates/part/part_pricing.html:131
+#: part/templates/part/prices.html:139
msgid "No pricing information is available for this part."
msgstr "此商品无价格信息可用。"
@@ -5232,43 +5280,6 @@ msgstr ""
msgid "Select from existing images"
msgstr ""
-#: part/templates/part/partial_delete.html:9
-#, python-format
-msgid "Part '%(full_name)s' cannot be deleted as it is still marked as active.\n"
-"
Disable the \"Active\" part attribute and re-try.\n"
-" "
-msgstr ""
-
-#: part/templates/part/partial_delete.html:17
-#, python-format
-msgid "Are you sure you want to delete part '%(full_name)s'?"
-msgstr "您确定要删除商品 '%(full_name)s '吗?"
-
-#: part/templates/part/partial_delete.html:22
-#, python-format
-msgid "This part is used in BOMs for %(count)s other parts. If you delete this part, the BOMs for the following parts will be updated"
-msgstr ""
-
-#: part/templates/part/partial_delete.html:32
-#, python-format
-msgid "There are %(count)s stock entries defined for this part. If you delete this part, the following stock entries will also be deleted:"
-msgstr ""
-
-#: part/templates/part/partial_delete.html:43
-#, python-format
-msgid "There are %(count)s manufacturers defined for this part. If you delete this part, the following manufacturer parts will also be deleted:"
-msgstr ""
-
-#: part/templates/part/partial_delete.html:54
-#, python-format
-msgid "There are %(count)s suppliers defined for this part. If you delete this part, the following supplier parts will also be deleted:"
-msgstr ""
-
-#: part/templates/part/partial_delete.html:67
-#, python-format
-msgid "There are %(count)s unique parts tracked for '%(full_name)s'. Deleting this part will permanently remove this tracking information."
-msgstr ""
-
#: part/templates/part/prices.html:19
msgid "Pricing ranges"
msgstr ""
@@ -5285,66 +5296,58 @@ msgstr ""
msgid "Show BOM cost"
msgstr ""
-#: part/templates/part/prices.html:120
+#: part/templates/part/prices.html:122
msgid "Show sale cost"
msgstr ""
-#: part/templates/part/prices.html:121
+#: part/templates/part/prices.html:123
msgid "Show sale price"
msgstr ""
-#: part/templates/part/prices.html:143
+#: part/templates/part/prices.html:145
msgid "Calculation parameters"
msgstr ""
-#: part/templates/part/prices.html:158 templates/js/translated/bom.js:957
+#: part/templates/part/prices.html:160 templates/js/translated/bom.js:951
msgid "Supplier Cost"
msgstr ""
-#: part/templates/part/prices.html:159 part/templates/part/prices.html:180
-#: part/templates/part/prices.html:204 part/templates/part/prices.html:234
-#: part/templates/part/prices.html:260 part/templates/part/prices.html:289
+#: part/templates/part/prices.html:161 part/templates/part/prices.html:182
+#: part/templates/part/prices.html:206 part/templates/part/prices.html:236
+#: part/templates/part/prices.html:262 part/templates/part/prices.html:291
msgid "Jump to overview"
msgstr ""
-#: part/templates/part/prices.html:184
+#: part/templates/part/prices.html:186
msgid "Stock Pricing"
msgstr ""
-#: part/templates/part/prices.html:193
+#: part/templates/part/prices.html:195
msgid "No stock pricing history is available for this part."
msgstr ""
-#: part/templates/part/prices.html:203
+#: part/templates/part/prices.html:205
msgid "Internal Cost"
msgstr ""
-#: part/templates/part/prices.html:218
+#: part/templates/part/prices.html:220
msgid "Add Internal Price Break"
msgstr ""
-#: part/templates/part/prices.html:233
+#: part/templates/part/prices.html:235
msgid "BOM Cost"
msgstr ""
-#: part/templates/part/prices.html:259
+#: part/templates/part/prices.html:261
msgid "Sale Cost"
msgstr ""
-#: part/templates/part/prices.html:300
+#: part/templates/part/prices.html:302
msgid "No sale pice history available for this part."
msgstr ""
-#: part/templates/part/set_category.html:9
-msgid "Set category for the following parts"
-msgstr "为以下商品设置类别"
-
-#: part/templates/part/set_category.html:32
-msgid "Remove part"
-msgstr "移除商品"
-
-#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:543
-#: templates/js/translated/part.js:1221 templates/js/translated/part.js:1425
+#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:587
+#: templates/js/translated/part.js:1265 templates/js/translated/part.js:1469
msgid "No Stock"
msgstr ""
@@ -5407,56 +5410,39 @@ msgstr ""
msgid "{title} v{version}"
msgstr ""
-#: part/views.py:74
-msgid "Set Part Category"
-msgstr "设置商品类别"
-
-#: part/views.py:122
-#, python-brace-format
-msgid "Set category for {n} parts"
-msgstr "为 {n} 个商品设置类别"
-
-#: part/views.py:193
+#: part/views.py:118
msgid "Match References"
msgstr ""
-#: part/views.py:494
+#: part/views.py:419
msgid "None"
msgstr ""
-#: part/views.py:556
+#: part/views.py:481
msgid "Part QR Code"
msgstr "商品二维码"
-#: part/views.py:650
+#: part/views.py:575
msgid "Select Part Image"
msgstr "选择商品图像"
-#: part/views.py:676
+#: part/views.py:601
msgid "Updated part image"
msgstr "更新商品图像"
-#: part/views.py:679
+#: part/views.py:604
msgid "Part image not found"
msgstr "未找到商品图像"
-#: part/views.py:768
-msgid "Confirm Part Deletion"
-msgstr "确认删除商品"
-
-#: part/views.py:776
-msgid "Part was deleted"
-msgstr "商品已删除"
-
-#: part/views.py:785
+#: part/views.py:693
msgid "Part Pricing"
msgstr "商品价格"
-#: part/views.py:976
+#: part/views.py:884
msgid "Delete Part Category"
msgstr "删除商品类别"
-#: part/views.py:983
+#: part/views.py:891
msgid "Part category was deleted"
msgstr "商品类别已删除"
@@ -5516,21 +5502,21 @@ msgstr ""
msgid "Label printing failed"
msgstr ""
-#: plugin/builtin/integration/core_notifications.py:28
+#: plugin/builtin/integration/core_notifications.py:29
msgid "InvenTree contributors"
msgstr ""
-#: plugin/builtin/integration/core_notifications.py:29
+#: plugin/builtin/integration/core_notifications.py:30
msgid "Integrated outgoing notificaton methods"
msgstr ""
-#: plugin/builtin/integration/core_notifications.py:33
-#: plugin/builtin/integration/core_notifications.py:52
-msgid "Enable email notifications"
-msgstr ""
-
#: plugin/builtin/integration/core_notifications.py:34
#: plugin/builtin/integration/core_notifications.py:53
+msgid "Enable email notifications"
+msgstr ""
+
+#: plugin/builtin/integration/core_notifications.py:35
+#: plugin/builtin/integration/core_notifications.py:54
msgid "Allow sending of emails for event notifications"
msgstr ""
@@ -5646,15 +5632,19 @@ msgstr ""
msgid "Either packagename of URL must be provided"
msgstr ""
-#: report/api.py:166
+#: report/api.py:179
msgid "No valid objects provided to template"
msgstr "没有为模板提供有效对象"
-#: report/api.py:198 report/api.py:239
+#: report/api.py:215 report/api.py:256
#, python-brace-format
msgid "Template file '{template}' is missing or does not exist"
msgstr ""
+#: report/api.py:359
+msgid "Test report"
+msgstr ""
+
#: report/models.py:152
msgid "Template name"
msgstr ""
@@ -5757,7 +5747,7 @@ msgstr ""
#: templates/js/translated/build.js:1173 templates/js/translated/build.js:1671
#: templates/js/translated/model_renderers.js:106
#: templates/js/translated/order.js:115 templates/js/translated/order.js:3229
-#: templates/js/translated/order.js:3318 templates/js/translated/stock.js:435
+#: templates/js/translated/order.js:3318 templates/js/translated/stock.js:434
msgid "Serial Number"
msgstr "序列号"
@@ -5766,19 +5756,19 @@ msgid "Test Results"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:93
-#: stock/models.py:2068
+#: stock/models.py:2072
msgid "Test"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:94
-#: stock/models.py:2074
+#: stock/models.py:2078
msgid "Result"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:97
#: templates/InvenTree/settings/plugin.html:51
#: templates/InvenTree/settings/plugin_settings.html:38
-#: templates/js/translated/order.js:1669 templates/js/translated/stock.js:2340
+#: templates/js/translated/order.js:1669 templates/js/translated/stock.js:2350
msgid "Date"
msgstr ""
@@ -5796,20 +5786,20 @@ msgid "Installed Items"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:137
-#: templates/js/translated/stock.js:555 templates/js/translated/stock.js:725
-#: templates/js/translated/stock.js:2589
+#: templates/js/translated/stock.js:554 templates/js/translated/stock.js:724
+#: templates/js/translated/stock.js:2599
msgid "Serial"
msgstr ""
-#: stock/api.py:504
+#: stock/api.py:505
msgid "Quantity is required"
msgstr ""
-#: stock/api.py:511
+#: stock/api.py:512
msgid "Valid part must be supplied"
msgstr ""
-#: stock/api.py:536
+#: stock/api.py:537
msgid "Serial numbers cannot be supplied for a non-trackable part"
msgstr ""
@@ -5917,7 +5907,7 @@ msgid "Destination Sales Order"
msgstr ""
#: stock/models.py:690 stock/templates/stock/item_base.html:429
-#: templates/js/translated/stock.js:1816
+#: templates/js/translated/stock.js:1826
msgid "Expiry Date"
msgstr ""
@@ -5971,79 +5961,79 @@ msgstr ""
msgid "Serial numbers already exist: {exists}"
msgstr ""
-#: stock/models.py:1321
+#: stock/models.py:1325
msgid "Stock item has been assigned to a sales order"
msgstr ""
-#: stock/models.py:1324
+#: stock/models.py:1328
msgid "Stock item is installed in another item"
msgstr ""
-#: stock/models.py:1327
+#: stock/models.py:1331
msgid "Stock item contains other items"
msgstr ""
-#: stock/models.py:1330
+#: stock/models.py:1334
msgid "Stock item has been assigned to a customer"
msgstr ""
-#: stock/models.py:1333
+#: stock/models.py:1337
msgid "Stock item is currently in production"
msgstr ""
-#: stock/models.py:1336
+#: stock/models.py:1340
msgid "Serialized stock cannot be merged"
msgstr ""
-#: stock/models.py:1343 stock/serializers.py:908
+#: stock/models.py:1347 stock/serializers.py:895
msgid "Duplicate stock items"
msgstr ""
-#: stock/models.py:1347
+#: stock/models.py:1351
msgid "Stock items must refer to the same part"
msgstr ""
-#: stock/models.py:1351
+#: stock/models.py:1355
msgid "Stock items must refer to the same supplier part"
msgstr ""
-#: stock/models.py:1355
+#: stock/models.py:1359
msgid "Stock status codes must match"
msgstr ""
-#: stock/models.py:1524
+#: stock/models.py:1528
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:1986
+#: stock/models.py:1990
msgid "Entry notes"
msgstr ""
-#: stock/models.py:2044
+#: stock/models.py:2048
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:2050
+#: stock/models.py:2054
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:2069
+#: stock/models.py:2073
msgid "Test name"
msgstr ""
-#: stock/models.py:2075
+#: stock/models.py:2079
msgid "Test result"
msgstr ""
-#: stock/models.py:2081
+#: stock/models.py:2085
msgid "Test output value"
msgstr ""
-#: stock/models.py:2088
+#: stock/models.py:2092
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:2094
+#: stock/models.py:2098
msgid "Test notes"
msgstr ""
@@ -6064,7 +6054,7 @@ msgstr ""
msgid "Enter serial numbers for new items"
msgstr ""
-#: stock/serializers.py:309 stock/serializers.py:865 stock/serializers.py:1098
+#: stock/serializers.py:309 stock/serializers.py:852 stock/serializers.py:1085
msgid "Destination stock location"
msgstr ""
@@ -6104,63 +6094,63 @@ msgstr ""
msgid "Destination location for returned item"
msgstr ""
-#: stock/serializers.py:720
+#: stock/serializers.py:707
msgid "Part must be salable"
msgstr ""
-#: stock/serializers.py:724
+#: stock/serializers.py:711
msgid "Item is allocated to a sales order"
msgstr ""
-#: stock/serializers.py:728
+#: stock/serializers.py:715
msgid "Item is allocated to a build order"
msgstr ""
-#: stock/serializers.py:759
+#: stock/serializers.py:746
msgid "Customer to assign stock items"
msgstr ""
-#: stock/serializers.py:765
+#: stock/serializers.py:752
msgid "Selected company is not a customer"
msgstr ""
-#: stock/serializers.py:773
+#: stock/serializers.py:760
msgid "Stock assignment notes"
msgstr ""
-#: stock/serializers.py:783 stock/serializers.py:1014
+#: stock/serializers.py:770 stock/serializers.py:1001
msgid "A list of stock items must be provided"
msgstr ""
-#: stock/serializers.py:872
+#: stock/serializers.py:859
msgid "Stock merging notes"
msgstr ""
-#: stock/serializers.py:877
+#: stock/serializers.py:864
msgid "Allow mismatched suppliers"
msgstr ""
-#: stock/serializers.py:878
+#: stock/serializers.py:865
msgid "Allow stock items with different supplier parts to be merged"
msgstr ""
-#: stock/serializers.py:883
+#: stock/serializers.py:870
msgid "Allow mismatched status"
msgstr ""
-#: stock/serializers.py:884
+#: stock/serializers.py:871
msgid "Allow stock items with different status codes to be merged"
msgstr ""
-#: stock/serializers.py:894
+#: stock/serializers.py:881
msgid "At least two stock items must be provided"
msgstr ""
-#: stock/serializers.py:976
+#: stock/serializers.py:963
msgid "StockItem primary key value"
msgstr ""
-#: stock/serializers.py:1004
+#: stock/serializers.py:991
msgid "Stock transaction notes"
msgstr ""
@@ -6185,7 +6175,7 @@ msgstr ""
msgid "Test Report"
msgstr ""
-#: stock/templates/stock/item.html:94
+#: stock/templates/stock/item.html:94 stock/templates/stock/item.html:298
msgid "Delete Test Data"
msgstr ""
@@ -6197,11 +6187,15 @@ msgstr ""
msgid "Installed Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:151 templates/js/translated/stock.js:2733
+#: stock/templates/stock/item.html:151 templates/js/translated/stock.js:2743
msgid "Install Stock Item"
msgstr ""
-#: stock/templates/stock/item.html:292 templates/js/translated/stock.js:1455
+#: stock/templates/stock/item.html:290
+msgid "Delete all test results for this stock item"
+msgstr ""
+
+#: stock/templates/stock/item.html:323 templates/js/translated/stock.js:1465
msgid "Add Test Result"
msgstr ""
@@ -6388,7 +6382,7 @@ msgid "Stale"
msgstr ""
#: stock/templates/stock/item_base.html:442
-#: templates/js/translated/stock.js:1832
+#: templates/js/translated/stock.js:1842
msgid "Last Updated"
msgstr ""
@@ -6529,7 +6523,7 @@ msgstr ""
msgid "Child Items"
msgstr ""
-#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:182
+#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:144
msgid "Convert Stock Item"
msgstr ""
@@ -6550,31 +6544,19 @@ msgstr "警告"
msgid "This action cannot be easily undone"
msgstr ""
-#: stock/views.py:113
+#: stock/views.py:111
msgid "Stock Location QR code"
msgstr "仓储地点二维码"
-#: stock/views.py:131
-msgid "Delete All Test Data"
-msgstr ""
-
-#: stock/views.py:149
-msgid "Confirm test data deletion"
-msgstr ""
-
-#: stock/views.py:150
-msgid "Check the confirmation box"
-msgstr "选中确认框"
-
-#: stock/views.py:165
+#: stock/views.py:127
msgid "Stock Item QR Code"
msgstr ""
-#: stock/views.py:216
+#: stock/views.py:178
msgid "Delete Stock Location"
msgstr "删除仓储地点"
-#: stock/views.py:229
+#: stock/views.py:191
msgid "Delete Stock Item"
msgstr ""
@@ -7317,8 +7299,8 @@ msgstr ""
#: templates/about.html:11 templates/about.html:105
#: templates/js/translated/bom.js:133 templates/js/translated/bom.js:621
-#: templates/js/translated/modals.js:56 templates/js/translated/modals.js:595
-#: templates/js/translated/modals.js:689 templates/js/translated/modals.js:997
+#: templates/js/translated/modals.js:56 templates/js/translated/modals.js:601
+#: templates/js/translated/modals.js:695 templates/js/translated/modals.js:1003
#: templates/js/translated/order.js:928 templates/modals.html:15
#: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50
msgid "Close"
@@ -7390,6 +7372,10 @@ msgstr ""
msgid "Please confirm that %(email)s is an email address for user %(user_display)s."
msgstr ""
+#: templates/account/email_confirm.html:20 templates/js/translated/forms.js:630
+msgid "Confirm"
+msgstr "确认"
+
#: templates/account/email_confirm.html:27
#, python-format
msgid "This email confirmation link expired or is invalid. Please issue a new email confirmation request."
@@ -7562,7 +7548,7 @@ msgstr "添加附件"
msgid "Delete selected attachments"
msgstr ""
-#: templates/attachment_table.html:12 templates/js/translated/attachment.js:110
+#: templates/attachment_table.html:12 templates/js/translated/attachment.js:112
msgid "Delete Attachments"
msgstr ""
@@ -7596,15 +7582,15 @@ msgid "The following parts are low on required stock"
msgstr ""
#: templates/email/build_order_required_stock.html:18
-#: templates/js/translated/bom.js:1425
+#: templates/js/translated/bom.js:1419
msgid "Required Quantity"
msgstr ""
#: templates/email/build_order_required_stock.html:19
#: templates/email/low_stock_notification.html:18
-#: templates/js/translated/bom.js:890 templates/js/translated/build.js:1787
-#: templates/js/translated/build.js:2650 templates/js/translated/part.js:527
-#: templates/js/translated/part.js:530
+#: templates/js/translated/bom.js:884 templates/js/translated/build.js:1787
+#: templates/js/translated/build.js:2650 templates/js/translated/part.js:571
+#: templates/js/translated/part.js:574
#: templates/js/translated/table_filters.js:178
msgid "Available"
msgstr "空闲"
@@ -7622,6 +7608,13 @@ msgstr ""
msgid "Minimum Quantity"
msgstr ""
+#: templates/email/new_order_assigned.html:9
+#: templates/email/overdue_build_order.html:9
+#: templates/email/overdue_purchase_order.html:9
+#: templates/email/overdue_sales_order.html:9
+msgid "Click on the following link to view this order"
+msgstr ""
+
#: templates/image_download.html:8
msgid "Specify URL for downloading image"
msgstr ""
@@ -7638,91 +7631,91 @@ msgstr ""
msgid "Remote image must not exceed maximum allowable file size"
msgstr ""
-#: templates/js/translated/api.js:235 templates/js/translated/modals.js:1067
+#: templates/js/translated/api.js:195 templates/js/translated/modals.js:1073
msgid "No Response"
msgstr ""
-#: templates/js/translated/api.js:236 templates/js/translated/modals.js:1068
+#: templates/js/translated/api.js:196 templates/js/translated/modals.js:1074
msgid "No response from the InvenTree server"
msgstr ""
-#: templates/js/translated/api.js:242
+#: templates/js/translated/api.js:202
msgid "Error 400: Bad request"
msgstr ""
-#: templates/js/translated/api.js:243
+#: templates/js/translated/api.js:203
msgid "API request returned error code 400"
msgstr ""
-#: templates/js/translated/api.js:247 templates/js/translated/modals.js:1077
+#: templates/js/translated/api.js:207 templates/js/translated/modals.js:1083
msgid "Error 401: Not Authenticated"
msgstr ""
-#: templates/js/translated/api.js:248 templates/js/translated/modals.js:1078
+#: templates/js/translated/api.js:208 templates/js/translated/modals.js:1084
msgid "Authentication credentials not supplied"
msgstr ""
-#: templates/js/translated/api.js:252 templates/js/translated/modals.js:1082
+#: templates/js/translated/api.js:212 templates/js/translated/modals.js:1088
msgid "Error 403: Permission Denied"
msgstr ""
-#: templates/js/translated/api.js:253 templates/js/translated/modals.js:1083
+#: templates/js/translated/api.js:213 templates/js/translated/modals.js:1089
msgid "You do not have the required permissions to access this function"
msgstr ""
-#: templates/js/translated/api.js:257 templates/js/translated/modals.js:1087
+#: templates/js/translated/api.js:217 templates/js/translated/modals.js:1093
msgid "Error 404: Resource Not Found"
msgstr ""
-#: templates/js/translated/api.js:258 templates/js/translated/modals.js:1088
+#: templates/js/translated/api.js:218 templates/js/translated/modals.js:1094
msgid "The requested resource could not be located on the server"
msgstr ""
-#: templates/js/translated/api.js:262
+#: templates/js/translated/api.js:222
msgid "Error 405: Method Not Allowed"
msgstr ""
-#: templates/js/translated/api.js:263
+#: templates/js/translated/api.js:223
msgid "HTTP method not allowed at URL"
msgstr ""
-#: templates/js/translated/api.js:267 templates/js/translated/modals.js:1092
+#: templates/js/translated/api.js:227 templates/js/translated/modals.js:1098
msgid "Error 408: Timeout"
msgstr ""
-#: templates/js/translated/api.js:268 templates/js/translated/modals.js:1093
+#: templates/js/translated/api.js:228 templates/js/translated/modals.js:1099
msgid "Connection timeout while requesting data from server"
msgstr ""
-#: templates/js/translated/api.js:271
+#: templates/js/translated/api.js:231
msgid "Unhandled Error Code"
msgstr ""
-#: templates/js/translated/api.js:272
+#: templates/js/translated/api.js:232
msgid "Error code"
msgstr ""
-#: templates/js/translated/attachment.js:96
+#: templates/js/translated/attachment.js:98
msgid "All selected attachments will be deleted"
msgstr ""
-#: templates/js/translated/attachment.js:156
+#: templates/js/translated/attachment.js:152
msgid "No attachments found"
msgstr ""
-#: templates/js/translated/attachment.js:180
+#: templates/js/translated/attachment.js:176
msgid "Edit Attachment"
msgstr "编辑附件"
-#: templates/js/translated/attachment.js:246
+#: templates/js/translated/attachment.js:242
msgid "Upload Date"
msgstr ""
-#: templates/js/translated/attachment.js:262
+#: templates/js/translated/attachment.js:264
msgid "Edit attachment"
msgstr ""
-#: templates/js/translated/attachment.js:269
+#: templates/js/translated/attachment.js:271
msgid "Delete attachment"
msgstr ""
@@ -7755,7 +7748,7 @@ msgid "Unknown response from server"
msgstr ""
#: templates/js/translated/barcode.js:182
-#: templates/js/translated/modals.js:1057
+#: templates/js/translated/modals.js:1063
msgid "Invalid server response"
msgstr ""
@@ -7783,7 +7776,7 @@ msgstr ""
msgid "Unlink"
msgstr ""
-#: templates/js/translated/barcode.js:456 templates/js/translated/stock.js:999
+#: templates/js/translated/barcode.js:456 templates/js/translated/stock.js:998
msgid "Remove stock item"
msgstr ""
@@ -7918,89 +7911,89 @@ msgstr ""
msgid "Edit BOM Item Substitutes"
msgstr ""
-#: templates/js/translated/bom.js:682
+#: templates/js/translated/bom.js:684
msgid "All selected BOM items will be deleted"
msgstr ""
-#: templates/js/translated/bom.js:697
+#: templates/js/translated/bom.js:699
msgid "Delete selected BOM items?"
msgstr ""
-#: templates/js/translated/bom.js:824
+#: templates/js/translated/bom.js:818
msgid "Load BOM for subassembly"
msgstr ""
-#: templates/js/translated/bom.js:834
+#: templates/js/translated/bom.js:828
msgid "Substitutes Available"
msgstr ""
-#: templates/js/translated/bom.js:838 templates/js/translated/build.js:1769
+#: templates/js/translated/bom.js:832 templates/js/translated/build.js:1769
msgid "Variant stock allowed"
msgstr ""
-#: templates/js/translated/bom.js:906 templates/js/translated/build.js:1814
+#: templates/js/translated/bom.js:900 templates/js/translated/build.js:1814
#: templates/js/translated/order.js:3562
msgid "No Stock Available"
msgstr ""
-#: templates/js/translated/bom.js:910 templates/js/translated/build.js:1818
+#: templates/js/translated/bom.js:904 templates/js/translated/build.js:1818
msgid "Includes variant and substitute stock"
msgstr ""
-#: templates/js/translated/bom.js:912 templates/js/translated/build.js:1820
-#: templates/js/translated/part.js:690
+#: templates/js/translated/bom.js:906 templates/js/translated/build.js:1820
+#: templates/js/translated/part.js:734
msgid "Includes variant stock"
msgstr ""
-#: templates/js/translated/bom.js:914 templates/js/translated/build.js:1822
+#: templates/js/translated/bom.js:908 templates/js/translated/build.js:1822
msgid "Includes substitute stock"
msgstr ""
-#: templates/js/translated/bom.js:928
+#: templates/js/translated/bom.js:922
msgid "Substitutes"
msgstr ""
-#: templates/js/translated/bom.js:943
+#: templates/js/translated/bom.js:937
msgid "Purchase Price Range"
msgstr ""
-#: templates/js/translated/bom.js:950
+#: templates/js/translated/bom.js:944
msgid "Purchase Price Average"
msgstr ""
-#: templates/js/translated/bom.js:999 templates/js/translated/bom.js:1090
+#: templates/js/translated/bom.js:993 templates/js/translated/bom.js:1084
msgid "View BOM"
msgstr ""
-#: templates/js/translated/bom.js:1061
+#: templates/js/translated/bom.js:1055
msgid "Validate BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:1063
+#: templates/js/translated/bom.js:1057
msgid "This line has been validated"
msgstr ""
-#: templates/js/translated/bom.js:1065
+#: templates/js/translated/bom.js:1059
msgid "Edit substitute parts"
msgstr ""
-#: templates/js/translated/bom.js:1067 templates/js/translated/bom.js:1228
+#: templates/js/translated/bom.js:1061 templates/js/translated/bom.js:1222
msgid "Edit BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:1069
+#: templates/js/translated/bom.js:1063
msgid "Delete BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:1164 templates/js/translated/build.js:1615
+#: templates/js/translated/bom.js:1158 templates/js/translated/build.js:1615
msgid "No BOM items found"
msgstr ""
-#: templates/js/translated/bom.js:1408 templates/js/translated/build.js:1753
+#: templates/js/translated/bom.js:1402 templates/js/translated/build.js:1753
msgid "Required Part"
msgstr ""
-#: templates/js/translated/bom.js:1430
+#: templates/js/translated/bom.js:1424
msgid "Inherited from parent BOM"
msgstr ""
@@ -8040,13 +8033,13 @@ msgstr "生产订单未完成"
msgid "Complete Build Order"
msgstr "生产订单完成"
-#: templates/js/translated/build.js:259 templates/js/translated/stock.js:91
-#: templates/js/translated/stock.js:181
+#: templates/js/translated/build.js:259 templates/js/translated/stock.js:90
+#: templates/js/translated/stock.js:180
msgid "Next available serial number"
msgstr ""
-#: templates/js/translated/build.js:261 templates/js/translated/stock.js:93
-#: templates/js/translated/stock.js:183
+#: templates/js/translated/build.js:261 templates/js/translated/stock.js:92
+#: templates/js/translated/stock.js:182
msgid "Latest serial number"
msgstr ""
@@ -8259,9 +8252,9 @@ msgstr ""
msgid "No builds matching query"
msgstr ""
-#: templates/js/translated/build.js:2448 templates/js/translated/part.js:1314
-#: templates/js/translated/part.js:1729 templates/js/translated/stock.js:1619
-#: templates/js/translated/stock.js:2277
+#: templates/js/translated/build.js:2448 templates/js/translated/part.js:1358
+#: templates/js/translated/part.js:1825 templates/js/translated/stock.js:1629
+#: templates/js/translated/stock.js:2287
msgid "Select"
msgstr ""
@@ -8273,7 +8266,7 @@ msgstr ""
msgid "Progress"
msgstr ""
-#: templates/js/translated/build.js:2532 templates/js/translated/stock.js:2519
+#: templates/js/translated/build.js:2532 templates/js/translated/stock.js:2529
msgid "No user information"
msgstr "没有用户信息"
@@ -8285,107 +8278,107 @@ msgstr ""
msgid "No parts allocated for"
msgstr ""
-#: templates/js/translated/company.js:66
+#: templates/js/translated/company.js:65
msgid "Add Manufacturer"
msgstr "添加制造商"
-#: templates/js/translated/company.js:79 templates/js/translated/company.js:169
+#: templates/js/translated/company.js:78 templates/js/translated/company.js:168
msgid "Add Manufacturer Part"
msgstr "添加制造商商品"
-#: templates/js/translated/company.js:100
+#: templates/js/translated/company.js:99
msgid "Edit Manufacturer Part"
msgstr "编辑制造商商品"
-#: templates/js/translated/company.js:157 templates/js/translated/order.js:506
+#: templates/js/translated/company.js:156 templates/js/translated/order.js:506
msgid "Add Supplier"
msgstr "添加供应商"
-#: templates/js/translated/company.js:185
+#: templates/js/translated/company.js:184
msgid "Add Supplier Part"
msgstr "添加供应商商品"
-#: templates/js/translated/company.js:200
+#: templates/js/translated/company.js:199
msgid "Edit Supplier Part"
msgstr "编辑供应商商品"
-#: templates/js/translated/company.js:248
+#: templates/js/translated/company.js:249
msgid "All selected supplier parts will be deleted"
msgstr "删除所有选定的供应商商品"
-#: templates/js/translated/company.js:263
+#: templates/js/translated/company.js:264
msgid "Delete Supplier Parts"
msgstr ""
-#: templates/js/translated/company.js:342
+#: templates/js/translated/company.js:336
msgid "Add new Company"
msgstr "增加新的公司信息"
-#: templates/js/translated/company.js:419
+#: templates/js/translated/company.js:413
msgid "Parts Supplied"
msgstr ""
-#: templates/js/translated/company.js:428
+#: templates/js/translated/company.js:422
msgid "Parts Manufactured"
msgstr ""
-#: templates/js/translated/company.js:443
+#: templates/js/translated/company.js:437
msgid "No company information found"
msgstr "未找到该公司信息"
-#: templates/js/translated/company.js:482
+#: templates/js/translated/company.js:478
msgid "All selected manufacturer parts will be deleted"
msgstr ""
-#: templates/js/translated/company.js:496
+#: templates/js/translated/company.js:492
msgid "Delete Manufacturer Parts"
msgstr "删除制造商商品"
-#: templates/js/translated/company.js:535
+#: templates/js/translated/company.js:526
msgid "All selected parameters will be deleted"
msgstr ""
-#: templates/js/translated/company.js:548
+#: templates/js/translated/company.js:539
msgid "Delete Parameters"
msgstr "删除参数"
-#: templates/js/translated/company.js:595
+#: templates/js/translated/company.js:580
msgid "No manufacturer parts found"
msgstr ""
-#: templates/js/translated/company.js:615
-#: templates/js/translated/company.js:874 templates/js/translated/part.js:565
-#: templates/js/translated/part.js:650
+#: templates/js/translated/company.js:600
+#: templates/js/translated/company.js:859 templates/js/translated/part.js:609
+#: templates/js/translated/part.js:694
msgid "Template part"
msgstr ""
-#: templates/js/translated/company.js:619
-#: templates/js/translated/company.js:878 templates/js/translated/part.js:569
-#: templates/js/translated/part.js:654
+#: templates/js/translated/company.js:604
+#: templates/js/translated/company.js:863 templates/js/translated/part.js:613
+#: templates/js/translated/part.js:698
msgid "Assembled part"
msgstr ""
-#: templates/js/translated/company.js:747 templates/js/translated/part.js:757
+#: templates/js/translated/company.js:732 templates/js/translated/part.js:801
msgid "No parameters found"
msgstr "无指定参数"
-#: templates/js/translated/company.js:784 templates/js/translated/part.js:799
+#: templates/js/translated/company.js:769 templates/js/translated/part.js:843
msgid "Edit parameter"
msgstr "编辑参数"
-#: templates/js/translated/company.js:785 templates/js/translated/part.js:800
+#: templates/js/translated/company.js:770 templates/js/translated/part.js:844
msgid "Delete parameter"
msgstr "删除参数"
-#: templates/js/translated/company.js:804 templates/js/translated/part.js:817
+#: templates/js/translated/company.js:789 templates/js/translated/part.js:861
msgid "Edit Parameter"
msgstr "编辑参数"
-#: templates/js/translated/company.js:815 templates/js/translated/part.js:829
+#: templates/js/translated/company.js:800 templates/js/translated/part.js:873
msgid "Delete Parameter"
msgstr "删除参数"
-#: templates/js/translated/company.js:854
+#: templates/js/translated/company.js:839
msgid "No supplier parts found"
msgstr "未找到供应商商品"
@@ -8448,36 +8441,36 @@ msgstr ""
msgid "Keep this form open"
msgstr ""
-#: templates/js/translated/forms.js:756
+#: templates/js/translated/forms.js:757
msgid "Enter a valid number"
msgstr ""
-#: templates/js/translated/forms.js:1248 templates/modals.html:19
+#: templates/js/translated/forms.js:1249 templates/modals.html:19
#: templates/modals.html:43
msgid "Form errors exist"
msgstr ""
-#: templates/js/translated/forms.js:1681
+#: templates/js/translated/forms.js:1682
msgid "No results found"
msgstr ""
-#: templates/js/translated/forms.js:1896 templates/search.html:29
+#: templates/js/translated/forms.js:1897 templates/search.html:29
msgid "Searching"
msgstr ""
-#: templates/js/translated/forms.js:2149
+#: templates/js/translated/forms.js:2150
msgid "Clear input"
msgstr ""
-#: templates/js/translated/forms.js:2615
+#: templates/js/translated/forms.js:2616
msgid "File Column"
msgstr ""
-#: templates/js/translated/forms.js:2615
+#: templates/js/translated/forms.js:2616
msgid "Field Name"
msgstr ""
-#: templates/js/translated/forms.js:2627
+#: templates/js/translated/forms.js:2628
msgid "Select Columns"
msgstr ""
@@ -8498,7 +8491,7 @@ msgid "Labels sent to printer"
msgstr ""
#: templates/js/translated/label.js:60 templates/js/translated/report.js:118
-#: templates/js/translated/stock.js:1023
+#: templates/js/translated/stock.js:1022
msgid "Select Stock Items"
msgstr "选择库存项"
@@ -8552,12 +8545,12 @@ msgid "Select Label Template"
msgstr "选择标签模板"
#: templates/js/translated/modals.js:82 templates/js/translated/modals.js:142
-#: templates/js/translated/modals.js:621
+#: templates/js/translated/modals.js:627
msgid "Cancel"
msgstr "取消"
#: templates/js/translated/modals.js:83 templates/js/translated/modals.js:141
-#: templates/js/translated/modals.js:688 templates/js/translated/modals.js:996
+#: templates/js/translated/modals.js:694 templates/js/translated/modals.js:1002
#: templates/modals.html:28 templates/modals.html:51
msgid "Submit"
msgstr ""
@@ -8566,47 +8559,47 @@ msgstr ""
msgid "Form Title"
msgstr ""
-#: templates/js/translated/modals.js:403
+#: templates/js/translated/modals.js:421
msgid "Waiting for server..."
msgstr ""
-#: templates/js/translated/modals.js:562
+#: templates/js/translated/modals.js:568
msgid "Show Error Information"
msgstr ""
-#: templates/js/translated/modals.js:620
+#: templates/js/translated/modals.js:626
msgid "Accept"
msgstr ""
-#: templates/js/translated/modals.js:677
+#: templates/js/translated/modals.js:683
msgid "Loading Data"
msgstr ""
-#: templates/js/translated/modals.js:948
+#: templates/js/translated/modals.js:954
msgid "Invalid response from server"
msgstr ""
-#: templates/js/translated/modals.js:948
+#: templates/js/translated/modals.js:954
msgid "Form data missing from server response"
msgstr ""
-#: templates/js/translated/modals.js:960
+#: templates/js/translated/modals.js:966
msgid "Error posting form data"
msgstr ""
-#: templates/js/translated/modals.js:1057
+#: templates/js/translated/modals.js:1063
msgid "JSON response missing form data"
msgstr ""
-#: templates/js/translated/modals.js:1072
+#: templates/js/translated/modals.js:1078
msgid "Error 400: Bad Request"
msgstr ""
-#: templates/js/translated/modals.js:1073
+#: templates/js/translated/modals.js:1079
msgid "Server returned error code 400"
msgstr ""
-#: templates/js/translated/modals.js:1096
+#: templates/js/translated/modals.js:1102
msgid "Error requesting form data"
msgstr ""
@@ -8656,11 +8649,11 @@ msgstr ""
msgid "Mark as read"
msgstr ""
-#: templates/js/translated/notification.js:259
+#: templates/js/translated/notification.js:260
msgid "No unread notifications"
msgstr ""
-#: templates/js/translated/notification.js:300 templates/notifications.html:10
+#: templates/js/translated/notification.js:302 templates/notifications.html:10
msgid "Notifications will load here"
msgstr ""
@@ -8804,7 +8797,7 @@ msgstr ""
msgid "Quantity to receive"
msgstr ""
-#: templates/js/translated/order.js:1225 templates/js/translated/stock.js:2080
+#: templates/js/translated/order.js:1225 templates/js/translated/stock.js:2090
msgid "Stock Status"
msgstr ""
@@ -8828,7 +8821,7 @@ msgstr ""
msgid "Receive Purchase Order Items"
msgstr ""
-#: templates/js/translated/order.js:1602 templates/js/translated/part.js:870
+#: templates/js/translated/order.js:1602 templates/js/translated/part.js:914
msgid "No purchase orders found"
msgstr ""
@@ -8863,7 +8856,7 @@ msgstr ""
#: templates/js/translated/order.js:1937 templates/js/translated/order.js:2139
#: templates/js/translated/order.js:3467 templates/js/translated/order.js:3978
-#: templates/js/translated/part.js:1948 templates/js/translated/part.js:2301
+#: templates/js/translated/part.js:2044 templates/js/translated/part.js:2397
msgid "Unit Price"
msgstr "单价"
@@ -8873,11 +8866,11 @@ msgid "Total Price"
msgstr ""
#: templates/js/translated/order.js:1993 templates/js/translated/order.js:3525
-#: templates/js/translated/part.js:979
+#: templates/js/translated/part.js:1023
msgid "This line item is overdue"
msgstr ""
-#: templates/js/translated/order.js:2052 templates/js/translated/part.js:1025
+#: templates/js/translated/order.js:2052 templates/js/translated/part.js:1069
msgid "Receive line item"
msgstr ""
@@ -8998,7 +8991,7 @@ msgid "Delete Stock Allocation"
msgstr ""
#: templates/js/translated/order.js:3243 templates/js/translated/order.js:3332
-#: templates/js/translated/stock.js:1535
+#: templates/js/translated/stock.js:1545
msgid "Shipped to customer"
msgstr ""
@@ -9138,165 +9131,209 @@ msgstr ""
msgid "Create Part Variant"
msgstr ""
+#: templates/js/translated/part.js:405
+msgid "Active Part"
+msgstr ""
+
+#: templates/js/translated/part.js:406
+msgid "Part cannot be deleted as it is currently active"
+msgstr ""
+
+#: templates/js/translated/part.js:420
+msgid "Deleting this part cannot be reversed"
+msgstr ""
+
+#: templates/js/translated/part.js:422
+msgid "Any stock items for this part will be deleted"
+msgstr ""
+
#: templates/js/translated/part.js:423
+msgid "This part will be removed from any Bills of Material"
+msgstr ""
+
+#: templates/js/translated/part.js:424
+msgid "All manufacturer and supplier information for this part will be deleted"
+msgstr ""
+
+#: templates/js/translated/part.js:431
+msgid "Delete Part"
+msgstr ""
+
+#: templates/js/translated/part.js:467
msgid "You are subscribed to notifications for this item"
msgstr ""
-#: templates/js/translated/part.js:425
+#: templates/js/translated/part.js:469
msgid "You have subscribed to notifications for this item"
msgstr ""
-#: templates/js/translated/part.js:430
+#: templates/js/translated/part.js:474
msgid "Subscribe to notifications for this item"
msgstr ""
-#: templates/js/translated/part.js:432
+#: templates/js/translated/part.js:476
msgid "You have unsubscribed to notifications for this item"
msgstr ""
-#: templates/js/translated/part.js:449
+#: templates/js/translated/part.js:493
msgid "Validating the BOM will mark each line item as valid"
msgstr ""
-#: templates/js/translated/part.js:459
+#: templates/js/translated/part.js:503
msgid "Validate Bill of Materials"
msgstr ""
-#: templates/js/translated/part.js:462
+#: templates/js/translated/part.js:506
msgid "Validated Bill of Materials"
msgstr ""
-#: templates/js/translated/part.js:487
+#: templates/js/translated/part.js:531
msgid "Copy Bill of Materials"
msgstr ""
-#: templates/js/translated/part.js:513 templates/js/translated/part.js:1397
+#: templates/js/translated/part.js:557 templates/js/translated/part.js:1441
#: templates/js/translated/table_filters.js:452
msgid "Low stock"
msgstr ""
-#: templates/js/translated/part.js:523 templates/js/translated/part.js:1409
+#: templates/js/translated/part.js:567 templates/js/translated/part.js:1453
msgid "No stock available"
msgstr ""
-#: templates/js/translated/part.js:557 templates/js/translated/part.js:642
+#: templates/js/translated/part.js:601 templates/js/translated/part.js:686
msgid "Trackable part"
msgstr "可追溯商品"
-#: templates/js/translated/part.js:561 templates/js/translated/part.js:646
+#: templates/js/translated/part.js:605 templates/js/translated/part.js:690
msgid "Virtual part"
msgstr "虚拟商品"
-#: templates/js/translated/part.js:573
+#: templates/js/translated/part.js:617
msgid "Subscribed part"
msgstr ""
-#: templates/js/translated/part.js:577
+#: templates/js/translated/part.js:621
msgid "Salable part"
msgstr "可销售商品"
-#: templates/js/translated/part.js:705
+#: templates/js/translated/part.js:749
msgid "No variants found"
msgstr ""
-#: templates/js/translated/part.js:1095
+#: templates/js/translated/part.js:1139
msgid "Delete part relationship"
msgstr ""
-#: templates/js/translated/part.js:1119
+#: templates/js/translated/part.js:1163
msgid "Delete Part Relationship"
msgstr ""
-#: templates/js/translated/part.js:1184 templates/js/translated/part.js:1480
+#: templates/js/translated/part.js:1228 templates/js/translated/part.js:1524
msgid "No parts found"
msgstr ""
-#: templates/js/translated/part.js:1223
+#: templates/js/translated/part.js:1267
msgid "Not available"
msgstr ""
-#: templates/js/translated/part.js:1374
+#: templates/js/translated/part.js:1418
msgid "No category"
msgstr "没有分类"
-#: templates/js/translated/part.js:1504 templates/js/translated/part.js:1664
-#: templates/js/translated/stock.js:2238
+#: templates/js/translated/part.js:1548 templates/js/translated/part.js:1760
+#: templates/js/translated/stock.js:2248
msgid "Display as list"
msgstr ""
-#: templates/js/translated/part.js:1520
+#: templates/js/translated/part.js:1564
msgid "Display as grid"
msgstr ""
-#: templates/js/translated/part.js:1683 templates/js/translated/stock.js:2257
+#: templates/js/translated/part.js:1630
+msgid "Set the part category for the selected parts"
+msgstr ""
+
+#: templates/js/translated/part.js:1635
+msgid "Set Part Category"
+msgstr "设置商品类别"
+
+#: templates/js/translated/part.js:1640
+msgid "Select Part Category"
+msgstr ""
+
+#: templates/js/translated/part.js:1653
+msgid "Category is required"
+msgstr ""
+
+#: templates/js/translated/part.js:1779 templates/js/translated/stock.js:2267
msgid "Display as tree"
msgstr ""
-#: templates/js/translated/part.js:1747
+#: templates/js/translated/part.js:1843
msgid "Subscribed category"
msgstr ""
-#: templates/js/translated/part.js:1761 templates/js/translated/stock.js:2301
+#: templates/js/translated/part.js:1857 templates/js/translated/stock.js:2311
msgid "Path"
msgstr ""
-#: templates/js/translated/part.js:1805
+#: templates/js/translated/part.js:1901
msgid "No test templates matching query"
msgstr ""
-#: templates/js/translated/part.js:1856 templates/js/translated/stock.js:1233
+#: templates/js/translated/part.js:1952 templates/js/translated/stock.js:1243
msgid "Edit test result"
msgstr ""
-#: templates/js/translated/part.js:1857 templates/js/translated/stock.js:1234
-#: templates/js/translated/stock.js:1493
+#: templates/js/translated/part.js:1953 templates/js/translated/stock.js:1244
+#: templates/js/translated/stock.js:1503
msgid "Delete test result"
msgstr ""
-#: templates/js/translated/part.js:1863
+#: templates/js/translated/part.js:1959
msgid "This test is defined for a parent part"
msgstr ""
-#: templates/js/translated/part.js:1885
+#: templates/js/translated/part.js:1981
msgid "Edit Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:1899
+#: templates/js/translated/part.js:1995
msgid "Delete Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:1924
+#: templates/js/translated/part.js:2020
#, python-brace-format
msgid "No ${human_name} information found"
msgstr ""
-#: templates/js/translated/part.js:1981
+#: templates/js/translated/part.js:2077
#, python-brace-format
msgid "Edit ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:1982
+#: templates/js/translated/part.js:2078
#, python-brace-format
msgid "Delete ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:2096
+#: templates/js/translated/part.js:2192
msgid "Current Stock"
msgstr ""
-#: templates/js/translated/part.js:2129
+#: templates/js/translated/part.js:2225
msgid "No scheduling information available for this part"
msgstr ""
-#: templates/js/translated/part.js:2155
+#: templates/js/translated/part.js:2251
msgid "Scheduled Stock Quantities"
msgstr ""
-#: templates/js/translated/part.js:2225
+#: templates/js/translated/part.js:2321
msgid "Single Price"
msgstr ""
-#: templates/js/translated/part.js:2244
+#: templates/js/translated/part.js:2340
msgid "Single Price Difference"
msgstr ""
@@ -9378,360 +9415,360 @@ msgstr ""
msgid "Remove results"
msgstr ""
-#: templates/js/translated/stock.js:73
+#: templates/js/translated/stock.js:72
msgid "Serialize Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:101
+#: templates/js/translated/stock.js:100
msgid "Confirm Stock Serialization"
msgstr ""
-#: templates/js/translated/stock.js:110
+#: templates/js/translated/stock.js:109
msgid "Parent stock location"
msgstr ""
-#: templates/js/translated/stock.js:139
+#: templates/js/translated/stock.js:138
msgid "Edit Stock Location"
msgstr "编辑仓储地点"
-#: templates/js/translated/stock.js:154
+#: templates/js/translated/stock.js:153
msgid "New Stock Location"
msgstr ""
-#: templates/js/translated/stock.js:194
+#: templates/js/translated/stock.js:193
msgid "This part cannot be serialized"
msgstr ""
-#: templates/js/translated/stock.js:233
+#: templates/js/translated/stock.js:232
msgid "Enter initial quantity for this stock item"
msgstr ""
-#: templates/js/translated/stock.js:239
+#: templates/js/translated/stock.js:238
msgid "Enter serial numbers for new stock (or leave blank)"
msgstr ""
-#: templates/js/translated/stock.js:304
+#: templates/js/translated/stock.js:303
msgid "Stock item duplicated"
msgstr ""
-#: templates/js/translated/stock.js:324
+#: templates/js/translated/stock.js:323
msgid "Duplicate Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:344
+#: templates/js/translated/stock.js:343
msgid "Edit Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:394
+#: templates/js/translated/stock.js:393
msgid "Created new stock item"
msgstr ""
-#: templates/js/translated/stock.js:407
+#: templates/js/translated/stock.js:406
msgid "Created multiple stock items"
msgstr ""
-#: templates/js/translated/stock.js:432
+#: templates/js/translated/stock.js:431
msgid "Find Serial Number"
msgstr ""
-#: templates/js/translated/stock.js:436 templates/js/translated/stock.js:437
+#: templates/js/translated/stock.js:435 templates/js/translated/stock.js:436
msgid "Enter serial number"
msgstr ""
-#: templates/js/translated/stock.js:453
+#: templates/js/translated/stock.js:452
msgid "Enter a serial number"
msgstr ""
-#: templates/js/translated/stock.js:473
+#: templates/js/translated/stock.js:472
msgid "No matching serial number"
msgstr ""
-#: templates/js/translated/stock.js:482
+#: templates/js/translated/stock.js:481
msgid "More than one matching result found"
msgstr ""
-#: templates/js/translated/stock.js:605
+#: templates/js/translated/stock.js:604
msgid "Confirm stock assignment"
msgstr ""
-#: templates/js/translated/stock.js:606
+#: templates/js/translated/stock.js:605
msgid "Assign Stock to Customer"
msgstr ""
-#: templates/js/translated/stock.js:683
+#: templates/js/translated/stock.js:682
msgid "Warning: Merge operation cannot be reversed"
msgstr ""
-#: templates/js/translated/stock.js:684
+#: templates/js/translated/stock.js:683
msgid "Some information will be lost when merging stock items"
msgstr ""
-#: templates/js/translated/stock.js:686
+#: templates/js/translated/stock.js:685
msgid "Stock transaction history will be deleted for merged items"
msgstr ""
-#: templates/js/translated/stock.js:687
+#: templates/js/translated/stock.js:686
msgid "Supplier part information will be deleted for merged items"
msgstr ""
-#: templates/js/translated/stock.js:773
+#: templates/js/translated/stock.js:772
msgid "Confirm stock item merge"
msgstr ""
-#: templates/js/translated/stock.js:774
+#: templates/js/translated/stock.js:773
msgid "Merge Stock Items"
msgstr ""
-#: templates/js/translated/stock.js:869
+#: templates/js/translated/stock.js:868
msgid "Transfer Stock"
msgstr ""
-#: templates/js/translated/stock.js:870
+#: templates/js/translated/stock.js:869
msgid "Move"
msgstr ""
-#: templates/js/translated/stock.js:876
+#: templates/js/translated/stock.js:875
msgid "Count Stock"
msgstr ""
-#: templates/js/translated/stock.js:877
+#: templates/js/translated/stock.js:876
msgid "Count"
msgstr ""
-#: templates/js/translated/stock.js:881
+#: templates/js/translated/stock.js:880
msgid "Remove Stock"
msgstr ""
-#: templates/js/translated/stock.js:882
+#: templates/js/translated/stock.js:881
msgid "Take"
msgstr ""
-#: templates/js/translated/stock.js:886
+#: templates/js/translated/stock.js:885
msgid "Add Stock"
msgstr ""
-#: templates/js/translated/stock.js:887 users/models.py:215
+#: templates/js/translated/stock.js:886 users/models.py:215
msgid "Add"
msgstr "添加"
-#: templates/js/translated/stock.js:891
+#: templates/js/translated/stock.js:890
msgid "Delete Stock"
msgstr ""
-#: templates/js/translated/stock.js:984
+#: templates/js/translated/stock.js:983
msgid "Quantity cannot be adjusted for serialized stock"
msgstr ""
-#: templates/js/translated/stock.js:984
+#: templates/js/translated/stock.js:983
msgid "Specify stock quantity"
msgstr ""
-#: templates/js/translated/stock.js:1024
+#: templates/js/translated/stock.js:1023
msgid "You must select at least one available stock item"
msgstr ""
-#: templates/js/translated/stock.js:1047
+#: templates/js/translated/stock.js:1046
msgid "Confirm stock adjustment"
msgstr ""
-#: templates/js/translated/stock.js:1172
+#: templates/js/translated/stock.js:1182
msgid "PASS"
msgstr ""
-#: templates/js/translated/stock.js:1174
+#: templates/js/translated/stock.js:1184
msgid "FAIL"
msgstr ""
-#: templates/js/translated/stock.js:1179
+#: templates/js/translated/stock.js:1189
msgid "NO RESULT"
msgstr ""
-#: templates/js/translated/stock.js:1226
+#: templates/js/translated/stock.js:1236
msgid "Pass test"
msgstr ""
-#: templates/js/translated/stock.js:1229
+#: templates/js/translated/stock.js:1239
msgid "Add test result"
msgstr ""
-#: templates/js/translated/stock.js:1255
+#: templates/js/translated/stock.js:1265
msgid "No test results found"
msgstr ""
-#: templates/js/translated/stock.js:1311
+#: templates/js/translated/stock.js:1321
msgid "Test Date"
msgstr ""
-#: templates/js/translated/stock.js:1476
+#: templates/js/translated/stock.js:1486
msgid "Edit Test Result"
msgstr ""
-#: templates/js/translated/stock.js:1498
+#: templates/js/translated/stock.js:1508
msgid "Delete Test Result"
msgstr ""
-#: templates/js/translated/stock.js:1527
+#: templates/js/translated/stock.js:1537
msgid "In production"
msgstr "正在生产"
-#: templates/js/translated/stock.js:1531
+#: templates/js/translated/stock.js:1541
msgid "Installed in Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:1539
+#: templates/js/translated/stock.js:1549
msgid "Assigned to Sales Order"
msgstr ""
-#: templates/js/translated/stock.js:1545
+#: templates/js/translated/stock.js:1555
msgid "No stock location set"
msgstr "未设置仓储地点"
-#: templates/js/translated/stock.js:1712
+#: templates/js/translated/stock.js:1722
msgid "Stock item is in production"
msgstr "库存品正在生产"
-#: templates/js/translated/stock.js:1717
+#: templates/js/translated/stock.js:1727
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:1720
+#: templates/js/translated/stock.js:1730
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:1723
+#: templates/js/translated/stock.js:1733
msgid "Serialized stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:1725
+#: templates/js/translated/stock.js:1735
msgid "Stock item has been fully allocated"
msgstr ""
-#: templates/js/translated/stock.js:1727
+#: templates/js/translated/stock.js:1737
msgid "Stock item has been partially allocated"
msgstr ""
-#: templates/js/translated/stock.js:1730
+#: templates/js/translated/stock.js:1740
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:1734
+#: templates/js/translated/stock.js:1744
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:1736
+#: templates/js/translated/stock.js:1746
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:1743
+#: templates/js/translated/stock.js:1753
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:1745
+#: templates/js/translated/stock.js:1755
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:1747
+#: templates/js/translated/stock.js:1757
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:1751
+#: templates/js/translated/stock.js:1761
#: templates/js/translated/table_filters.js:188
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:1802
+#: templates/js/translated/stock.js:1812
msgid "Stocktake"
msgstr ""
-#: templates/js/translated/stock.js:1884
+#: templates/js/translated/stock.js:1894
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:1922
+#: templates/js/translated/stock.js:1932
msgid "No stock items matching query"
msgstr ""
-#: templates/js/translated/stock.js:2095
+#: templates/js/translated/stock.js:2105
msgid "Set Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:2109
+#: templates/js/translated/stock.js:2119
msgid "Select Status Code"
msgstr ""
-#: templates/js/translated/stock.js:2110
+#: templates/js/translated/stock.js:2120
msgid "Status code must be selected"
msgstr ""
-#: templates/js/translated/stock.js:2365
+#: templates/js/translated/stock.js:2375
msgid "Details"
msgstr "详情"
-#: templates/js/translated/stock.js:2381
+#: templates/js/translated/stock.js:2391
msgid "Part information unavailable"
msgstr ""
-#: templates/js/translated/stock.js:2403
+#: templates/js/translated/stock.js:2413
msgid "Location no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2422
+#: templates/js/translated/stock.js:2432
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2441
+#: templates/js/translated/stock.js:2451
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2459
+#: templates/js/translated/stock.js:2469
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2482
+#: templates/js/translated/stock.js:2492
msgid "Added"
msgstr ""
-#: templates/js/translated/stock.js:2490
+#: templates/js/translated/stock.js:2500
msgid "Removed"
msgstr ""
-#: templates/js/translated/stock.js:2566
+#: templates/js/translated/stock.js:2576
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:2617 templates/js/translated/stock.js:2653
+#: templates/js/translated/stock.js:2627 templates/js/translated/stock.js:2663
msgid "Uninstall Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:2666
+#: templates/js/translated/stock.js:2676
msgid "Select stock item to uninstall"
msgstr ""
-#: templates/js/translated/stock.js:2687
+#: templates/js/translated/stock.js:2697
msgid "Install another stock item into this item"
msgstr ""
-#: templates/js/translated/stock.js:2688
+#: templates/js/translated/stock.js:2698
msgid "Stock items can only be installed if they meet the following criteria"
msgstr ""
-#: templates/js/translated/stock.js:2690
+#: templates/js/translated/stock.js:2700
msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:2691
+#: templates/js/translated/stock.js:2701
msgid "The Stock Item is currently available in stock"
msgstr ""
-#: templates/js/translated/stock.js:2692
+#: templates/js/translated/stock.js:2702
msgid "The Stock Item is not already installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:2693
+#: templates/js/translated/stock.js:2703
msgid "The Stock Item is tracked by either a batch code or serial number"
msgstr ""
-#: templates/js/translated/stock.js:2706
+#: templates/js/translated/stock.js:2716
msgid "Select part to install"
msgstr ""